Compare commits

..

19 Commits
0.9.0 ... 0.9.5

Author SHA1 Message Date
Pierre Schmitz
17e875f6b3 makechrootpkg: Keep source files even if build fails
implementes FS#18437
2010-03-03 21:49:22 +01:00
Pierre Schmitz
a7c5010d24 Upload any pkg.tar.* file as long as it is canonical 2010-03-03 21:41:53 +01:00
Pierre Schmitz
f72775feac PKGEXT was not defined in the context 2010-03-03 21:38:59 +01:00
Pierre Schmitz
371f57b043 Don't check if package was released already
The checks aren't reliable enough and fail if the local repo is broken due to
network failures. So for now we just allways commit.
2010-02-22 19:11:17 +01:00
Pierre Schmitz
2fe5dbf904 be more fail safe 2010-02-22 08:13:43 +01:00
Eric Bélanger
5036f1250e mkarchroot: Added default pacman cache in usage help
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-02-21 19:34:11 +01:00
Pierre Schmitz
f00c8f66bd escape line breaks in find command 2010-02-17 23:55:05 +01:00
Pierre Schmitz
df4310025b Use svnversion insead of svn info 2010-02-17 18:27:09 +01:00
Pierre Schmitz
53a864a5aa Use local information to determine if a commit is needed 2010-02-17 18:05:16 +01:00
Pierre Schmitz
849e6c6de5 Check if package was already released 2010-02-17 15:24:54 +01:00
Dan McGee
62e4272ca2 commitpkg: dereference symlinks on package upload
This is a regression introduced after switching to rsync in place of scp;
scp dereferenced symlinks automatically without need for a command-line
option.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-02-17 06:11:48 +01:00
Pierre Schmitz
dd488b3c90 add dist target to Makefile 2010-02-13 20:57:34 +01:00
Pierre Schmitz
de38f347a7 add common gitignore file 2010-02-13 20:41:46 +01:00
Pierre Schmitz
362a99b995 apply common coding style 2010-02-13 19:47:16 +01:00
Allan McRae
7a8130fec8 Further fixes to cache_dir handling
1) Typo cachedir -> cache_dir
2) Use $cache_dir when calling pacman

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-02-13 15:55:23 +01:00
Allan McRae
a6e1f8cfd3 Read cachedir from pacman.conf in working dir
This allows setting a different cachedir for (e.g.) i686 and x86_64
chroots.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-02-13 09:57:49 +01:00
Pierre Schmitz
70d7baee68 set umask to 0022
this fixes commit 7ce9cd6965
2010-02-13 07:22:54 +01:00
Pierre Schmitz
59b7a739e8 inform the user of activities that might take a longer time 2010-02-13 04:03:10 +01:00
Pierre Schmitz
9e14e8691d Fall back to default if CacheDir is not set 2010-02-12 10:14:04 +01:00
13 changed files with 543 additions and 495 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*~
devtools-*.tar.gz

View File

@@ -42,3 +42,6 @@ uninstall:
rm $(DESTDIR)/usr/bin/archrm
rm $(DESTDIR)/usr/bin/communityco
rm $(DESTDIR)/usr/bin/rebuildpkgs
dist:
git archive --format=tar --prefix=devtools-$(V)/ $(V) | gzip -9 > devtools-$(V).tar.gz

7
archco
View File

