Compare commits

...

6 Commits
0.9.1 ... 0.9.2

Author SHA1 Message Date
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
13 changed files with 522 additions and 494 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/archrm
rm $(DESTDIR)/usr/bin/communityco rm $(DESTDIR)/usr/bin/communityco
rm $(DESTDIR)/usr/bin/rebuildpkgs 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 #!/bin/bash
if [ "$1" = "" ]; then if [ "$1" = '' ]; then
echo "Usage: archco <package name> [<package name>]" echo 'Usage: archco <package name> [<package name>]'
exit 1 exit 1
fi fi
for i in "$@"; do for i in "$@"; do
svn co svn+ssh://gerolde.archlinux.org/srv/svn-packages/$i svn co svn+ssh://gerolde.archlinux.org/srv/svn-packages/$i
done 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,23 +1,23 @@
#!/bin/bash #!/bin/bash
if [ "$1" = "" ]; then if [ "$1" = '' ]; then
echo "Usage: archrelease <repo>" echo 'Usage: archrelease <repo>'
exit 1 exit 1
fi fi
if [ ! -f PKGBUILD ]; then if [ ! -f PKGBUILD ]; then
echo "archrelease: PKGBUILD not found" echo 'archrelease: PKGBUILD not found'
exit 1 exit 1
fi fi
if [ "$(basename $(readlink -f .))" != "trunk" ]; then if [ "$(basename $(readlink -f .))" != 'trunk' ]; then
echo "archrelease: Not in a package trunk dir" echo 'archrelease: Not in a package trunk dir'
exit 1 exit 1
fi fi
if [ "$(svn diff)" != "" ]; then if [ "$(svn diff)" != '' ]; then
echo "archrelease: You have not committed your changes yet!" echo 'archrelease: You have not committed your changes yet!'
echo " Please run 'upgpkg' or 'svn commit' first" echo ' Please run "svn commit" first'
exit 1 exit 1
fi fi
@@ -31,3 +31,6 @@ svn copy -q -r HEAD trunk repos/$1
svn commit -q -m "archrelease: copy trunk to $1" svn commit -q -m "archrelease: copy trunk to $1"
popd >/dev/null popd >/dev/null
echo 'done' 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 #!/bin/bash
if [ "$1" = "" ]; then if [ "$1" = '' ]; then
echo "Usage: archrm <path to checkout>" echo 'Usage: archrm <path to checkout>'
exit 1 exit 1
fi fi
@@ -11,3 +11,6 @@ fi
#popd #popd
rm -rf $1 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 #!/bin/bash
# Source makepkg.conf; fail if it is not found # Source makepkg.conf; fail if it is not found
if [ -r "/etc/makepkg.conf" ]; then if [ -r '/etc/makepkg.conf' ]; then
source "/etc/makepkg.conf" source '/etc/makepkg.conf'
else else
echo "/etc/makepkg.conf not found!" echo '/etc/makepkg.conf not found!'
exit 1 exit 1
fi fi
@@ -18,13 +18,13 @@ strip_url() {
} }
if [ ! -f PKGBUILD ]; then 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 exit 1
fi fi
source PKGBUILD . PKGBUILD
if [ "$arch" == "any" ]; then if [ "$arch" == 'any' ]; then
CARCH="any" CARCH='any'
fi fi
for _pkgname in ${pkgname[@]}; do for _pkgname in ${pkgname[@]}; do
@@ -61,7 +61,7 @@ for _pkgname in ${pkgname[@]}; do
fi fi
if [ ! -f $oldpkg ]; then 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://##'` . cp `echo $pkgurl | sed 's#^file://##'` .
elif [ -f $PKGDEST/$oldpkg ]; then elif [ -f $PKGDEST/$oldpkg ]; then
cp $PKGDEST/$oldpkg . cp $PKGDEST/$oldpkg .
@@ -91,4 +91,5 @@ for _pkgname in ${pkgname[@]}; do
fi fi
done 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,49 @@
#!/bin/bash #!/bin/bash
abort() { abort() {
echo ${1:-"Cancelled"} echo ${1:-'Cancelled'}
exit 1 exit 1
} }
# Source makepkg.conf; fail if it is not found # Source makepkg.conf; fail if it is not found
if [ -r "/etc/makepkg.conf" ]; then if [ -r '/etc/makepkg.conf' ]; then
source "/etc/makepkg.conf" source '/etc/makepkg.conf'
else else
abort "/etc/makepkg.conf not found!" abort '/etc/makepkg.conf not found!'
fi fi
# Source user-specific makepkg.conf overrides # Source user-specific makepkg.conf overrides
if [ -r ~/.makepkg.conf ]; then if [ -r ~/.makepkg.conf ]; then
source ~/.makepkg.conf . ~/.makepkg.conf
fi fi
cmd=$(basename "$0") cmd=$(basename "$0")
if [ ! -f PKGBUILD ]; then if [ ! -f PKGBUILD ]; then
abort "No PKGBUILD file" abort 'No PKGBUILD file'
fi fi
source PKGBUILD . PKGBUILD
pkgbase=${pkgbase:-$pkgname} pkgbase=${pkgbase:-$pkgname}
# set up repo-specific opts depending on how we were called # set up repo-specific opts depending on how we were called
server="gerolde.archlinux.org" server='gerolde.archlinux.org'
if [ "$cmd" == "extrapkg" ]; then if [ "$cmd" == 'extrapkg' ]; then
repo="extra" repo='extra'
elif [ "$cmd" == "corepkg" ]; then elif [ "$cmd" == 'corepkg' ]; then
repo="core" repo='core'
elif [ "$cmd" == "testingpkg" ]; then elif [ "$cmd" == 'testingpkg' ]; then
repo="testing" repo='testing'
elif [ "$cmd" == "communitypkg" ]; then elif [ "$cmd" == 'communitypkg' ]; then
repo="community" repo='community'
server="aur.archlinux.org" server='aur.archlinux.org'
elif [ "$cmd" == "community-testingpkg" ]; then elif [ "$cmd" == 'community-testingpkg' ]; then
repo="community-testing" repo='community-testing'
server="aur.archlinux.org" server='aur.archlinux.org'
else else
if [ $# -eq 0 ]; then if [ $# -eq 0 ]; then
abort "usage: commitpkg <reponame> [-l limit] [commit message]" abort 'usage: commitpkg <reponame> [-l limit] [commit message]'
fi fi
repo="$1" repo="$1"
shift shift
@@ -58,7 +58,7 @@ done) || true
# see if any limit options were passed, we'll send them to rsync # see if any limit options were passed, we'll send them to rsync
unset rsyncopts unset rsyncopts
if [ "$1" = "-l" ]; then if [ "$1" = '-l' ]; then
rsyncopts="--bwlimit=$2" rsyncopts="--bwlimit=$2"
shift 2 shift 2
fi fi
@@ -89,7 +89,7 @@ for _arch in ${arch[@]}; do
archrelease $repo-${_arch} || abort archrelease $repo-${_arch} || abort
done done
if [ "${arch[*]}" == "any" ]; then if [ "${arch[*]}" == 'any' ]; then
if [ -d ../repos/$repo-i686 -a -d ../repos/$repo-x86_64 ]; then if [ -d ../repos/$repo-i686 -a -d ../repos/$repo-x86_64 ]; then
pushd ../repos/ >/dev/null pushd ../repos/ >/dev/null
echo -n "removing $repo-i686 and $repo-x86_64..." echo -n "removing $repo-i686 and $repo-x86_64..."
@@ -101,4 +101,5 @@ if [ "${arch[*]}" == "any" ]; then
fi fi
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 #!/bin/bash
if [ "$1" = "" ]; then if [ "$1" = '' ]; then
echo "Usage: communityco <package name> [<package name>]" echo 'Usage: communityco <package name> [<package name>]'
exit 1 exit 1
fi fi
for i in "$@"; do for i in "$@"; do
svn co svn+ssh://aur.archlinux.org/srv/svn-packages/$i svn co svn+ssh://aur.archlinux.org/srv/svn-packages/$i
done 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 # finddeps - find packages that depend on a given depname
# #
if [ "$1" = "" ]; then if [ "$1" = '' ]; then
echo "usage: finddeps <depname>" echo 'usage: finddeps <depname>'
echo "" echo ''
echo "Find packages that depend on a given depname." echo 'Find packages that depend on a given depname.'
echo "Run this script from the top-level directory of your ABS tree." echo 'Run this script from the top-level directory of your ABS tree.'
echo "" echo ''
exit 0 exit 0
fi fi
@@ -38,4 +38,5 @@ for d in $(find . -type d); do
cd $tld cd $tld
done 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=$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= extras=
TEMPDIR=$(mktemp /tmp/lddd-script.XXXX) TEMPDIR=$(mktemp /tmp/lddd-script.XXXX)
rm $TEMPDIR rm $TEMPDIR
mkdir -p $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. # Check ELF binaries in the PATH and specified dir trees.
for tree in $PATH $libdirs $extras for tree in $PATH $libdirs $extras; do
do
echo DIR $tree echo DIR $tree
# Get list of files in 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 IFS=$ifs
for i in $files for i in $files; do
do
if [ `file $i | grep -c 'ELF'` -ne 0 ]; then if [ `file $i | grep -c 'ELF'` -ne 0 ]; then
# Is an ELF binary. # Is an ELF binary.
if [ `ldd $i 2>/dev/null | grep -c 'not found'` -ne 0 ]; then 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" 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 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
FORCE="n" FORCE='n'
RUN="" RUN=''
MAKEPKG_ARGS="-sr" MAKEPKG_ARGS='-sr'
REPACK="" REPACK=''
COPY="copy" COPY='copy'
WORKDIR=$PWD WORKDIR=$PWD
update_first="0" update_first='0'
clean_first="0" clean_first='0'
install_pkg="" install_pkg=''
add_to_db=0 add_to_db=0
chrootdir="" chrootdir=''
APPNAME=$(basename "${0}") APPNAME=$(basename "${0}")
usage () usage() {
{
echo "usage ${APPNAME} [options] -r <chrootdir> [--] [makepkg args]" echo "usage ${APPNAME} [options] -r <chrootdir> [--] [makepkg args]"
echo " Run this script in a PKGBUILD dir to build a package inside a" 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 ' clean chroot. All unrecognized arguments passed to this script'
echo " will be passed to makepkg." echo ' will be passed to makepkg.'
echo "" echo ''
echo " The chroot dir consists of the following directories:" echo ' The chroot dir consists of the following directories:'
echo " <chrootdir>/{root, copy} but only 'root' is required" echo ' <chrootdir>/{root, copy} but only "root" is required'
echo " by default. The working copy will be created as needed" echo ' by default. The working copy will be created as needed'
echo "" echo ''
echo "The chroot 'root' directory must be created via the following" echo 'The chroot "root" directory must be created via the following'
echo "command:" echo 'command:'
echo " mkarchroot <chrootdir>/root base base-devel sudo" echo ' mkarchroot <chrootdir>/root base base-devel sudo'
echo "" echo ''
echo "Default makepkg args: $MAKEPKG_ARGS" echo "Default makepkg args: $MAKEPKG_ARGS"
echo "" echo ''
echo "Flags:" echo 'Flags:'
echo "-h This help" echo '-h This help'
echo "-c Clean the chroot before building" echo '-c Clean the chroot before building'
echo "-u Update the working copy of 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 ' This is useful for rebuilds without dirtying the pristine'
echo " chroot" echo ' chroot'
echo "-d Add the package to a local db at /repo after building" echo '-d Add the package to a local db at /repo after building'
echo "-r <dir> The chroot dir to use" echo '-r <dir> The chroot dir to use'
echo "-I <pkg> Install a package into the working copy of the chroot" 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 '-l <copy> The directory to use as the working copy of the chroot'
echo " Useful for maintain multiple copies Default: copy" echo ' Useful for maintain multiple copies Default: copy'
exit 1 exit 1
} }
@@ -77,19 +76,19 @@ MAKEPKG_ARGS="$MAKEPKG_ARGS ${*:$OPTIND}"
# See if -R was passed to makepkg # See if -R was passed to makepkg
for arg in ${*:$OPTIND}; do for arg in ${*:$OPTIND}; do
if [ "$arg" = "-R" ]; then if [ "$arg" = '-R' ]; then
REPACK=1 REPACK=1
break; break;
fi fi
done done
if [ "$EUID" != "0" ]; then if [ "$EUID" != '0' ]; then
echo "This script must be run as root." echo 'This script must be run as root.'
exit 1 exit 1
fi fi
if [ ! -f PKGBUILD ]; then 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 exit 1
fi fi
source PKGBUILD source PKGBUILD
@@ -100,12 +99,12 @@ if [ ! -d "$chrootdir" ]; then
fi fi
if [ ! -d "$chrootdir/root" ]; then 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" echo "Try using: mkarchroot $chrootdir/root base base-devel sudo"
usage usage
fi fi
umask 000 umask 0022
if [ ! -d "$copydir" -o "$clean_first" -eq "1" ]; then if [ ! -d "$copydir" -o "$clean_first" -eq "1" ]; then
echo -n 'creating clean working copy...' echo -n 'creating clean working copy...'
mkdir -p "$copydir" mkdir -p "$copydir"
@@ -124,7 +123,7 @@ if [ -n "$install_pkg" ]; then
fi fi
if [ $update_first -eq 1 ]; then if [ $update_first -eq 1 ]; then
mkarchroot -r "pacman -Syu --noconfirm" "$copydir" mkarchroot -r 'pacman -Syu --noconfirm' "$copydir"
fi fi
[ -d "$copydir/build" ] || mkdir "$copydir/build" [ -d "$copydir/build" ] || mkdir "$copydir/build"
@@ -139,13 +138,13 @@ SRCDEST=$(grep '^SRCDEST=' /etc/makepkg.conf | cut -d= -f2)
PKGDEST=$(grep '^PKGDEST=' /etc/makepkg.conf | cut -d= -f2) PKGDEST=$(grep '^PKGDEST=' /etc/makepkg.conf | cut -d= -f2)
[ -d "$copydir/pkgdest" ] || mkdir "$copydir/pkgdest" [ -d "$copydir/pkgdest" ] || mkdir "$copydir/pkgdest"
if ! grep "PKGDEST=/pkgdest" "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then if ! grep 'PKGDEST=/pkgdest' "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then
echo "PKGDEST=/pkgdest" >> "$copydir/etc/makepkg.conf" echo 'PKGDEST=/pkgdest' >> "$copydir/etc/makepkg.conf"
fi fi
[ -d "$copydir/srcdest" ] || mkdir "$copydir/srcdest" [ -d "$copydir/srcdest" ] || mkdir "$copydir/srcdest"
if ! grep "SRCDEST=/srcdest" "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then if ! grep 'SRCDEST=/srcdest' "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then
echo "SRCDEST=/srcdest" >> "$copydir/etc/makepkg.conf" echo 'SRCDEST=/srcdest' >> "$copydir/etc/makepkg.conf"
fi fi
# Copy PKGBUILD and sources # Copy PKGBUILD and sources
@@ -160,7 +159,7 @@ for f in ${source[@]}; do
fi fi
done done
install_files=$(grep "install=" PKGBUILD) install_files=$(grep 'install=' PKGBUILD)
for pkg in ${pkgname[@]}; do for pkg in ${pkgname[@]}; do
install_files+=' ' install_files+=' '
install_files+=$(echo $install_files |sed "s/\$pkgname/$pkg/"|sed "s/\${pkgname}/$pkg/") install_files+=$(echo $install_files |sed "s/\$pkgname/$pkg/"|sed "s/\${pkgname}/$pkg/")
@@ -174,7 +173,7 @@ for f in $install_files;do
fi fi
done done
if [ -f "ChangeLog" ]; then if [ -f 'ChangeLog' ]; then
cp ChangeLog "$copydir/build/" cp ChangeLog "$copydir/build/"
fi fi
@@ -184,7 +183,7 @@ chown -R nobody "$copydir/pkgdest"
if ! grep "^nobody" "$copydir/etc/sudoers" >/dev/null 2>&1; then if ! grep "^nobody" "$copydir/etc/sudoers" >/dev/null 2>&1; then
touch "$copydir/etc/sudoers" 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" chmod 440 "$copydir/etc/sudoers"
fi fi
@@ -246,5 +245,5 @@ else
rm -rf "${copydir}"/build/* rm -rf "${copydir}"/build/*
fi fi
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# vim:ft=sh:ts=4:sw=4:et: # 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 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
FORCE="n" FORCE='n'
RUN="" RUN=''
NOCOPY="n" NOCOPY='n'
working_dir="" working_dir=''
cache_dir=$((grep -m 1 '^CacheDir' /etc/pacman.conf || echo 'CacheDir = /var/cache/pacman/pkg') | sed 's/CacheDir\s*=\s*//')
APPNAME=$(basename "${0}") APPNAME=$(basename "${0}")
# usage: usage <exitvalue> # usage: usage <exitvalue>
usage () usage() {
{
echo "usage ${APPNAME} [options] working-dir [package-list | app]" echo "usage ${APPNAME} [options] working-dir [package-list | app]"
echo " options:" echo ' options:'
echo " -r <app> Run 'app' within the context of the chroot" echo ' -r <app> Run "app" within the context of the chroot'
echo " -u Update the chroot via pacman" echo ' -u Update the chroot via pacman'
echo " -f Force overwrite of files in the working-dir" echo ' -f Force overwrite of files in the working-dir'
echo " -C <file> Location of a pacman config file" echo ' -C <file> Location of a pacman config file'
echo " -M <file> Location of a makepkg config file" echo ' -M <file> Location of a makepkg config file'
echo " -n Do not copy config files into the chroot" echo ' -n Do not copy config files into the chroot'
echo " -c <dir> Set pacman cache. Default: ${cache_dir}" echo " -c <dir> Set pacman cache. Default: ${cache_dir}"
echo " -h This message" echo ' -h This message'
exit $1 exit $1
} }
while getopts 'r:ufnhC:M:c:' arg; do while getopts 'r:ufnhC:M:c:' arg; do
case "${arg}" in case "${arg}" in
r) RUN="$OPTARG" ;; r) RUN="$OPTARG" ;;
u) RUN="pacman -Syu" ;; u) RUN='pacman -Syu' ;;
f) FORCE="y" ;; f) FORCE='y' ;;
C) pac_conf="$OPTARG" ;; C) pac_conf="$OPTARG" ;;
M) makepkg_conf="$OPTARG" ;; M) makepkg_conf="$OPTARG" ;;
n) NOCOPY="y" ;; n) NOCOPY='y' ;;
c) cache_dir="$OPTARG" ;; c) cache_dir="$OPTARG" ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;; *) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
done done
if [ "$EUID" != "0" ]; then if [ "$EUID" != '0' ]; then
echo "error: this script must be run as root." echo 'error: this script must be run as root.'
exit 1 exit 1
fi fi
shift $(($OPTIND - 1)) shift $(($OPTIND - 1))
if [ "$RUN" = "" -a $# -lt 2 ]; then if [ "$RUN" = '' -a $# -lt 2 ]; then
echo "you must specify a directory and one or more packages" echo 'you must specify a directory and one or more packages'
usage 1 usage 1
elif [ $# -lt 1 ]; then elif [ $# -lt 1 ]; then
echo "you must specify a directory" echo 'you must specify a directory'
usage 1 usage 1
fi fi
working_dir="$(readlink -f ${1})" working_dir="$(readlink -f ${1})"
shift 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 # {{{ functions
chroot_mount () chroot_mount() {
{
[ -e "${working_dir}/sys" ] || mkdir "${working_dir}/sys" [ -e "${working_dir}/sys" ] || mkdir "${working_dir}/sys"
mount -t sysfs sysfs "${working_dir}/sys" mount -t sysfs sysfs "${working_dir}/sys"
@@ -80,36 +84,33 @@ chroot_mount ()
[ -e "${working_dir}/dev" ] || mkdir "${working_dir}/dev" [ -e "${working_dir}/dev" ] || mkdir "${working_dir}/dev"
mount -o bind /dev "${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}" [ -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 trap 'chroot_umount' 0 1 2 15
} }
copy_hostconf () copy_hostconf () {
{
cp /etc/mtab "${working_dir}/etc/mtab" cp /etc/mtab "${working_dir}/etc/mtab"
cp /etc/resolv.conf "${working_dir}/etc/resolv.conf" cp /etc/resolv.conf "${working_dir}/etc/resolv.conf"
} }
chroot_umount () chroot_umount () {
{
umount "${working_dir}/proc" umount "${working_dir}/proc"
umount "${working_dir}/sys" umount "${working_dir}/sys"
umount "${working_dir}/dev" umount "${working_dir}/dev"
umount "${working_dir}/var/cache/pacman/pkg" umount "${working_dir}/${cache_dir}"
} }
# }}} # }}}
umask 000 umask 0022
if [ "$RUN" != "" ]; then if [ "$RUN" != "" ]; then
# run chroot {{{ # run chroot {{{
#Sanity check #Sanity check
if [ ! -f "${working_dir}/.arch-chroot" ]; then if [ ! -f "${working_dir}/.arch-chroot" ]; then
echo "error: '${working_dir}' does not appear to be a Arch chroot" 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 exit 1
fi fi
@@ -131,21 +132,21 @@ else
chroot_mount chroot_mount
pacargs="--noconfirm -v " #--noprogressbar -v pacargs='--noconfirm -v ' #--noprogressbar -v
pacargs="$pacargs --root=${working_dir}" pacargs="$pacargs --root=${working_dir}"
# pacman takes these as relative to the given root # 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 if [ "$pac_conf" != "" ]; then
pacargs="$pacargs --config=${pac_conf}" pacargs="$pacargs --config=${pac_conf}"
fi fi
if [ $# -ne 0 ]; then if [ $# -ne 0 ]; then
op="-Sy" op='-Sy'
if [ "$FORCE" = "y" ]; then if [ "$FORCE" = "y" ]; then
op="${op}f" op="${op}f"
fi fi
if ! pacman ${op} ${pacargs} $@; then if ! pacman ${op} ${pacargs} $@; then
echo "error: failed to install all packages" echo 'error: failed to install all packages'
exit 1 exit 1
fi fi
fi fi
@@ -173,4 +174,5 @@ else
# }}} # }}}
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

@@ -16,10 +16,10 @@ if [ $# -le 1 ]; then
fi fi
# Source makepkg.conf; fail if it is not found # Source makepkg.conf; fail if it is not found
if [ -r "/etc/makepkg.conf" ]; then if [ -r '/etc/makepkg.conf' ]; then
source "/etc/makepkg.conf" source '/etc/makepkg.conf'
else else
echo "/etc/makepkg.conf not found!" echo '/etc/makepkg.conf not found!'
exit 1 exit 1
fi fi
@@ -31,8 +31,8 @@ die () {
bump_pkgrel() { bump_pkgrel() {
# Get the current pkgrel from SVN and update the working copy with it # Get the current pkgrel from SVN and update the working copy with it
# This prevents us from incrementing out of control :) # This prevents us from incrementing out of control :)
pbuild=".svn/text-base/PKGBUILD.svn-base" pbuild='.svn/text-base/PKGBUILD.svn-base'
oldrel=$(grep "pkgrel=" $pbuild | cut -d= -f2) oldrel=$(grep 'pkgrel=' $pbuild | cut -d= -f2)
#remove decimals #remove decimals
rel=$(echo $oldrel | cut -d. -f1) rel=$(echo $oldrel | cut -d. -f1)
@@ -45,13 +45,13 @@ bump_pkgrel () {
pkg_from_pkgbuild() { pkg_from_pkgbuild() {
# we want the sourcing to be done in a subshell so we don't pollute our current namespace # we want the sourcing to be done in a subshell so we don't pollute our current namespace
export CARCH PKGEXT export CARCH PKGEXT
(. PKGBUILD; echo "$pkgname-$pkgver-$pkgrel-$CARCH$PKGEXT") (source PKGBUILD; echo "$pkgname-$pkgver-$pkgrel-$CARCH$PKGEXT")
} }
chrootdir="$1"; shift chrootdir="$1"; shift
pkgs="$@" 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" echo ":: Work will be done in $(pwd)/rebuilds"
@@ -92,10 +92,13 @@ done
cd "$REBUILD_ROOT" cd "$REBUILD_ROOT"
if [ "$FAILED" != "" ]; then if [ "$FAILED" != "" ]; then
echo "Packages failed:" echo 'Packages failed:'
for pkg in $FAILED; do for pkg in $FAILED; do
echo -e "\t$pkg" echo -e "\t$pkg"
done done
fi 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