diff options
Diffstat (limited to 'core/conf/ports')
-rw-r--r-- | core/conf/ports/c9-ports.git | 7 | ||||
-rw-r--r-- | core/conf/ports/compat-32.pub | 2 | ||||
-rw-r--r-- | core/conf/ports/contrib.git | 7 | ||||
-rw-r--r-- | core/conf/ports/contrib.pub | 2 | ||||
-rw-r--r-- | core/conf/ports/core.git | 7 | ||||
-rw-r--r-- | core/conf/ports/core.pub | 2 | ||||
-rwxr-xr-x | core/conf/ports/drivers/git | 47 | ||||
-rwxr-xr-x | core/conf/ports/drivers/httpup | 27 | ||||
-rwxr-xr-x | core/conf/ports/drivers/rsync | 143 | ||||
-rw-r--r-- | core/conf/ports/opt.git | 6 | ||||
-rw-r--r-- | core/conf/ports/opt.pub | 2 | ||||
-rw-r--r-- | core/conf/ports/xorg.git | 6 | ||||
-rw-r--r-- | core/conf/ports/xorg.pub | 2 |
13 files changed, 260 insertions, 0 deletions
diff --git a/core/conf/ports/c9-ports.git b/core/conf/ports/c9-ports.git new file mode 100644 index 0000000..392f77f --- /dev/null +++ b/core/conf/ports/c9-ports.git @@ -0,0 +1,7 @@ +# Collection core +# +NAME=c9-ports +URL=git://c9.root.sx/c9-ports.git +BRANCH=develop +destination=/usr/ports/c9-ports +PORTS_DIR="/usr/ports" diff --git a/core/conf/ports/compat-32.pub b/core/conf/ports/compat-32.pub new file mode 100644 index 0000000..4ef53cc --- /dev/null +++ b/core/conf/ports/compat-32.pub @@ -0,0 +1,2 @@ +untrusted comment: compat-32 public key +RWSwxGo/zH7eXV9L7s9BhT4ZBQ6YLE+iWPkJ190GTTiP6IBBTC0XJOrM diff --git a/core/conf/ports/contrib.git b/core/conf/ports/contrib.git new file mode 100644 index 0000000..d9c0a7d --- /dev/null +++ b/core/conf/ports/contrib.git @@ -0,0 +1,7 @@ +# Collection core +# +NAME=contrib +URL=git://c9.root.sx/c9-contrib.git +BRANCH=develop +destination=/usr/ports/contrib +PORTS_DIR="/usr/ports" diff --git a/core/conf/ports/contrib.pub b/core/conf/ports/contrib.pub new file mode 100644 index 0000000..81d31e5 --- /dev/null +++ b/core/conf/ports/contrib.pub @@ -0,0 +1,2 @@ +untrusted comment: contrib public key +RWSagIOpLGJF3/J2edPyOdE4VWoyvvVvt3gdvOArUkvBrgSHjsBEdmrS diff --git a/core/conf/ports/core.git b/core/conf/ports/core.git new file mode 100644 index 0000000..3e23528 --- /dev/null +++ b/core/conf/ports/core.git @@ -0,0 +1,7 @@ +# Collection core +# +NAME=core +URL=git://c9.root.sx/c9-core.git +BRANCH=develop +destination=/usr/ports/core +PORTS_DIR="/usr/ports" diff --git a/core/conf/ports/core.pub b/core/conf/ports/core.pub new file mode 100644 index 0000000..a09d3ac --- /dev/null +++ b/core/conf/ports/core.pub @@ -0,0 +1,2 @@ +untrusted comment: core public key +RWRJc1FUaeVeqsGlEPc66dguintWWomCSORUNseged62IATuMVCK0zu6 diff --git a/core/conf/ports/drivers/git b/core/conf/ports/drivers/git new file mode 100755 index 0000000..654a8c7 --- /dev/null +++ b/core/conf/ports/drivers/git @@ -0,0 +1,47 @@ +#!/bin/sh +# +# /etc/ports/drivers/git: git driver script for ports(8) +# + +if [ $# -ne 1 ]; then + echo "usage: $0 <file>" >&2 + exit 1 +fi + +. $1 + +if [ -z "$URL" ]; then + echo "URL not set in '$1'" >&2 + exit 2 +fi +if [ -z "$NAME" ]; then + echo "NAME not set in '$1'" >&2 + exit 2 +fi +if [ -z "$BRANCH" ]; then + echo "BRANCH not set in '$1'" >&2 + exit 2 +fi + +REPOSITORY="$PORTS_DIR/$NAME" +if [ -n "$LOCAL_REPOSITORY" ]; then + REPOSITORY="$LOCAL_REPOSITORY" +fi + +echo "Fetching updates from $URL" +echo "Updating collection $NAME" + +cd "$REPOSITORY" 2> "/dev/null" + +if [ $? -lt 1 ]; then + git checkout -q "$BRANCH" + git fetch -q + git diff --pretty=format: --name-status "$BRANCH" origin/"$BRANCH" | sed "s/M\t/ Edit /g; s/A\t/ Checkout /g; s/D\t/ Delete /g" | sort + git clean -q -f + git reset -q --hard origin/"$BRANCH" +else + git clone -q -b "$BRANCH" "$URL" "$REPOSITORY" + ls -1 $REPOSITORY | sed "s/^/ Checkout /" +fi + +echo "Finished successfully" diff --git a/core/conf/ports/drivers/httpup b/core/conf/ports/drivers/httpup new file mode 100755 index 0000000..5c8db84 --- /dev/null +++ b/core/conf/ports/drivers/httpup @@ -0,0 +1,27 @@ +#!/bin/sh +# +# /etc/ports/drivers/httpup: httpup driver script for ports(8) +# + +if [ $# -ne 1 ]; then + echo "usage: $0 <file>" >&2 + exit 1 +fi + +. $1 + +if [ -z "$ROOT_DIR" ]; then + echo "ROOT_DIR not set in '$1'" >&2 + exit 2 +fi +if [ -z "$URL" ]; then + echo "URL not set in '$1'" >&2 + exit 2 +fi + +for REPO in $URL; do + PORT=`echo $REPO | sed -n '/#.*$/s|^.*#||p'` + httpup sync $REPO $ROOT_DIR/$PORT +done + +# End of file. diff --git a/core/conf/ports/drivers/rsync b/core/conf/ports/drivers/rsync new file mode 100755 index 0000000..14dd3e5 --- /dev/null +++ b/core/conf/ports/drivers/rsync @@ -0,0 +1,143 @@ +#!/usr/bin/perl +# +# /etc/ports/drivers/rsync: rsync(1) driver script for ports(8) +# + +use warnings; +use strict; +use File::Basename; + +my $host = ''; +my $collection = ''; +my $destination = ''; +my %new_checkouts; +my %old_checkouts; + +sub error +{ + my $message = shift; + print "Error: $message ($!)\nUpdating failed\n"; + exit 1; +} + +sub warning +{ + my $message = shift; + print "Warning: $message ($!)\n"; +} + +if ($#ARGV < 0) +{ + print "Usage: $0 <file>\n"; + exit 1; +} + +open(FILE, $ARGV[0]) or error("Couldn't open $ARGV[0]"); +while (<FILE>) +{ + chomp; + if (/^host=(.*)/) { $host = $1; } + elsif (/^collection=(.*)/) { $collection = $1; } + elsif (/^destination=(.*)/) { $destination = $1; } +} +close(FILE); + +if ($host eq '') { error("Host field not set in $ARGV[0]"); } +if ($collection eq '') { error("Collection field not set in $ARGV[0]"); } +if ($destination eq '') { error("Destination field not set in $ARGV[0]"); } + +if (-e "$destination/.checkouts") +{ + # read the old .checkouts file into memory + open(FILE, "$destination/.checkouts") or error("Couldn't read checkouts from $destination/.checkouts"); + while (<FILE>) + { + chomp; + $old_checkouts{$_} = 1; + } + close(FILE); +} + +print "Updating file list from " . $host . "::$collection\n"; + +# get the remote file list (new .checkouts) +open(PIPE, 'rsync -crz --no-human-readable ' . $host . '::' . $collection . '|') or error("Couldn't open pipe to rsync"); +while (<PIPE>) +{ + chomp; + + next if /^MOTD:/; # ignore MOTD lines + s/^(.{43})//; # ignore the first 43 characters (mode, date etc...) + next if /^.$/; # ignore the . directory + + $new_checkouts{$_} = 1; +} +close(PIPE); +error("Running rsync failed") unless $? == 0; + +print "Updating collection " . basename($destination) . "\n"; + +# now really run rsync +open(PIPE, 'rsync -crz --no-human-readable --log-format "%o %n" ' . $host . "::$collection $destination|") or error("Couldn't open pipe to rsync"); +while (<PIPE>) +{ + chomp; + + if (/^recv (.*)/) + { + if ($old_checkouts{$1}) + { + s/^recv/ Edit/; + } + else + { + s/^recv/ Checkout/; + } + } + + print $_ . "\n"; +} +close(PIPE); +error("Running rsync failed") unless $? == 0; + +# save new checkouts into .checkouts +open(FILE, ">$destination/.checkouts") or error("Couldn't save checkouts to $destination/.checkouts"); +foreach my $checkout (sort keys %new_checkouts) +{ + print FILE "$checkout\n"; +} +close(FILE); + +# use chroot as an additional safety measure when removing files +chroot($destination) or error("Couldn't chroot into $destination"); +chdir('/'); + +# iterate through old checkouts, remove obsolete files +foreach my $checkout (sort keys %old_checkouts) +{ + if (!$new_checkouts{$checkout}) + { + if (-f $checkout) + { + print " Delete $checkout\n"; + unlink($checkout) or warning("Couldn't delete $checkout"); + } + } +} + +# iterate through old checkouts, remove obsolete directories +foreach my $checkout (sort keys %old_checkouts) +{ + if (!$new_checkouts{$checkout}) + { + if (-d $checkout) + { + print " Delete $checkout\n"; + rmdir($checkout) or warning("Couldn't delete $checkout"); + } + } +} + +print "Finished successfully\n"; + +# End of file diff --git a/core/conf/ports/opt.git b/core/conf/ports/opt.git new file mode 100644 index 0000000..bedc00c --- /dev/null +++ b/core/conf/ports/opt.git @@ -0,0 +1,6 @@ +# Collection core +# +NAME=opt +URL=git://c9.root.sx/c9-opt.git +BRANCH=develop +destination=/usr/ports/opt diff --git a/core/conf/ports/opt.pub b/core/conf/ports/opt.pub new file mode 100644 index 0000000..346b688 --- /dev/null +++ b/core/conf/ports/opt.pub @@ -0,0 +1,2 @@ +untrusted comment: opt public key +RWSE3ohX2g5d/Zmwm/W4S8ZzNNTjXE7bI8XmnpawKOnQ+MiVa7TD0YC9 diff --git a/core/conf/ports/xorg.git b/core/conf/ports/xorg.git new file mode 100644 index 0000000..5123db5 --- /dev/null +++ b/core/conf/ports/xorg.git @@ -0,0 +1,6 @@ +# Collection core +# +NAME=xorg +URL=git://c9.root.sx/c9-xorg.git +BRANCH=develop +destination=/usr/ports/xorg diff --git a/core/conf/ports/xorg.pub b/core/conf/ports/xorg.pub new file mode 100644 index 0000000..983eb51 --- /dev/null +++ b/core/conf/ports/xorg.pub @@ -0,0 +1,2 @@ +untrusted comment: xorg public key +RWTSGWF5Q7TndIlWcgmz/x/4xBWLbyPRmI3LyI8rsN/iahlpFpgNIwSR |