@@ -1,10 +1,13 @@
#!/bin/bash
if [ "$1" = "" ]; then
echo "Usage: archco <package name> [<package name>]"
if [ "$1" = '' ]; then
echo 'Usage: archco <package name> [<package name>]'
exit 1
fi
for i in "$@"; do
svn co svn+ssh://gerolde.archlinux.org/srv/svn-packages/$i
done
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -1,31 +1,36 @@
#!/bin/bash
if [ "$1" = "" ]; then
echo "Usage: archrelease <repo>"
abort() {
echo ${1:-'archrelease: Cancelled'}
exit 1
}
if [ "$1" = '' ]; then
abort 'Usage: archrelease <repo>'
fi
if [ ! -f PKGBUILD ]; then
echo "archrelease: PKGBUILD not found"
exit 1
abort 'archrelease: PKGBUILD not found'
fi
if [ "$(basename $(readlink -f .))" != "trunk" ]; then
echo "archrelease: Not in a package trunk dir"
exit 1
if [ "$(basename $(readlink -f .))" != 'trunk' ]; then
abort 'archrelease: Not in a package trunk dir'
fi
if [ "$(svn diff)" != "" ]; then
echo "archrelease: You have not committed your changes yet!"
echo " Please run 'upgpkg' or 'svn commit' first"
exit 1
if [ ! -z "$(svn status -q)" ]; then
abort 'archrelease: You have not committed your changes yet!'
fi
echo -n 'releasing package...'
pushd .. >/dev/null
if [ -d repos/$1 ]; then
svn rm --force -q repos/$1
svn commit -q -m "archrelease: remove $1"
if [ -d "repos/${1}" ]; then
svn rm --force -q "repos/${1}"
svn commit -q -m "archrelease: remove ${1}" || abort
fi
svn copy -q -r HEAD trunk repos/$1
svn commit -q -m "archrelease: copy trunk to $1"
svn copy -q -r HEAD trunk "repos/${1}"
svn commit -q -m "archrelease: copy trunk to ${1}" || abort
popd >/dev/null
echo 'done'
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

7
archrm
View File

