Compare commits

..

25 Commits

Author SHA1 Message Date
Pierre Schmitz
ab5eb2e4de prepare release 2011-05-18 18:28:33 +02:00
Florian Pritz
a1a6a8eaca commitpkg: add -a option to upload only one arch
-a i686 uploads only i686 packages and ignore everything else

Signed-off-by: Florian Pritz <bluewind@server-speed.net>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-05-18 18:28:05 +02:00
Jakob Gruber
6d4367de35 Change pacman calls with -Sd flags to -Sdd
The old pacman -d flag is now -dd since commit 111e07d0be44b7.

Signed-off-by: Jakob Gruber <jakob.gruber@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-05-16 18:19:19 +02:00
Pierre Schmitz
5df1f9bd6d Revert "Use en_US.UTF-8 locale instead of C to support unicode filenames"
This reverts commit 9b33a29ea5.

This was a bad idea as bsdtar cannot read pacakges create with this locale.
2011-05-03 20:34:39 +02:00
Pierre Schmitz
9b33a29ea5 Use en_US.UTF-8 locale instead of C to support unicode filenames 2011-05-03 20:07:24 +02:00
Pierre Schmitz
3985129c3d prepare release 2011-04-29 21:32:57 +02:00
Allan McRae
e197f6d34c checkpkg: remove checking for old style package names
All the packages in the Arch repo have been rebuilt to include the
architecture in their package names so this workaround is no longer
needed.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-29 21:20:11 +02:00
Eric Bélanger
c45e5bbf22 checkpkg: Added epoch support
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-29 21:20:04 +02:00
Eric Bélanger
e380f396cf Added bash_completion file
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-29 21:18:21 +02:00
Allan McRae
d187cdbc38 Use GPGKEY to select signing key
Use the default key from the gpg keyring to sign packages unless
GPGKEY is specified (either in makepkg.conf or as an environmental
variable).

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-17 22:18:56 +02:00
Allan McRae
fee49075f0 Copy check() log from chroot
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-17 22:16:45 +02:00
Eric Bélanger
39ae6e23d6 commitpkg: clean up svn after changing arch from any to i686/x86_64
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-17 11:56:09 +02:00
Pierre Schmitz
61cc1f3504 prepare release 2011-04-11 18:27:44 +02:00
Pierre Schmitz
7037948b65 Add simple function to sign packages
Set SIGNPKG to y in makepkg.conf to enable signing.
2011-04-11 18:26:11 +02:00
Pierre Schmitz
0e6780f2c8 prepare release 2011-04-09 23:04:59 +02:00
Pierre Schmitz
45c8269441 archrelease: be more verbose 2011-04-09 13:41:14 +02:00
Pierre Schmitz
7e3013b2ae Fix rsync call; quotes wont work here 2011-04-08 12:24:25 +02:00
Dan McGee
c16e7c25c9 commitpkg: upload signatures if available
Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Dan McGee
c955ecf35d commitpkg: upload all files at the same time
Batch them up using a bash array and then pass them all to a single
invocation of rsync.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Dan McGee
160e936bba commitpkg: add '-y' to rsyncopts
This allows uploads to possibly be smaller if a similar file exists
nearby without the same name. Unlikely in most cases, but we might as
well take advantage if they do exist:

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Dan McGee
69f9e64aa3 commitpkg: move all rsync opts to rsyncopts var
Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Dan McGee
71efb148df commitpkg: make repo/server selection more modular
This gets rid of the ever-expanding conditional we had before and
replaces it with two case statements.

The first handles the command name. If it ends with 'pkg', we treat the
entire first part of the reponame, unless of course 'commitpkg' was
called directly. This allows one to add new symlinks such as
'gnome-unstablepkg'.

The second handles the server. Well-known repositories are listed and
passed to the appropriate server. All unusual repos are assumed to live
on gerolde and sent that direction.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Dan McGee
48ccc1c7fb Unify comment style
Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Pierre Schmitz
563ffa7be8 prepare release 2011-03-28 14:59:00 +02:00
Rémy Oudompheng
f01097f22c Don't prefix package name with './' if package is in $PKGDEST
Commit ad593b8b61 introduces
a problem when $PKGDEST is set and the package to transfer
has an absolute pathname. In this case there is no need
to add anything to have rsync work properly.

Signed-off-by: Rémy Oudompheng <remy@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-03-28 14:57:22 +02:00
7 changed files with 160 additions and 53 deletions

View File

