diff options
Diffstat (limited to 'contrib/slackbuild')
-rw-r--r-- | contrib/slackbuild/config.json | 6 | ||||
-rw-r--r-- | contrib/slackbuild/doinst.sh | 43 | ||||
-rw-r--r-- | contrib/slackbuild/mirror.SlackBuild | 70 | ||||
-rw-r--r-- | contrib/slackbuild/rc.mirror | 48 | ||||
-rw-r--r-- | contrib/slackbuild/slack-desc | 20 |
5 files changed, 187 insertions, 0 deletions
diff --git a/contrib/slackbuild/config.json b/contrib/slackbuild/config.json new file mode 100644 index 0000000..f9fe2e9 --- /dev/null +++ b/contrib/slackbuild/config.json @@ -0,0 +1,6 @@ +{ + "min-interval": "1h", + "max-interval": "24h", + "mirrors": [ + ] +} diff --git a/contrib/slackbuild/doinst.sh b/contrib/slackbuild/doinst.sh new file mode 100644 index 0000000..33a0170 --- /dev/null +++ b/contrib/slackbuild/doinst.sh @@ -0,0 +1,43 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +preserve_perms() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + if [ -e $OLD ]; then + cp -a $OLD ${NEW}.incoming + cat $NEW > ${NEW}.incoming + mv ${NEW}.incoming $NEW + fi + config $NEW +} + +if ! getent group taler >/dev/null; then + groupadd mirror \ + --system +fi + +if ! getent passwd mirror >/dev/null; then + useradd mirror \ + --comment 'Mirror' \ + --gid mirror \ + --system \ + --home-dir /var/empty \ + --shell /bin/false \ + || true +fi + +chown mirror:mirror /var/log/mirror + +preserve_perms etc/rc.d/rc.mirror.new +preserve_perms etc/mirror/config.json.new diff --git a/contrib/slackbuild/mirror.SlackBuild b/contrib/slackbuild/mirror.SlackBuild new file mode 100644 index 0000000..eccbc1a --- /dev/null +++ b/contrib/slackbuild/mirror.SlackBuild @@ -0,0 +1,70 @@ +#!/bin/bash + +cd $(dirname $0) ; CWD=$(pwd) + +GIT_COMMIT=$(git rev-parse --short HEAD) +PRGNAM=mirror +VERSION=${VERSION:-$GIT_COMMIT} +BUILD=${BUILD:-1} +TAG=${TAG:-_slackcoder} +PKGTYPE=${PKGTYPE:-txz} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" + exit 0 +fi + +TMP="${TMP:-/tmp/SBo}" +PKG="$TMP/package-$PRGNAM" +OUTPUT="${OUTPUT:-/tmp}" + +set -e + +rm -rf "$PKG" +mkdir -p "$TMP" "$PKG" "$OUTPUT" +cd "$TMP" +rm -rf $PRGNAM-$VERSION +cp -R $CWD/../.. $PRGNAM-$VERSION +cd $PRGNAM-$VERSION + +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +# Point go to the location of the source tree +export GOPATH="$TMP/$PRGNAM-$VERSION.gopath" +export GOBIN="$PKG/usr/sbin" + +go install \ + -ldflags="-linkmode external -extldflags -static" \ + -a -x ./... + +mkdir -p "$PKG/usr/doc/$PRGNAM-$VERSION" +cp -a \ + README.md \ + "$PKG/usr/doc/$PRGNAM-$VERSION" +cat "$CWD/$PRGNAM.SlackBuild" > "$PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild" + +mkdir -p "$PKG/install" +cat "$CWD/slack-desc" > "$PKG/install/slack-desc" +cat "$CWD/doinst.sh" > "$PKG/install/doinst.sh" + +mkdir -p "$PKG/etc/rc.d" +cat "$CWD/rc.mirror" > "$PKG/etc/rc.d/rc.mirror.new" +mkdir -p $PKG/etc/mirror +cat "$CWD/config.json" > "$PKG/etc/mirror/config.json.new" +mkdir -p "$PKG/var/log/mirror" + +cd "$PKG" +/sbin/makepkg -l y -c n "$OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" diff --git a/contrib/slackbuild/rc.mirror b/contrib/slackbuild/rc.mirror new file mode 100644 index 0000000..81acb9b --- /dev/null +++ b/contrib/slackbuild/rc.mirror @@ -0,0 +1,48 @@ +#!/bin/sh +# +# Startup/shutdown script for the mirror service. +# + +create_run_dir() { + if [ ! -d /run/mirror/ ]; then + mkdir -p /run/mirror + chown :mirror /run/mirror + chmod g+wX /run/mirror + fi +} + +start() { + echo "Starting Mirror service" + create_run_dir + + daemon \ + --name=mirror \ + --user=mirror \ + --pidfiles=/run/mirror \ + --output=/var/log/mirror/mirror.log \ + -- mirror -config /etc/mirror/config.json +} + +stop() { + echo "Stopping Mirror service" + /usr/bin/daemon --name=mirror --pidfiles=/run/mirror --stop +} + +status() { + /usr/bin/daemon --name=mirror --pidfiles=/run/mirror --running --verbose +} + +case "$1" in +start) + start + ;; +stop) + stop + ;; +status) + status + ;; +*) + echo "Usage: $0 {start|stop|status}" + exit 1 +esac diff --git a/contrib/slackbuild/slack-desc b/contrib/slackbuild/slack-desc new file mode 100644 index 0000000..5562ff4 --- /dev/null +++ b/contrib/slackbuild/slack-desc @@ -0,0 +1,20 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +mirror: mirror +mirror: +mirror: Mirror project assets and source code. +mirror: +mirror: +mirror: +mirror: +mirror: +mirror: +mirror: +mirror: + |