@@ -1,7 +1,7 @@
#!/bin/bash
if [ "$1" = "" ]; then
echo "Usage: archrm <path to checkout>"
if [ "$1" = '' ]; then
echo 'Usage: archrm <path to checkout>'
exit 1
fi
@@ -11,3 +11,6 @@ fi
#popd
rm -rf $1
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -1,10 +1,10 @@
#!/bin/bash
# Source makepkg.conf; fail if it is not found
if [ -r "/etc/makepkg.conf" ]; then
source "/etc/makepkg.conf"
if [ -r '/etc/makepkg.conf' ]; then
source '/etc/makepkg.conf'
else
echo "/etc/makepkg.conf not found!"
echo '/etc/makepkg.conf not found!'
exit 1
fi
@@ -18,13 +18,13 @@ strip_url() {
}
if [ ! -f PKGBUILD ]; then
echo "This must be run in the directory of a built package."
echo 'This must be run in the directory of a built package.'
exit 1
fi
source PKGBUILD
if [ "$arch" == "any" ]; then
CARCH="any"
. PKGBUILD
if [ "$arch" == 'any' ]; then
CARCH='any'
fi
for _pkgname in ${pkgname[@]}; do
@@ -61,7 +61,7 @@ for _pkgname in ${pkgname[@]}; do
fi
if [ ! -f $oldpkg ]; then
if echo $pkgurl | grep "^file:///" > /dev/null 2>&1; then
if echo $pkgurl | grep '^file:///' > /dev/null 2>&1; then
cp `echo $pkgurl | sed 's#^file://##'` .
elif [ -f $PKGDEST/$oldpkg ]; then
cp $PKGDEST/$oldpkg .
@@ -91,4 +91,5 @@ for _pkgname in ${pkgname[@]}; do
fi
done
# vim:ft=sh:ts=4:sw=4:et:
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -1,49 +1,60 @@
#!/bin/bash
abort() {
echo ${1:-"Cancelled"}
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}
}
# Source makepkg.conf; fail if it is not found
if [ -r "/etc/makepkg.conf" ]; then
source "/etc/makepkg.conf"
if [ -r '/etc/makepkg.conf' ]; then
source '/etc/makepkg.conf'
else
abort "/etc/makepkg.conf not found!"
abort '/etc/makepkg.conf not found!'
fi
# Source user-specific makepkg.conf overrides
if [ -r ~/.makepkg.conf ]; then
source ~/.makepkg.conf
. ~/.makepkg.conf
fi
cmd=$(basename "$0")
if [ ! -f PKGBUILD ]; then
abort "No PKGBUILD file"
abort 'No PKGBUILD file'
fi
source PKGBUILD
. 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" == "communitypkg" ]; then
repo="community"
server="aur.archlinux.org"
elif [ "$cmd" == "community-testingpkg" ]; then
repo="community-testing"
server="aur.archlinux.org"
server='gerolde.archlinux.org'
if [ "$cmd" == 'extrapkg' ]; then
repo='extra'
elif [ "$cmd" == 'corepkg' ]; then
repo='core'
elif [ "$cmd" == 'testingpkg' ]; then
repo='testing'
elif [ "$cmd" == 'communitypkg' ]; then
repo='community'
server='aur.archlinux.org'
elif [ "$cmd" == 'community-testingpkg' ]; then
repo='community-testing'
server='aur.archlinux.org'
else
if [ $# -eq 0 ]; then
abort "usage: commitpkg <reponame> [-l limit] [commit message]"
abort 'usage: commitpkg <reponame> [-l limit] [commit message]'
fi
repo="$1"
shift
@@ -58,42 +69,49 @@ done) || true
# see if any limit options were passed, we'll send them to rsync
unset rsyncopts
if [ "$1" = "-l" ]; then
if [ "$1" = '-l' ]; then
rsyncopts="--bwlimit=$2"
shift 2
fi
echo -n 'committing changes to trunk...'
if [ -n "$1" ]; then
svn commit -q -m "upgpkg: $pkgbase $pkgver-$pkgrel
$1" || abort
else
svn commit -q || abort
fi
echo 'done'
for _arch in ${arch[@]}; do
for _pkgname in ${pkgname[@]}; do
pkgfile=$_pkgname-$pkgver-$pkgrel-${_arch}$PKGEXT
pkgfile=$(getpkgfile "$_pkgname-$pkgver-$pkgrel-${_arch}".pkg.tar.* 2>/dev/null)
pkgdestfile=$(getpkgfile "$PKGDEST/$_pkgname-$pkgver-$pkgrel-${_arch}".pkg.tar.* 2>/dev/null)
if [ ! -f $pkgfile -a -f "$PKGDEST/$pkgfile" ]; then
pkgfile="$PKGDEST/$pkgfile"
elif [ ! -f $pkgfile ]; then
echo "Skipping ${_arch}"
if [ ! -f "$pkgfile" -a -f "$pkgdestfile" ]; then
pkgfile="$pkgdestfile"
elif [ ! -f "$pkgfile" ]; then
echo "skipping ${_arch}"
continue 2
fi
rsync -c -h --progress $rsyncopts "${pkgfile}" -e ssh $server:staging/$repo || abort
echo -n 'uploading '
rsync -c -h -L --progress $rsyncopts "${pkgfile}" -e ssh $server:staging/$repo || abort
done
archrelease $repo-${_arch} || abort
done
if [ "${arch[*]}" == "any" ]; then
if [ "${arch[*]}" == 'any' ]; then
if [ -d ../repos/$repo-i686 -a -d ../repos/$repo-x86_64 ]; then
pushd ../repos/ >/dev/null
echo -n "removing $repo-i686 and $repo-x86_64..."
svn rm $repo-i686
svn rm $repo-x86_64
svn commit -m "removed $repo-i686 and $repo-x86_64 for $pkgname"
svn commit -q -m "removed $repo-i686 and $repo-x86_64 for $pkgname"
echo 'done'
popd >/dev/null
fi
fi
# vim:ft=sh:ts=4:sw=4:et:
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -1,10 +1,13 @@
#!/bin/bash
if [ "$1" = "" ]; then
echo "Usage: communityco <package name> [<package name>]"
if [ "$1" = '' ]; then
echo 'Usage: communityco <package name> [<package name>]'
exit 1
fi
for i in "$@"; do
svn co svn+ssh://aur.archlinux.org/srv/svn-packages/$i
done
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -3,12 +3,12 @@
# finddeps - find packages that depend on a given depname
#
if [ "$1" = "" ]; then
echo "usage: finddeps <depname>"
echo ""
echo "Find packages that depend on a given depname."
echo "Run this script from the top-level directory of your ABS tree."
echo ""
if [ "$1" = '' ]; then
echo 'usage: finddeps <depname>'
echo ''
echo 'Find packages that depend on a given depname.'
echo 'Run this script from the top-level directory of your ABS tree.'
echo ''
exit 0
fi
@@ -38,4 +38,5 @@ for d in $(find . -type d); do
cd $tld
done
# vim:ft=sh:ts=4:sw=4:et:
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

20
lddd
View File

@@ -6,24 +6,27 @@
ifs=$IFS
IFS=':'
libdirs="/lib:/usr/lib:/opt/qt/lib:/opt/kde/lib:/usr/lib/libfakeroot:/opt/NX/lib"
libdirs='/lib:/usr/lib:/opt/qt/lib:/opt/kde/lib:/usr/lib/libfakeroot:/opt/NX/lib'
extras=
TEMPDIR=$(mktemp /tmp/lddd-script.XXXX)
rm $TEMPDIR
mkdir -p $TEMPDIR
echo " Go out and drink some tea, this will take a while :) ..."
echo 'Go out and drink some tea, this will take a while :) ...'
# Check ELF binaries in the PATH and specified dir trees.
for tree in $PATH $libdirs $extras
do
for tree in $PATH $libdirs $extras; do
echo DIR $tree
# Get list of files in tree.
files=$(find $tree -type f ! -name '*.a' ! -name '*.la' ! -name '*.py*' ! -name '*.txt' ! -name '*.h' ! -name '*.ttf' ! -name '*.rb' ! -name '*.ko' ! -name '*.pc' ! -name '*.enc' ! -name '*.cf' ! -name '*.def' ! -name '*.rules' ! -name '*.cmi' ! -name '*.mli' ! -name '*.ml' ! -name '*.cma' ! -name '*.cmx' ! -name '*.cmxa' ! -name '*.pod' ! -name '*.pm' ! -name '*.pl' ! -name '*.al' ! -name '*.tcl' ! -name '*.bs' ! -name '*.o' ! -name '*.png' ! -name '*.gif' ! -name '*.cmo' ! -name '*.cgi' ! -name '*.defs' ! -name '*.conf' ! -name '*_LOCALE' ! -name 'Compose' ! -name '*_OBJS' ! -name '*.msg' ! -name '*.mcopclass' ! -name '*.mcoptype')
files=$(find $tree -type f ! -name '*.a' ! -name '*.la' ! -name '*.py*' ! -name '*.txt' ! -name '*.h' ! -name '*.ttf' ! \
-name '*.rb' ! -name '*.ko' ! -name '*.pc' ! -name '*.enc' ! -name '*.cf' ! -name '*.def' ! -name '*.rules' ! -name \
'*.cmi' ! -name '*.mli' ! -name '*.ml' ! -name '*.cma' ! -name '*.cmx' ! -name '*.cmxa' ! -name '*.pod' ! -name '*.pm' \
! -name '*.pl' ! -name '*.al' ! -name '*.tcl' ! -name '*.bs' ! -name '*.o' ! -name '*.png' ! -name '*.gif' ! -name '*.cmo' \
! -name '*.cgi' ! -name '*.defs' ! -name '*.conf' ! -name '*_LOCALE' ! -name 'Compose' ! -name '*_OBJS' ! -name '*.msg' ! \
-name '*.mcopclass' ! -name '*.mcoptype')
IFS=$ifs
for i in $files
do
for i in $files; do
if [ `file $i | grep -c 'ELF'` -ne 0 ]; then
# Is an ELF binary.
if [ `ldd $i 2>/dev/null | grep -c 'not found'` -ne 0 ]; then
@@ -44,4 +47,5 @@ sort -u $TEMPDIR/pacman.txt >> $TEMPDIR/possible-rebuilds.txt
echo "Files saved to $TEMPDIR"
# vim:ft=sh:ts=4:sw=4:et:
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -8,50 +8,49 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
FORCE="n"
RUN=""
MAKEPKG_ARGS="-sr"
REPACK=""
COPY="copy"
FORCE='n'
RUN=''
MAKEPKG_ARGS='-sr'
REPACK=''
COPY='copy'
WORKDIR=$PWD
update_first="0"
clean_first="0"
install_pkg=""
update_first='0'
clean_first='0'
install_pkg=''
add_to_db=0
chrootdir=""
chrootdir=''
APPNAME=$(basename "${0}")
usage ()
{
usage() {
echo "usage ${APPNAME} [options] -r <chrootdir> [--] [makepkg args]"
echo " Run this script in a PKGBUILD dir to build a package inside a"
echo " clean chroot. All unrecognized arguments passed to this script"
echo " will be passed to makepkg."
echo ""
echo " The chroot dir consists of the following directories:"
echo " <chrootdir>/{root, copy} but only 'root' is required"
echo " by default. The working copy will be created as needed"
echo ""
echo "The chroot 'root' directory must be created via the following"
echo "command:"
echo " mkarchroot <chrootdir>/root base base-devel sudo"
echo ""
echo ' Run this script in a PKGBUILD dir to build a package inside a'
echo ' clean chroot. All unrecognized arguments passed to this script'
echo ' will be passed to makepkg.'
echo ''
echo ' The chroot dir consists of the following directories:'
echo ' <chrootdir>/{root, copy} but only "root" is required'
echo ' by default. The working copy will be created as needed'
echo ''
echo 'The chroot "root" directory must be created via the following'
echo 'command:'
echo ' mkarchroot <chrootdir>/root base base-devel sudo'
echo ''
echo "Default makepkg args: $MAKEPKG_ARGS"
echo ""
echo "Flags:"
echo "-h This help"
echo "-c Clean the chroot before building"
echo "-u Update the working copy of the chroot before building"
echo " This is useful for rebuilds without dirtying the pristine"
echo " chroot"
echo "-d Add the package to a local db at /repo after building"
echo "-r <dir> The chroot dir to use"
echo "-I <pkg> Install a package into the working copy of the chroot"
echo "-l <copy> The directory to use as the working copy of the chroot"
echo " Useful for maintain multiple copies Default: copy"
echo ''
echo 'Flags:'
echo '-h This help'
echo '-c Clean the chroot before building'
echo '-u Update the working copy of the chroot before building'
echo ' This is useful for rebuilds without dirtying the pristine'
echo ' chroot'
echo '-d Add the package to a local db at /repo after building'
echo '-r <dir> The chroot dir to use'
echo '-I <pkg> Install a package into the working copy of the chroot'
echo '-l <copy> The directory to use as the working copy of the chroot'
echo ' Useful for maintain multiple copies Default: copy'
exit 1
}
@@ -77,19 +76,19 @@ MAKEPKG_ARGS="$MAKEPKG_ARGS ${*:$OPTIND}"
# See if -R was passed to makepkg
for arg in ${*:$OPTIND}; do
if [ "$arg" = "-R" ]; then
if [ "$arg" = '-R' ]; then
REPACK=1
break;
fi
done
if [ "$EUID" != "0" ]; then
echo "This script must be run as root."
if [ "$EUID" != '0' ]; then
echo 'This script must be run as root.'
exit 1
fi
if [ ! -f PKGBUILD ]; then
echo "This must be run in a directory containing a PKGBUILD."
echo 'This must be run in a directory containing a PKGBUILD.'
exit 1
fi
source PKGBUILD
@@ -100,16 +99,17 @@ if [ ! -d "$chrootdir" ]; then
fi
if [ ! -d "$chrootdir/root" ]; then
echo "Missing chroot dir root directory."
echo 'Missing chroot dir root directory.'
echo "Try using: mkarchroot $chrootdir/root base base-devel sudo"
usage
fi
umask 000
umask 0022
if [ ! -d "$copydir" -o "$clean_first" -eq "1" ]; then
echo "creating clean working copy"
echo -n 'creating clean working copy...'
mkdir -p "$copydir"
rsync -a --delete -q -W -x "$chrootdir/root/" "$copydir"
echo 'done'
fi
if [ -n "$install_pkg" ]; then
@@ -123,7 +123,7 @@ if [ -n "$install_pkg" ]; then
fi
if [ $update_first -eq 1 ]; then
mkarchroot -r "pacman -Syu --noconfirm" "$copydir"
mkarchroot -r 'pacman -Syu --noconfirm' "$copydir"
fi
[ -d "$copydir/build" ] || mkdir "$copydir/build"
@@ -138,13 +138,13 @@ SRCDEST=$(grep '^SRCDEST=' /etc/makepkg.conf | cut -d= -f2)
PKGDEST=$(grep '^PKGDEST=' /etc/makepkg.conf | cut -d= -f2)
[ -d "$copydir/pkgdest" ] || mkdir "$copydir/pkgdest"
if ! grep "PKGDEST=/pkgdest" "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then
echo "PKGDEST=/pkgdest" >> "$copydir/etc/makepkg.conf"
if ! grep 'PKGDEST=/pkgdest' "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then
echo 'PKGDEST=/pkgdest' >> "$copydir/etc/makepkg.conf"
fi
[ -d "$copydir/srcdest" ] || mkdir "$copydir/srcdest"
if ! grep "SRCDEST=/srcdest" "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then
echo "SRCDEST=/srcdest" >> "$copydir/etc/makepkg.conf"
if ! grep 'SRCDEST=/srcdest' "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then
echo 'SRCDEST=/srcdest' >> "$copydir/etc/makepkg.conf"
fi
# Copy PKGBUILD and sources
@@ -159,7 +159,7 @@ for f in ${source[@]}; do
fi
done
install_files=$(grep "install=" PKGBUILD)
install_files=$(grep 'install=' PKGBUILD)
for pkg in ${pkgname[@]}; do
install_files+=' '
install_files+=$(echo $install_files |sed "s/\$pkgname/$pkg/"|sed "s/\${pkgname}/$pkg/")
@@ -173,7 +173,7 @@ for f in $install_files;do
fi
done
if [ -f "ChangeLog" ]; then
if [ -f 'ChangeLog' ]; then
cp ChangeLog "$copydir/build/"
fi
@@ -183,7 +183,7 @@ chown -R nobody "$copydir/pkgdest"
if ! grep "^nobody" "$copydir/etc/sudoers" >/dev/null 2>&1; then
touch "$copydir/etc/sudoers"
echo "nobody ALL=(ALL) NOPASSWD: ALL" >> "$copydir/etc/sudoers"
echo 'nobody ALL=(ALL) NOPASSWD: ALL' >> "$copydir/etc/sudoers"
chmod 440 "$copydir/etc/sudoers"
fi
@@ -196,14 +196,14 @@ cd /build
export HOME=/build
sudo -u nobody makepkg $MAKEPKG_ARGS || touch BUILD_FAILED
[ -f BUILD_FAILED ] && exit 1
which namcap &>/dev/null && namcap /build/PKGBUILD /pkgdest/*${PKGEXT} > /pkgdest/namcap.log
which namcap &>/dev/null && namcap /build/PKGBUILD /pkgdest/*.pkg.tar.* > /pkgdest/namcap.log
exit 0
EOF
) > "$copydir/chrootbuild"
chmod +x "$copydir/chrootbuild"
if mkarchroot -r "/chrootbuild" "$copydir"; then
for pkgfile in "${copydir}"/pkgdest/*${PKGEXT}; do
for pkgfile in "${copydir}"/pkgdest/*.pkg.tar.*; do
[ -e "$pkgfile" ] || continue
_pkgname=$(basename "$pkgfile")
if [ "$add_to_db" -eq "1" ]; then
@@ -221,6 +221,14 @@ if mkarchroot -r "/chrootbuild" "$copydir"; then
fi
done
for l in "${copydir}"/build/*-{build,package}.log; do
[ -f "$l" ] && mv "$l" "${WORKDIR}"
done
else
#just in case. We returned 1, make sure we fail
touch "${copydir}/build/BUILD_FAILED"
fi
for f in "${copydir}"/srcdest/*; do
[ -e "$f" ] || continue
if [ -d "$SRCDEST" ]; then
@@ -230,14 +238,6 @@ if mkarchroot -r "/chrootbuild" "$copydir"; then
fi
done
for l in "${copydir}"/build/*-{build,package}.log; do
[ -f "$l" ] && mv "$l" "${WORKDIR}"
done
else
#just in case. We returned 1, make sure we fail
touch "${copydir}/build/BUILD_FAILED"
fi
if [ -e "${copydir}/build/BUILD_FAILED" ]; then
echo "Build failed, check $copydir/build"
rm "${copydir}/build/BUILD_FAILED"
@@ -245,5 +245,5 @@ else
rm -rf "${copydir}"/build/*
fi
# vim:ft=sh:ts=4:sw=4:et:
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -8,69 +8,73 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
FORCE="n"
RUN=""
NOCOPY="n"
FORCE='n'
RUN=''
NOCOPY='n'
working_dir=""
cache_dir=$(grep -m 1 '^CacheDir' /etc/pacman.conf | sed 's/CacheDir\s*=\s*//')
working_dir=''
APPNAME=$(basename "${0}")
# usage: usage <exitvalue>
usage ()
{
usage() {
echo "usage ${APPNAME} [options] working-dir [package-list | app]"
echo " options:"
echo " -r <app> Run 'app' within the context of the chroot"
echo " -u Update the chroot via pacman"
echo " -f Force overwrite of files in the working-dir"
echo " -C <file> Location of a pacman config file"
echo " -M <file> Location of a makepkg config file"
echo " -n Do not copy config files into the chroot"
echo " -c <dir> Set pacman cache. Default: ${cache_dir}"
echo " -h This message"
echo ' options:'
echo ' -r <app> Run "app" within the context of the chroot'
echo ' -u Update the chroot via pacman'
echo ' -f Force overwrite of files in the working-dir'
echo ' -C <file> Location of a pacman config file'
echo ' -M <file> Location of a makepkg config file'
echo ' -n Do not copy config files into the chroot'
echo " -c <dir> Set pacman cache. Default: /var/cache/pacman/pkg"
echo ' -h This message'
exit $1
}
while getopts 'r:ufnhC:M:c:' arg; do
case "${arg}" in
r) RUN="$OPTARG" ;;
u) RUN="pacman -Syu" ;;
f) FORCE="y" ;;
u) RUN='pacman -Syu' ;;
f) FORCE='y' ;;
C) pac_conf="$OPTARG" ;;
M) makepkg_conf="$OPTARG" ;;
n) NOCOPY="y" ;;
n) NOCOPY='y' ;;
c) cache_dir="$OPTARG" ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac
done
if [ "$EUID" != "0" ]; then
echo "error: this script must be run as root."
if [ "$EUID" != '0' ]; then
echo 'error: this script must be run as root.'
exit 1
fi
shift $(($OPTIND - 1))
if [ "$RUN" = "" -a $# -lt 2 ]; then
echo "you must specify a directory and one or more packages"
if [ "$RUN" = '' -a $# -lt 2 ]; then
echo 'you must specify a directory and one or more packages'
usage 1
elif [ $# -lt 1 ]; then
echo "you must specify a directory"
echo 'you must specify a directory'
usage 1
fi
working_dir="$(readlink -f ${1})"
shift 1
[ "${working_dir}" = "" ] && echo "error: please specify a working directory" && usage 1
[ "${working_dir}" = '' ] && echo 'error: please specify a working directory' && usage 1
if [ -z "$cache_dir" ]; then
cache_conf=${working_dir}/etc/pacman.conf
[ ! -f $cache_conf ] && cache_conf=${pac_conf:-/etc/pacman.conf}
cache_dir=$((grep -m 1 '^CacheDir' $cache_conf || echo 'CacheDir = /var/cache/pacman/pkg') | sed 's/CacheDir\s*=\s*//')
unset cache_conf
fi
# {{{ functions
chroot_mount ()
{
chroot_mount() {
[ -e "${working_dir}/sys" ] || mkdir "${working_dir}/sys"
mount -t sysfs sysfs "${working_dir}/sys"
@@ -80,36 +84,33 @@ chroot_mount ()
[ -e "${working_dir}/dev" ] || mkdir "${working_dir}/dev"
mount -o bind /dev "${working_dir}/dev"
[ -e "${working_dir}/var/cache/pacman/pkg" ] || mkdir -p "${working_dir}/var/cache/pacman/pkg"
[ -e "${cache_dir}" ] || mkdir -p "${cache_dir}"
mount -o bind "${cache_dir}" "${working_dir}/var/cache/pacman/pkg"
[ -e "${working_dir}/${cache_dir}" ] || mkdir -p "${working_dir}/${cache_dir}"
mount -o bind "${cache_dir}" "${working_dir}/${cache_dir}"
trap 'chroot_umount' 0 1 2 15
}
copy_hostconf ()
{
copy_hostconf () {
cp /etc/mtab "${working_dir}/etc/mtab"
cp /etc/resolv.conf "${working_dir}/etc/resolv.conf"
}
chroot_umount ()
{
chroot_umount () {
umount "${working_dir}/proc"
umount "${working_dir}/sys"
umount "${working_dir}/dev"
umount "${working_dir}/var/cache/pacman/pkg"
umount "${working_dir}/${cache_dir}"
}
# }}}
umask 000
umask 0022
if [ "$RUN" != "" ]; then
# run chroot {{{
#Sanity check
if [ ! -f "${working_dir}/.arch-chroot" ]; then
echo "error: '${working_dir}' does not appear to be a Arch chroot"
echo " please build the image using mkarchroot"
echo ' please build the image using mkarchroot'
exit 1
fi
@@ -131,21 +132,21 @@ else
chroot_mount
pacargs="--noconfirm -v " #--noprogressbar -v
pacargs='--noconfirm -v ' #--noprogressbar -v
pacargs="$pacargs --root=${working_dir}"
# pacman takes these as relative to the given root
pacargs="$pacargs --cachedir=/var/cache/pacman/pkg"
pacargs="$pacargs --cachedir=${cache_dir}"
if [ "$pac_conf" != "" ]; then
pacargs="$pacargs --config=${pac_conf}"
fi
if [ $# -ne 0 ]; then
op="-Sy"
op='-Sy'
if [ "$FORCE" = "y" ]; then
op="${op}f"
fi
if ! pacman ${op} ${pacargs} $@; then
echo "error: failed to install all packages"
echo 'error: failed to install all packages'
exit 1
fi
fi
@@ -173,4 +174,5 @@ else
# }}}
fi
# vim:ft=sh:ts=4:sw=4:et:
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -16,10 +16,10 @@ if [ $# -le 1 ]; then
fi
# Source makepkg.conf; fail if it is not found
if [ -r "/etc/makepkg.conf" ]; then
source "/etc/makepkg.conf"
if [ -r '/etc/makepkg.conf' ]; then
source '/etc/makepkg.conf'
else
echo "/etc/makepkg.conf not found!"
echo '/etc/makepkg.conf not found!'
exit 1
fi
@@ -31,8 +31,8 @@ die () {
bump_pkgrel() {
# Get the current pkgrel from SVN and update the working copy with it
# This prevents us from incrementing out of control :)
pbuild=".svn/text-base/PKGBUILD.svn-base"
oldrel=$(grep "pkgrel=" $pbuild | cut -d= -f2)
pbuild='.svn/text-base/PKGBUILD.svn-base'
oldrel=$(grep 'pkgrel=' $pbuild | cut -d= -f2)
#remove decimals
rel=$(echo $oldrel | cut -d. -f1)
@@ -45,13 +45,13 @@ bump_pkgrel () {
pkg_from_pkgbuild() {
# we want the sourcing to be done in a subshell so we don't pollute our current namespace
export CARCH PKGEXT
(. PKGBUILD; echo "$pkgname-$pkgver-$pkgrel-$CARCH$PKGEXT")
(source PKGBUILD; echo "$pkgname-$pkgver-$pkgrel-$CARCH$PKGEXT")
}
chrootdir="$1"; shift
pkgs="$@"
SVNPATH="svn+ssh://gerolde.archlinux.org/srv/svn-packages"
SVNPATH='svn+ssh://gerolde.archlinux.org/srv/svn-packages'
echo ":: Work will be done in $(pwd)/rebuilds"
@@ -92,10 +92,13 @@ done
cd "$REBUILD_ROOT"
if [ "$FAILED" != "" ]; then
echo "Packages failed:"
echo 'Packages failed:'
for pkg in $FAILED; do
echo -e "\t$pkg"
done
fi
echo "SVN pkgbumps in svn-packages/ - commit when ready"
echo 'SVN pkgbumps in svn-packages/ - commit when ready'
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132