@@ -1,4 +1,4 @@
V=0.9.18
V=0.9.23
BINPROGS = \
checkpkg \
@@ -57,6 +57,7 @@ install:
install -m0644 ${CONFIGFILES} $(DESTDIR)/usr/share/devtools
for l in ${COMMITPKG_LINKS}; do ln -sf commitpkg $(DESTDIR)/usr/bin/$$l; done
for l in ${ARCHBUILD_LINKS}; do ln -sf archbuild $(DESTDIR)/usr/bin/$$l; done
install -Dm0644 bash_completion $(DESTDIR)/etc/bash_completion.d/devtools
uninstall:
for f in ${BINPROGS}; do rm -f $(DESTDIR)/usr/bin/$$f; done
@@ -64,8 +65,12 @@ uninstall:
for f in ${CONFIGFILES}; do rm -f $(DESTDIR)/usr/share/devtools/$$f; done
for l in ${COMMITPKG_LINKS}; do rm -f $(DESTDIR)/usr/bin/$$l; done
for l in ${ARCHBUILD_LINKS}; do rm -f $(DESTDIR)/usr/bin/$$l; done
rm $(DESTDIR)/etc/bash_completion.d/devtools
dist:
git archive --format=tar --prefix=devtools-$(V)/ $(V) | gzip -9 > devtools-$(V).tar.gz
.PHONY: all install uninstall dist
upload:
scp devtools-$(V).tar.gz gerolde.archlinux.org:/srv/ftp/other/devtools/
.PHONY: all install uninstall dist upload

View File

@@ -23,7 +23,7 @@ if [ ! -z "$(svn status -q)" ]; then
abort 'archrelease: You have not committed your changes yet!'
fi
echo -n 'releasing package...'
echo -n "releasing package to ${1}..."
pushd .. >/dev/null
if [ -d "repos/${1}" ]; then
svn rm --force -q "repos/${1}"

69
bash_completion Normal file
View File

@@ -0,0 +1,69 @@
_devtools_compgen() {
local i r
COMPREPLY=($(compgen -W '$*' -- "$cur"))
for ((i=1; i < ${#COMP_WORDS[@]}-1; i++)); do
for r in ${!COMPREPLY[@]}; do
if [[ ${COMP_WORDS[i]} = ${COMPREPLY[r]} ]]; then
unset 'COMPREPLY[r]'; break
fi
done
done
}
_archco_pkg() {
_devtools_compgen "$(
\pacman -$1
)"
}
_archco() {
local cur prev
COMPREPLY=()
cur=$(_get_cword)
prev=${COMP_WORDS[COMP_CWORD-1]}
_archco_pkg Slq
true
} &&
complete -F _archco archco communityco
_makechrootpkg() {
local cur
COMPREPLY=()
_get_comp_words_by_ref cur
case $cur in
-*)
COMPREPLY=( $( compgen -W '-I -c -d -h -l -r -u' -- "$cur" ) )
;;
*)
_filedir
return 0
;;
esac
true
} &&
complete -F _makechrootpkg makechrootpkg
_mkarchroot() {
local cur
COMPREPLY=()
_get_comp_words_by_ref cur
case $cur in
-*)
COMPREPLY=( $( compgen -W '-C -M -c -f -h -n -r -u' -- "$cur" ) )
;;
*)
_filedir
return 0
;;
esac
true
} &&
complete -F _mkarchroot mkarchroot
# ex:et ts=2 sw=2 ft=sh

View File

@@ -32,23 +32,22 @@ TEMPDIR=$(mktemp -d /tmp/checkpkg-script.XXXX)
cd $TEMPDIR
for _pkgname in ${pkgname[@]}; do
if [ -z ${epoch} ] ; then
pkgfile=${_pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}
oldstylepkgfile=${_pkgname}-${pkgver}-${pkgrel}${PKGEXT}
else
pkgfile=${_pkgname}-${epoch}:${pkgver}-${pkgrel}-${CARCH}${PKGEXT}
fi
if [ -f "$STARTDIR/$pkgfile" ]; then
cp "$STARTDIR/$pkgfile" .
elif [ -f "$PKGDEST/$pkgfile" ]; then
cp "$PKGDEST/$pkgfile" .
elif [ -f "$STARTDIR/$oldstylepkgfile" ]; then
cp "$STARTDIR/$oldstylepkgfile" .
elif [ -f "$PKGDEST/$oldstylepkgfile" ]; then
cp "$PKGDEST/$oldstylepkgfile" .
else
echo "File \"$pkgfile\" doesn't exist"
exit 1
fi
tmp=`pacman -Spd --noconfirm $_pkgname`
tmp=`pacman -Spdd --noconfirm $_pkgname`
if [ $? -ne 0 ]; then
echo "Couldn't download previous package for $_pkgname."

102
commitpkg
View File

