summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rw-r--r--bin/autobuild.c73
-rwxr-xr-xbin/autobuild.sh117
-rwxr-xr-xbin/setup41
3 files changed, 0 insertions, 231 deletions
diff --git a/bin/autobuild.c b/bin/autobuild.c
deleted file mode 100644
index bb0de00..0000000
--- a/bin/autobuild.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Just a "stupid", secure SUID wrapper around autobuild.sh */
-/* Copyright (C) 2014 Luke Shumaker <lukeshu@sbcglobal.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#define _GNU_SOURCE /* for environment functions */
-#include <alloca.h> /* for alloca(3) */
-#include <errno.h> /* for errno */
-#include <error.h> /* for error(3) */
-#include <pwd.h> /* for getpwuid(3) */
-#include <stdlib.h> /* for environment functions */
-#include <string.h> /* for strlen(3), strcpy(3) */
-#include <unistd.h> /* for geteuid(3), execv(3) */
-
-void
-mysetenv(const char *name, const char *value)
-{
- if (value != NULL) {
- if (setenv(name, value, 1) != 0) {
- error(127, errno, "could not set %s", name);
- }
- }
-}
-
-int
-main(int argc, char **argv)
-{
- struct passwd *user = getpwuid(geteuid());
- setreuid(geteuid(), -1);
-
- const char *env_term = getenv("TERM");
- const char *env_lang = getenv("LANG");
- const char *env_lc_all = getenv("LC_ALL");
- const char *env_lc_collate = getenv("LC_COLLATE");
- const char *env_lc_ctype = getenv("LC_CTIME");
- const char *env_lc_messages = getenv("LC_MESSAGES");
- const char *env_lc_monetary = getenv("LC_MONETARY");
- const char *env_lc_numeric = getenv("LC_NUMERIC");
- const char *env_lc_time = getenv("LC_TIME");
- clearenv();
- mysetenv("USER" , user->pw_name );
- mysetenv("LOGNAME" , user->pw_name );
- mysetenv("HOME" , user->pw_dir );
- mysetenv("TERM" , env_term );
- mysetenv("LANG" , env_lang );
- mysetenv("LC_ALL" , env_lc_all );
- mysetenv("LC_COLLATE" , env_lc_collate );
- mysetenv("LC_CTIME" , env_lc_ctype );
- mysetenv("LC_MESSAGES", env_lc_messages);
- mysetenv("LC_MONETARY", env_lc_monetary);
- mysetenv("LC_NUMERIC" , env_lc_numeric );
- mysetenv("LC_TIME" , env_lc_time );
-
- const char *script_suffix = "/bin/autobuild.sh";
- char *script = alloca(strlen(user->pw_dir)+strlen(script_suffix));
- strcpy(script, user->pw_dir);
- strcpy(&(script[strlen(user->pw_dir)]), script_suffix);
-
- execv(script, argv);
- error(127, errno, "%s", script);
-}
diff --git a/bin/autobuild.sh b/bin/autobuild.sh
deleted file mode 100755
index d62e77b..0000000
--- a/bin/autobuild.sh
+++ /dev/null
@@ -1,117 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2014 Luke Shumaker <lukeshu@sbcglobal.net>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-export PATH # because of setuid safety, path may be currently un-exported
-
-
-usage() {
- print "Usage: %q REPO/PKGBASE [FILES...]" "${0##*/}"
- print "When run from a git directory, automatically updates the package based on FILES in the git repo"
-}
-
-main() {
- . "$(librelib messages)"
- setup_traps
-
- # Get the date as the *very* first thing
- # We get the current date instead of getting a date from git because git time is
- # non-monotonic. I mean, the system time is also non-monotonic. But at
- # day-granularity, I don't expect this to ever come up. A git-rebase or weird
- # merge could easily break things if we get the git time.
- newpkgver_date=$(LC_ALL=C date -u +%Y%m%d)
-
- # Configuration parsing ################################################
-
- . "$(librelib conf)"
- load_files libretools
- check_vars libretools WORKDIR ABSLIBRERECV ABSLIBRESEND
-
- # Lock to pevent conflicting runs ######################################
-
- mkdir -p "${WORKDIR}/lockdir"
- lock 9 "$HOME/packages/lockdir/${PWD//\//%2F}" "Waiting for previous run of %q to finish" "$0"
-
- # Option/usage parsing #################################################
-
- if [[ $# -lt 1 ]]; then
- error "%q takes at least 1 argument" "$0"
- usage >&2
- exit 1
- fi
-
- package=$1
- package_re='^[^/]+/[^/]+$'
- if ! [[ $package =~ $package_re ]]; then
- error "The first argument must be in the format REPO/PKGBASE: %s" "$package"
- usage >&2
- exit 1
- fi
- unset package_re
-
- if [[ $PWD != *.git ]]; then
- die "%q should be run as a hook from a git repository" "$0"
- fi
-
- newgitver=$(git log -n1 --format='%H' master -- "${@:2}")
-
- # The real work begins! ################################################
-
- # Get the ABSLibre tree
- gitget -f -p "$ABSLIBRESEND" checkout "$ABSLIBRERECV" "$WORKDIR/abslibre"
- if ! [[ -f "${WORKDIR}/abslibre/${package}/PKGBUILD" ]]; then
- die "package does not exist in abslibre.git: %s" "$package"
- fi
- cd "$WORKDIR/abslibre/${package}"
-
- # Figure out info about the last version
- oldgitver=$(sed -n 's/^_gitver=//p' PKGBUILD)
- oldpkgver=$(sed -n 's/^pkgver=//p' PKGBUILD)
- oldpkgver_date=${oldpkgver%%.*}
- oldpkgver_rel=${oldpkgver#${oldpkgver_date}}; oldpkgver_rel=${oldpkgver_rel#.}; oldpkgver_rel=${oldpkgver_rel:-0}
-
- # Make sure we actually have changes
- if [[ "$newgitver" == "$oldgitver" ]]; then
- msg 'No new changes were committed, nothing to do'
- exit 0
- fi
-
- # Handle doing multiple versions in the same day
- if [[ "$newpkgver_date" == "$oldpkgver_date" ]]; then
- declare -i newpkgver_rel=${oldpkgver_rel}+1
- newpkgver=${newpkgver_date}.${newpkgver_rel}
- else
- newpkgver=${newpkgver_date}
- fi
-
- # Update the PKGBUILD
- sed -i -e "s|^pkgver=.*|pkgver=${newpkgver}|" \
- -e "s|^_gitver=.*|_gitver=${newgitver}|" \
- -e 's|^pkgrel=.*|pkgrel=1|' \
- PKGBUILD
- updpkgsums
- git add PKGBUILD
- git commit -m "Update ${package}"
-
- # Build the new package
- makepkg -c
- librestage
-
- # Publish the updates
- git push
- librerelease
-}
-
-main "$@"
diff --git a/bin/setup b/bin/setup
deleted file mode 100755
index f421cbd..0000000
--- a/bin/setup
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/make -f
-
-CFLAGS += -std=c99 -Wall -Wextra -Werror -Wno-unused-parameter
-
-dirs = \
- $(HOME)/packages/pkgdest \
- $(HOME)/packages/srcdest \
- $(HOME)/packages/srcpkgdest \
- $(HOME)/packages/logdest \
- $(HOME)/packages/builddir
-
-all: \
- $(HOME)/bin/autobuild \
- $(HOME)/.ssh/id_rsa \
- $(HOME)/.ssh/id_rsa.pub \
- $(HOME)/.gnupg/secring.gpg \
- $(HOME)/packages/abslibre \
- $(dirs)
-
-autobuild $(HOME)/bin/autobuild: $(HOME)/bin/autobuild.c
- $(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@ && chmod 6755 $@
-
-$(HOME)/.ssh/id_rsa $(HOME)/.ssh/id_rsa.pub:
- ssh-keygen -N '' -f $@
-
-$(HOME)/.gnupg/secring.gpg: | $(HOME)/.gitconfig
- printf '%s\n' \
- 'Key-Type: default' \
- 'Subkey-Type: default' \
- "Name-Real: $(git config user.name)" \
- "Name-Email: $(git config user.email)" \
- 'Expire-Date: 0' \
- | gpg --gen-key --batch
-
-$(HOME)/packages/abslibre:
- createworkdir
-
-$(dirs): %:
- mkdir -p -- $@
-
-.DELETE_ON_ERROR: