summaryrefslogtreecommitdiffstats
path: root/commitpkg
diff options
context:
space:
mode:
authorLukas Fleischer <archlinux@cryptocrack.de>2011-08-29 10:53:50 +0200
committerLukas Fleischer <archlinux@cryptocrack.de>2011-10-07 21:53:02 +0200
commit46c4def0733a78ce08702d188e3e1a141fb07316 (patch)
tree69fb80eff39981680faeeba01f88be48026fc05f /commitpkg
parent142b032212fd94c0fde75a3dd223444c212c2eaa (diff)
downloaddevtools-46c4def0733a78ce08702d188e3e1a141fb07316.tar.gz
devtools-46c4def0733a78ce08702d188e3e1a141fb07316.tar.xz
Support non-standard install locations
This build system overhaul allows for adding (define-style) macros to our scripts. All source files are now suffixed with ".in" to clarify that they might contain unprocessed defines. The Makefile provides a new rule to preprocess source files and generate proper output scripts. Also, add a "@pkgdatadir@" define (as used in GNU Autotools) and use it instead of hardcoded paths to "/usr/share/devtools" everywhere. We missed this when adding PREFIX support to the build system in commit 35fc83ce7d8dc26cd424321f2e8638d05da0a6d4. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Diffstat (limited to 'commitpkg')
-rwxr-xr-xcommitpkg207
1 files changed, 0 insertions, 207 deletions
diff --git a/commitpkg b/commitpkg
deleted file mode 100755
index 2a732b5..0000000
--- a/commitpkg
+++ /dev/null
@@ -1,207 +0,0 @@
-#!/bin/bash
-
-abort() {
- echo ${1:-'Cancelled'}
- exit 1
-}
-
-getpkgfile() {
- if [[ ${#} -ne 1 ]]; then
- echo 'ERROR: No canonical package found!' >&2
- exit 1
- elif [ ! -f "${1}" ]; then
- echo "ERROR: Package ${1} not found!" >&2
- exit 1
- fi
-
- echo ${1}
-}
-
-##
-# usage : get_full_version( $epoch, $pkgver, $pkgrel )
-# return : full version spec, including epoch (if necessary), pkgver, pkgrel
-##
-get_full_version() {
- if [[ $1 -eq 0 ]]; then
- # zero epoch case, don't include it in version
- echo $2-$3
- else
- echo $1:$2-$3
- fi
-}
-
-# Source makepkg.conf; fail if it is not found
-if [ -r '/etc/makepkg.conf' ]; then
- source '/etc/makepkg.conf'
-else
- abort '/etc/makepkg.conf not found!'
-fi
-
-# Source user-specific makepkg.conf overrides
-if [ -r ~/.makepkg.conf ]; then
- . ~/.makepkg.conf
-fi
-
-cmd=${0##*/}
-
-if [ ! -f PKGBUILD ]; then
- abort 'No PKGBUILD file'
-fi
-
-. PKGBUILD
-pkgbase=${pkgbase:-$pkgname}
-
-case "$cmd" in
- commitpkg)
- if [ $# -eq 0 ]; then
- abort 'usage: commitpkg <reponame> [-l limit] [-a arch] [commit message]'
- fi
- repo="$1"
- shift
- ;;
- *pkg)
- repo="${cmd%pkg}"
- ;;
- *)
- abort 'usage: commitpkg <reponame> [-l limit] [-a arch] [commit message]'
- ;;
-esac
-
-case "$repo" in
- core|extra|testing|staging)
- server='gerolde.archlinux.org' ;;
- community*|multilib*)
- server='aur.archlinux.org' ;;
- *)
- server='gerolde.archlinux.org'
- echo "Non-standard repository $repo in use, defaulting to server $server" ;;
-esac
-
-# check if all local source files are under version control
-for s in "${source[@]}"; do
- if [[ $s != *://* ]] && ! svn status -v "$s" | grep -q '^[ AMRX~]'; then
- abort "$s is not under version control"
- fi
-done
-
-# check if changelog and install files are under version control
-for i in 'changelog' 'install'; do
- filelist=$(sed -n "s/^[[:space:]]*$i=//p" PKGBUILD)
- for file in $filelist; do
- # evaluate any bash variables used
- eval file=${file}
- if ! svn status -v "${file}" | grep -q '^[ AMRX~]'; then
- abort "${file} is not under version control"
- fi
- done
-done
-
-# see if any limit options were passed, we'll send them to rsync
-rsyncopts=(-e ssh -p --chmod=ug=rw,o=r -c -h -L --progress --partial -y)
-while getopts ':l:a:' flag; do
- case $flag in
- l) rsyncopts+=("--bwlimit=$2") ;;
- a) commit_arch=$2 ;;
- :) echo "option requires an argument -- '$OPTARG'" >&2
- exit 1 ;;
- \?) echo "invalid option -- '$OPTARG'" >&2
- exit 1 ;;
- esac
-done
-shift $(( OPTIND - 1 ))
-
-if [ -n "$(svn status -q)" ]; then
- echo -n 'committing changes to trunk...'
- msgtemplate="upgpkg: $pkgbase $(get_full_version ${epoch:-0} $pkgver $pkgrel)"$'\n\n'
- if [ -n "$1" ]; then
- svn commit -q -m "${msgtemplate}${1}" || abort
- else
- msgfile="$(mktemp)"
- echo "$msgtemplate" > "$msgfile"
- if [ -n "$SVN_EDITOR" ]; then
- $SVN_EDITOR "$msgfile"
- elif [ -n "$VISUAL" ]; then
- $VISUAL "$msgfile"
- elif [ -n "$EDITOR" ]; then
- $EDITOR "$msgfile"
- else
- vi "$msgfile"
- fi
- [ -s "$msgfile" ] || abort
- svn commit -q -F "$msgfile" || abort
- unlink "$msgfile"
- fi
- echo 'done'
-fi
-
-declare -a uploads
-
-for _arch in ${arch[@]}; do
- if [ -n "$commit_arch" ] && [ "${_arch}" != "$commit_arch" ]; then
- echo "skipping ${_arch}"
- continue
- fi
-
- for _pkgname in ${pkgname[@]}; do
- fullver=$(get_full_version ${epoch:-0} $pkgver $pkgrel)
- pkgfile=$(getpkgfile "$_pkgname-$fullver-${_arch}".pkg.tar.?z 2>/dev/null)
- pkgdestfile=$(getpkgfile "$PKGDEST/$_pkgname-$fullver-${_arch}".pkg.tar.?z 2>/dev/null)
-
- if [ -f "$pkgfile" ]; then
- pkgfile="./$pkgfile"
- elif [ -f "$pkgdestfile" ]; then
- pkgfile="$pkgdestfile"
- else
- echo "skipping ${_arch}"
- continue 2
- fi
- uploads+=("$pkgfile")
-
- if [[ $SIGNPKG == 'y' ]]; then
- echo "Signing package ${pkgfile}..."
- if [[ -n $GPGKEY ]]; then
- SIGNWITHKEY="-u ${GPGKEY}"
- fi
- gpg --detach-sign --use-agent ${SIGNWITHKEY} "${pkgfile}" || abort
- fi
-
- sigfile="${pkgfile}.sig"
- if [ -f "${sigfile}" ]; then
- uploads+=("$sigfile")
- elif [[ $SIGNPKG == 'y' ]]; then
- abort "Signature ${pkgfile}.sig was not found"
- fi
- done
-done
-
-if [[ -n $commit_arch ]]; then
- archrelease "$repo-$commit_arch" || abort
-else
- archrelease "${arch[@]/#/$repo-}" || abort
-fi
-
-if [[ ${#uploads[*]} -gt 0 ]]; then
- echo 'uploading all package and signature files'
- rsync "${rsyncopts[@]}" "${uploads[@]}" "$server:staging/$repo/" || abort
-fi
-
-if [ "${arch[*]}" == 'any' ]; then
- if [ -d ../repos/$repo-i686 -a -d ../repos/$repo-x86_64 ]; then
- pushd ../repos/ >/dev/null
- echo "removing $repo-i686 and $repo-x86_64..."
- svn rm $repo-i686
- svn rm $repo-x86_64
- svn commit -q -m "removed $repo-i686 and $repo-x86_64 for $pkgname"
- echo 'done'
- popd >/dev/null
- fi
-else
- if [ -d ../repos/$repo-any ]; then
- pushd ../repos/ >/dev/null
- echo "removing $repo-any..."
- svn rm $repo-any
- svn commit -q -m "removed $repo-any for $pkgname"
- echo 'done'
- popd >/dev/null
- fi
-fi