@@ -51,38 +51,31 @@ fi
. PKGBUILD
pkgbase=${pkgbase:-$pkgname}
# set up repo-specific opts depending on how we were called
server='gerolde.archlinux.org'
if [ "$cmd" == 'extrapkg' ]; then
repo='extra'
elif [ "$cmd" == 'corepkg' ]; then
repo='core'
elif [ "$cmd" == 'testingpkg' ]; then
repo='testing'
elif [ "$cmd" == 'stagingpkg' ]; then
repo='staging'
elif [ "$cmd" == 'communitypkg' ]; then
repo='community'
server='aur.archlinux.org'
elif [ "$cmd" == 'community-testingpkg' ]; then
repo='community-testing'
server='aur.archlinux.org'
elif [ "$cmd" == 'community-stagingpkg' ]; then
repo='community-staging'
server='aur.archlinux.org'
elif [ "$cmd" == 'multilibpkg' ]; then
repo='multilib'
server='aur.archlinux.org'
elif [ "$cmd" == 'multilib-testingpkg' ]; then
repo='multilib-testing'
server='aur.archlinux.org'
else
case "$cmd" in
commitpkg)
if [ $# -eq 0 ]; then
abort 'usage: commitpkg <reponame> [-l limit] [commit message]'
abort 'usage: commitpkg <reponame> [-l limit] [-a arch] [commit message]'
fi
repo="$1"
shift
fi
;;
*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
@@ -104,9 +97,14 @@ for i in 'changelog' 'install'; do
done
# see if any limit options were passed, we'll send them to rsync
unset rsyncopts
rsyncopts='-e ssh -p --chmod=ug=rw,o=r -c -h -L --progress --partial -y'
if [ "$1" = '-l' ]; then
rsyncopts="--bwlimit=$2"
rsyncopts="$rsyncopts --bwlimit=$2"
shift 2
fi
if [ "$1" = "-a" ]; then
commit_arch=$2
shift 2
fi
@@ -119,25 +117,52 @@ else
fi
echo 'done'
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" -a -f "$pkgdestfile" ]; then
if [ -f "$pkgfile" ]; then
pkgfile="./$pkgfile"
elif [ -f "$pkgdestfile" ]; then
pkgfile="$pkgdestfile"
elif [ ! -f "$pkgfile" ]; then
else
echo "skipping ${_arch}"
continue 2
fi
uploads+=("$pkgfile")
echo -n 'uploading '
rsync -p --chmod 'ug=rw,o=r' -c -h -L --progress $rsyncopts --partial "./${pkgfile}" -e ssh "$server:staging/$repo/${pkgfile##*/}" || abort
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
archrelease $repo-${_arch} || abort
done
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
@@ -148,4 +173,13 @@ if [ "${arch[*]}" == 'any' ]; then
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

View File

@@ -156,7 +156,7 @@ if [ -n "$install_pkg" ]; then
mkarchroot -r "pacman -U /$pkgname" "$copydir"
ret=$?
rm "$copydir/$pkgname"
#exit early, we've done all we need to
# Exit early, we've done all we need to
exit $ret
fi
@@ -167,11 +167,11 @@ fi
[ -d "$copydir/build" ] || mkdir "$copydir/build"
if [ "$REPACK" != "1" ]; then
#Remove anything in there UNLESS -R (repack) was passed to makepkg
# Remove anything in there UNLESS -R (repack) was passed to makepkg
rm -rf "$copydir/build/"*
fi
# read .makpekg.conf even if called via sudo
# Read .makepkg.conf even if called via sudo
if [ -n "${SUDO_USER}" ]; then
makepkg_conf="/$(eval echo ~${SUDO_USER})/.makepkg.conf"
else
@@ -277,7 +277,7 @@ if mkarchroot -r "/chrootbuild" "$copydir"; then
fi
done
for l in "${copydir}"/build/{namcap,*-{build,package,package_*}}.log; do
for l in "${copydir}"/build/{namcap,*-{build,check,package,package_*}}.log; do
[ -f "$l" ] && mv "$l" "${WORKDIR}"
done
else

View File

@@ -73,7 +73,7 @@ if [ -z "$cache_dir" ]; then
fi
if [ -f /etc/pacman.d/mirrorlist ]; then
host_mirror=$(pacman -Sdp extra/devtools 2>/dev/null | sed -E 's#(.*/)extra/os/.*#\1$repo/os/$arch#')
host_mirror=$(pacman -Sddp extra/devtools 2>/dev/null | sed -E 's#(.*/)extra/os/.*#\1$repo/os/$arch#')
fi
if [ -z "${host_mirror}" ]; then
host_mirror='http://mirrors.kernel.org/archlinux/$repo/os/$arch'