Compare commits

...

32 Commits

Author SHA1 Message Date
Pierre Schmitz
65365f1853 prepare release 2012-02-06 21:17:44 +01:00
Florian Pritz
06a681ca3d commitpkg: use absolute paths when uploading files
This fixes a problem where rsync won't work if the pkgver contains a
colon (epoch). In this case rsync assumes that the colon is a
remote:path separator and having src and dest both being remote
arguments is not supported.

Signed-off-by: Florian Pritz <bluewind@xinu.at>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-02-06 21:15:57 +01:00
Pierre Schmitz
b763788b16 Fix typo: It's PKGDEST and not DESTDIR 2012-01-19 18:45:01 +01:00
Pierre Schmitz
c2d9a0e7b1 Set correct pacman.conf
Commit ee4edefa2f reverted too much and left pacman.conf unset
2012-01-18 16:56:41 +01:00
Pierre Schmitz
ee4edefa2f Remove any pacman 4 related workarounds 2012-01-18 11:24:07 +01:00
Allan McRae
a8b64995ee makechrootpkg: fix error message
Passing a directory that does not exist to makechrootpkg results in
an error message:

==> ERROR: No chroot dir defined, or invalid path ''

The path is not being printed as the readlink command blanks it if
the directory does not exist. Fix this.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-01-18 11:06:52 +01:00
Jan Alexander Steffens (heftig)
2c9855fe6b Fix up usage help, the Default line belongs to -l
Signed-off-by: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-01-18 11:06:52 +01:00
Florian Pritz
4d4ffb5d8f find-libdeps: fix syntax error
The problem has been introduced in commit
56d4dec19f

Signed-off-by: Florian Pritz <bluewind@xinu.at>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-01-18 11:06:52 +01:00
Dave Reisner
2d79191c97 commitpkg: behavior more sanely in searching for built pkgs
In the case of a .pkg.tar.xz and a .pkg.tar.gz existing in the same
directory, all commitpkg would say is:

  ==> WARNING: Could not find . Skipping x86_64

Upon digging into the logic, we did a few things poorly, mostly in
getpkgfile:

- getpkgfile tried to die in a subshell (within the command substituion
  assignment to 'pkgfile'). This will never work.
- We assumed that proper glob expansion happened when we received
  exactly 1 arg. This isn't necessarily true without nullglob in effect.
- We dumped the real error (spewed by getpkgfile) to /dev/null.
- We checked for the package twice in both $PWD and $DESTDIR/.
- We checked for file existance multiple times.

Address this by:

- not hiding errors. revamp the wording a little bit to make it more
  obvious why we failed, particularly in the case of a glob expanding to
  more than 1 file. Logic here is simplified to pointing out the failure
  cases of 0 and >1.
- setting nullglob so the number of arguments passed into getpkgfile is
  meaningful from a 'did it decisively resolve' point of view.
- not trying to exit the entire script from a subshell. Just return a
  value (and use it).
- avoiding the package file existance check afterwards. this is a
  freebie from getpkgfile when the glob passed fails to expand.

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-01-18 11:06:51 +01:00
Pierre Schmitz
5b3ca82ae5 prepare release 2012-01-14 20:25:43 +01:00
Pierre Schmitz
90a5e441cd Add support for multilib-staging 2012-01-14 20:22:26 +01:00
Pierre Schmitz
3c7dbe0ea2 prepare release 2011-12-20 23:12:49 +01:00
Tom Gundersen
130227546a mkarchroot: do not create /etc/mtab
As of filesystem-2011.12 this is not needed anylonger, and indeed blocks the
chroot from being upgraded. As a workaround, recreating the chroot fixes the
problem.

Fixes FS#27640.

Reported-by: Andrea Scarpino <andrea@archlinux.org>
Signed-off-by: Tom Gundersen <teg@jklm.no>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-12-20 23:05:44 +01:00
Timothy Redaelli
594f972666 Use #!/bin/bash instead of #!/bin/sh
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-12-20 23:05:38 +01:00
Dave Reisner
0e32334cca archbuild: exec makechrootpkg to preserve exit value
This fixes a compound command such as the one below from continuing even
if the first fails.

  extra-x86_64-build && extra-i686-build

The problem is that 'cleanup 0' is triggered in archbuild even after an
unsucessful call to makechrootpkg. Since both archbuild and
makechrootpkg share the exact same cleanup function (from lib/common),
we simply force the shell to exit with the true return value by exec'ing
the call to makechrootpkg.

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-12-04 18:13:13 +01:00
Allan McRae
58d0ccc4f8 makearchroot: source /etc/profile before building
This ensures the PATH used when building is the default path and
not the value set by the user calling makechrootpkg.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-12-04 18:04:47 +01:00
Lukas Fleischer
bfd2862bc4 Makefile: Remove output files before replacing them
This one fixes all the "Permission denied" errors we got when invoking
make(1) after modifying a source file and removes the need to delete the
generated scripts manually.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-12-04 18:01:51 +01:00
Lukas Fleischer
56d4dec19f Use double brackets everywhere
We already fixed a couple of these in previous patches - this one should
replace all remaining uses of single brackets ("[") by double brackets.
Also, use arithmetic evaluation instead of conditional expressions where
appropriate and make use of "-z" and "-n" instead of comparing variables
to empty strings.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2011-12-04 18:00:57 +01:00
Pierre Schmitz
f62f307c84 Add support for kde-unstable and gnome-unstable 2011-12-04 17:48:46 +01:00
Pierre Schmitz
8efe61b4e2 Skip archrelease for missing architectures 2011-11-21 10:24:29 +01:00
Pierre Schmitz
8ffc2e44ee prepare release 2011-11-11 22:06:17 +01:00
Ionut Biru
a628c1a006 makechrootpkg: fix repack
repack is defined as a boolean. set it true when -R is passed

/usr/sbin/makechrootpkg: line 295: 1: command not found

Signed-off-by: Ionut Biru <ibiru@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-11-09 20:32:29 +01:00
Pierre Schmitz
8ba91b0574 prepare release 2011-11-06 10:38:39 +01:00
Pierre Schmitz
671643053d archbuild: Always use recent makepkg.conf and pacman.conf; Run namcap by default 2011-11-06 10:32:55 +01:00
Pierre Schmitz
bf96c9f949 makechrootpkg: Create separate namcap log for every single file 2011-11-06 10:31:37 +01:00
Pierre Schmitz
a030cdc532 mkarchroot: Respect makepkg.conf and pacman.conf when running a command 2011-11-06 10:27:55 +01:00
Lukas Fleischer
b7a3c74c50 commitpkg: Fix commit message
Move the message template before the if block. We moved this to the else
branch in commit aaa68e49e8 which lead to
"msgtemplate" being unset if one specifies a commit message on the
command line, thus stripping the "upgpkg:" part.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-11-04 19:38:11 +01:00
Eric Bélanger
a33ee6e78d commitpkg: Make svn quieter
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-11-04 19:34:50 +01:00
Lukas Fleischer
1f24380a31 Makefile: Add common library to build dependencies
Add "lib/common.sh" to the build dependencies of our scripts to ensure
everything gets rebuilt when we modify a common function. Also, add
"Makefile" itself to enforce a rebuild if the edit command changes.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-11-04 19:34:13 +01:00
Lukas Fleischer
fbbcc30e3d lib/common.sh: Revise setup_workdir()
* Honor TMPDIR variable (just like we did in commit a0c6bf45).
* Quote path properly.
* Avoid unnecessary use of basename(1).

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-11-04 19:34:00 +01:00
Lukas Fleischer
c1752bd716 lib/common.sh: Use double brackets
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-11-04 19:33:51 +01:00
Eric Bélanger
42d821ef7b Capitalize output messages
Some of the output/error messages were capitalized, some were
not. This patch capitalize everything for consistency sake. Other
minor changes were done to the messages like removing the superfluous
"error:" from die messages and adding a final period to messages that
were complete sentences as appropriate.

Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-11-04 19:33:29 +01:00
21 changed files with 486 additions and 145 deletions

View File

@@ -1,4 +1,4 @@
V=20111101 V=20120206
PREFIX = /usr/local PREFIX = /usr/local
@@ -25,7 +25,10 @@ CONFIGFILES = \
pacman-testing.conf \ pacman-testing.conf \
pacman-staging.conf \ pacman-staging.conf \
pacman-multilib.conf \ pacman-multilib.conf \
pacman-multilib-testing.conf pacman-multilib-testing.conf \
pacman-multilib-staging.conf \
pacman-kde-unstable.conf \
pacman-gnome-unstable.conf
COMMITPKG_LINKS = \ COMMITPKG_LINKS = \
extrapkg \ extrapkg \
@@ -36,7 +39,10 @@ COMMITPKG_LINKS = \
community-testingpkg \ community-testingpkg \
community-stagingpkg \ community-stagingpkg \
multilibpkg \ multilibpkg \
multilib-testingpkg multilib-testingpkg \
multilib-stagingpkg \
kde-unstablepkg \
gnome-unstablepkg
ARCHBUILD_LINKS = \ ARCHBUILD_LINKS = \
extra-i686-build \ extra-i686-build \
@@ -46,14 +52,20 @@ ARCHBUILD_LINKS = \
staging-i686-build \ staging-i686-build \
staging-x86_64-build \ staging-x86_64-build \
multilib-build \ multilib-build \
multilib-testing-build multilib-testing-build \
multilib-staging-build \
kde-unstable-i686-build \
kde-unstable-x86_64-build \
gnome-unstable-i686-build \
gnome-unstable-x86_64-build
all: $(BINPROGS) $(SBINPROGS) bash_completion zsh_completion all: $(BINPROGS) $(SBINPROGS) bash_completion zsh_completion
edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g" edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g"
%: %.in %: %.in Makefile lib/common.sh
@echo "GEN $@" @echo "GEN $@"
@$(RM) "$@"
@m4 -P $@.in | $(edit) >$@ @m4 -P $@.in | $(edit) >$@
@chmod a-w "$@" @chmod a-w "$@"
@chmod +x "$@" @chmod +x "$@"

View File

@@ -2,8 +2,7 @@
m4_include(lib/common.sh) m4_include(lib/common.sh)
# FIXME: temporary added curl until pacman 4.0 moves to [core] base_packages=(base base-devel sudo)
base_packages=(base base-devel sudo curl)
cmd="${0##*/}" cmd="${0##*/}"
if [[ "${cmd%%-*}" == 'multilib' ]]; then if [[ "${cmd%%-*}" == 'multilib' ]]; then
@@ -60,18 +59,13 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then
-M "@pkgdatadir@/makepkg-${arch}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \
"${chroots}/${repo}-${arch}/root" \ "${chroots}/${repo}-${arch}/root" \
"${base_packages[@]}" "${base_packages[@]}"
# FIXME: temporary workaround until pacman 4.0 moves to [core]
case $repo in
core|extra|community|multilib)
sed -r '/^SigLevel.*/d' -i "${chroots}/${repo}-${arch}/root/etc/pacman.conf"
;;
esac
else else
setarch ${arch} mkarchroot \ setarch ${arch} mkarchroot \
-u \ -u \
-C "@pkgdatadir@/pacman-${repo}.conf" \
-M "@pkgdatadir@/makepkg-${arch}.conf" \
"${chroots}/${repo}-${arch}/root" "${chroots}/${repo}-${arch}/root"
fi fi
msg "Building in chroot for [${repo}] (${arch})..." msg "Building in chroot for [${repo}] (${arch})..."
setarch "${arch}" makechrootpkg -c -r "${chroots}/${repo}-${arch}" exec setarch "${arch}" makechrootpkg -c -n -r "${chroots}/${repo}-${arch}"

View File

@@ -4,7 +4,7 @@ m4_include(lib/common.sh)
scriptname=${0##*/} scriptname=${0##*/}
if [ "$1" = '' ]; then if [[ -z $1 ]]; then
echo 'Usage: '$scriptname' <package name>...' echo 'Usage: '$scriptname' <package name>...'
exit 1 exit 1
fi fi
@@ -15,7 +15,7 @@ case $scriptname in
communityco) communityco)
SVNURL="svn+ssh://aur.archlinux.org/srv/svn-packages";; SVNURL="svn+ssh://aur.archlinux.org/srv/svn-packages";;
*) *)
die "error: couldn't find svn url for $scriptname" die "Couldn't find svn url for $scriptname"
;; ;;
esac esac

View File

@@ -36,7 +36,7 @@ for file in "${known_files[@]}"; do
done done
for tag in "$@"; do for tag in "$@"; do
stat_busy "copying ${trunk} to ${tag}" stat_busy "Copying ${trunk} to ${tag}"
if [[ -d repos/$tag ]]; then if [[ -d repos/$tag ]]; then
declare -a trash declare -a trash
@@ -56,7 +56,7 @@ for tag in "$@"; do
stat_done stat_done
done done
stat_busy "releasing package" stat_busy "Releasing package"
printf -v tag_list ", %s" "$@"; tag_list="${tag_list#, }" printf -v tag_list ", %s" "$@"; tag_list="${tag_list#, }"
svn commit -q -m "archrelease: copy ${trunk} to $tag_list" || abort svn commit -q -m "archrelease: copy ${trunk} to $tag_list" || abort
stat_done stat_done

View File

@@ -2,7 +2,7 @@
m4_include(lib/common.sh) m4_include(lib/common.sh)
if [ "$1" = '' ]; then if [[ -z $1 ]]; then
echo 'Usage: archrm <path to checkout>' echo 'Usage: archrm <path to checkout>'
exit 1 exit 1
fi fi

View File

@@ -3,30 +3,36 @@
m4_include(lib/common.sh) m4_include(lib/common.sh)
getpkgfile() { getpkgfile() {
if [[ ${#} -ne 1 ]]; then case $# in
die 'ERROR: No canonical package found!' 0)
elif [ ! -f "${1}" ]; then error 'No canonical package found!'
die "ERROR: Package ${1} not found!" return 1
fi ;;
[!1])
error 'Failed to canonicalize package name -- multiple packages found:'
msg2 '%s' "$@"
return 1
;;
esac
echo ${1} echo "$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
die '/etc/makepkg.conf not found!' die '/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
. ~/.makepkg.conf . ~/.makepkg.conf
fi fi
cmd=${0##*/} cmd=${0##*/}
if [ ! -f PKGBUILD ]; then if [[ ! -f PKGBUILD ]]; then
die 'No PKGBUILD file' die 'No PKGBUILD file'
fi fi
@@ -35,7 +41,7 @@ pkgbase=${pkgbase:-$pkgname}
case "$cmd" in case "$cmd" in
commitpkg) commitpkg)
if [ $# -eq 0 ]; then if (( $# == 0 )); then
die 'usage: commitpkg <reponame> [-l limit] [-a arch] [commit message]' die 'usage: commitpkg <reponame> [-l limit] [-a arch] [commit message]'
fi fi
repo="$1" repo="$1"
@@ -50,7 +56,7 @@ case "$cmd" in
esac esac
case "$repo" in case "$repo" in
core|extra|testing|staging) core|extra|testing|staging|kde-unstable|gnome-unstable)
server='gerolde.archlinux.org' ;; server='gerolde.archlinux.org' ;;
community*|multilib*) community*|multilib*)
server='aur.archlinux.org' ;; server='aur.archlinux.org' ;;
@@ -83,32 +89,32 @@ while getopts ':l:a:' flag; do
case $flag in case $flag in
l) rsyncopts+=("--bwlimit=$2") ;; l) rsyncopts+=("--bwlimit=$2") ;;
a) commit_arch=$2 ;; a) commit_arch=$2 ;;
:) die "option requires an argument -- '$OPTARG'" ;; :) die "Option requires an argument -- '$OPTARG'" ;;
\?) die "invalid option -- '$OPTARG'" ;; \?) die "Invalid option -- '$OPTARG'" ;;
esac esac
done done
shift $(( OPTIND - 1 )) shift $(( OPTIND - 1 ))
if [ -n "$(svn status -q)" ]; then if [[ -n $(svn status -q) ]]; then
if [ -n "$1" ]; then msgtemplate="upgpkg: $pkgbase $(get_full_version)"$'\n\n'
stat_busy 'committing changes to trunk' if [[ -n $1 ]]; then
stat_busy 'Committing changes to trunk'
svn commit -q -m "${msgtemplate}${1}" || die svn commit -q -m "${msgtemplate}${1}" || die
stat_done stat_done
else else
msgtemplate="upgpkg: $pkgbase $(get_full_version)"$'\n\n'
msgfile="$(mktemp)" msgfile="$(mktemp)"
echo "$msgtemplate" > "$msgfile" echo "$msgtemplate" > "$msgfile"
if [ -n "$SVN_EDITOR" ]; then if [[ -n $SVN_EDITOR ]]; then
$SVN_EDITOR "$msgfile" $SVN_EDITOR "$msgfile"
elif [ -n "$VISUAL" ]; then elif [[ -n $VISUAL ]]; then
$VISUAL "$msgfile" $VISUAL "$msgfile"
elif [ -n "$EDITOR" ]; then elif [[ -n $EDITOR ]]; then
$EDITOR "$msgfile" $EDITOR "$msgfile"
else else
vi "$msgfile" vi "$msgfile"
fi fi
[ -s "$msgfile" ] || die [[ -s $msgfile ]] || die
stat_busy 'committing changes to trunk' stat_busy 'Committing changes to trunk'
svn commit -q -F "$msgfile" || die svn commit -q -F "$msgfile" || die
unlink "$msgfile" unlink "$msgfile"
stat_done stat_done
@@ -116,37 +122,35 @@ if [ -n "$(svn status -q)" ]; then
fi fi
declare -a uploads declare -a uploads
declare -a commit_arches
declare -a skip_arches
for _arch in ${arch[@]}; do for _arch in ${arch[@]}; do
if [ -n "$commit_arch" ] && [ "${_arch}" != "$commit_arch" ]; then if [[ -n $commit_arch && ${_arch} != "$commit_arch" ]]; then
warning "skipping ${_arch}" skip_arches+=($_arch)
continue continue
fi fi
for _pkgname in ${pkgname[@]}; do for _pkgname in ${pkgname[@]}; do
fullver=$(get_full_version $_pkgname) fullver=$(get_full_version $_pkgname)
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 if ! pkgfile=$(shopt -s nullglob;
pkgfile="./$pkgfile" getpkgfile "${PKGDEST+$PKGDEST/}$_pkgname-$fullver-${_arch}".pkg.tar.?z); then
elif [ -f "$pkgdestfile" ]; then warning "Skipping $_pkgname-$fullver-$_arch: failed to locate package file"
pkgfile="$pkgdestfile" skip_arches+=($_arch)
else
warning "skipping ${_arch}"
continue 2 continue 2
fi fi
uploads+=("$pkgfile") uploads+=("$pkgfile")
sigfile="${pkgfile}.sig" sigfile="${pkgfile}.sig"
if [[ $SIGNPKG == 'y' ]] && [ ! -f "${sigfile}" ]; then if [[ $SIGNPKG == 'y' && ! -f $sigfile ]]; then
msg "Signing package ${pkgfile}..." msg "Signing package ${pkgfile}..."
if [[ -n $GPGKEY ]]; then if [[ -n $GPGKEY ]]; then
SIGNWITHKEY="-u ${GPGKEY}" SIGNWITHKEY="-u ${GPGKEY}"
fi fi
gpg --detach-sign --use-agent ${SIGNWITHKEY} "${pkgfile}" || die gpg --detach-sign --use-agent ${SIGNWITHKEY} "${pkgfile}" || die
fi fi
if [ -f "${sigfile}" ]; then if [[ -f $sigfile ]]; then
if ! gpg --verify "$sigfile" >/dev/null 2>&1; then if ! gpg --verify "$sigfile" >/dev/null 2>&1; then
die "Signature ${pkgfile}.sig is incorrect!" die "Signature ${pkgfile}.sig is incorrect!"
fi fi
@@ -157,33 +161,44 @@ for _arch in ${arch[@]}; do
done done
done done
if [[ -n $commit_arch ]]; then for _arch in ${arch[@]}; do
archrelease "$repo-$commit_arch" || die if ! in_array $_arch ${skip_arches[@]}; then
else commit_arches+=($_arch)
archrelease "${arch[@]/#/$repo-}" || die fi
fi done
archrelease "${commit_arches[@]/#/$repo-}" || die
new_uploads=()
# convert to absolute paths so rsync can work with colons (epoch)
while read -r -d '' upload; do
new_uploads+=("$upload")
done < <(realpath -z "${uploads[@]}")
uploads=("${new_uploads[@]}")
unset new_uploads
if [[ ${#uploads[*]} -gt 0 ]]; then if [[ ${#uploads[*]} -gt 0 ]]; then
msg 'uploading all package and signature files' msg 'Uploading all package and signature files'
rsync "${rsyncopts[@]}" "${uploads[@]}" "$server:staging/$repo/" || die rsync "${rsyncopts[@]}" "${uploads[@]}" "$server:staging/$repo/" || die
fi fi
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 && -d ../repos/$repo-x86_64 ]]; then
pushd ../repos/ >/dev/null pushd ../repos/ >/dev/null
stat_busy "removing $repo-i686 and $repo-x86_64" stat_busy "Removing $repo-i686 and $repo-x86_64"
svn rm $repo-i686 svn rm -q $repo-i686
svn rm $repo-x86_64 svn rm -q $repo-x86_64
svn commit -q -m "removed $repo-i686 and $repo-x86_64 for $pkgname" svn commit -q -m "Removed $repo-i686 and $repo-x86_64 for $pkgname"
stat_done stat_done
popd >/dev/null popd >/dev/null
fi fi
else else
if [ -d ../repos/$repo-any ]; then if [[ -d ../repos/$repo-any ]]; then
pushd ../repos/ >/dev/null pushd ../repos/ >/dev/null
stat_busy "removing $repo-any" stat_busy "Removing $repo-any"
svn rm $repo-any svn rm -q $repo-any
svn commit -q -m "removed $repo-any for $pkgname" svn commit -q -m "Removed $repo-any for $pkgname"
stat_done stat_done
popd >/dev/null popd >/dev/null
fi fi

View File

@@ -15,7 +15,7 @@ script_mode=${0##*/find-lib}
case $script_mode in case $script_mode in
deps|provides) true;; deps|provides) true;;
*) die "unknown mode $script_mode" ;; *) die "Unknown mode $script_mode" ;;
esac esac
if [[ -z $1 ]]; then if [[ -z $1 ]]; then
@@ -68,12 +68,12 @@ find . -type f $find_args | while read filename; do
# get architecture of the file; if soarch is empty it's not an ELF binary # get architecture of the file; if soarch is empty it's not an ELF binary
soarch=$(LC_ALL=C readelf -h "$filename" 2>/dev/null | sed -n 's/.*Class.*ELF\(32\|64\)/\1/p') soarch=$(LC_ALL=C readelf -h "$filename" 2>/dev/null | sed -n 's/.*Class.*ELF\(32\|64\)/\1/p')
[ -n "$soarch" ] || continue [[ -n $soarch ]] || continue
if [[ $script_mode = "provides" ]]; then if [[ $script_mode = "provides" ]]; then
# get the string binaries link to: libfoo.so.1.2 -> libfoo.so.1 # get the string binaries link to: libfoo.so.1.2 -> libfoo.so.1
sofile=$(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -n 's/.*Library soname: \[\(.*\)\].*/\1/p') sofile=$(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -n 's/.*Library soname: \[\(.*\)\].*/\1/p')
[ -z "$sofile" ] && sofile="${filename##*/}" [[ -z $sofile ]] && sofile="${filename##*/}"
process_sofile process_sofile
elif [[ $script_mode = "deps" ]]; then elif [[ $script_mode = "deps" ]]; then
# process all libraries needed by the binary # process all libraries needed by the binary

View File

@@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
# #
# lddd - find broken library links on your machine # lddd - find broken library links on your machine
# #
@@ -27,9 +27,9 @@ for tree in $PATH $libdirs $extras; do
-name '*.mcopclass' ! -name '*.mcoptype') -name '*.mcopclass' ! -name '*.mcoptype')
IFS=$ifs IFS=$ifs
for i in $files; do for i in $files; do
if [ $(file $i | grep -c 'ELF') -ne 0 ]; then if (( $(file $i | grep -c 'ELF') != 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') != 0 )); then
# Missing lib. # Missing lib.
echo "$i:" >> $TEMPDIR/raw.txt echo "$i:" >> $TEMPDIR/raw.txt
ldd $i 2>/dev/null | grep 'not found' >> $TEMPDIR/raw.txt ldd $i 2>/dev/null | grep 'not found' >> $TEMPDIR/raw.txt

View File

@@ -58,14 +58,14 @@ stat_done() {
} }
setup_workdir() { setup_workdir() {
[ -z "$WORKDIR" ] && WORKDIR=$(mktemp -d /tmp/$(basename $0).XXXXXXXXXX) [[ -z $WORKDIR ]] && WORKDIR=$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX")
} }
cleanup() { cleanup() {
trap - EXIT INT QUIT TERM trap - EXIT INT QUIT TERM
[ -n "$WORKDIR" ] && rm -rf "$WORKDIR" [[ -n $WORKDIR ]] && rm -rf "$WORKDIR"
[ "$1" ] && exit $1 [[ $1 ]] && exit $1
} }
abort() { abort() {

View File

@@ -20,6 +20,7 @@ install_pkg=
add_to_db=false add_to_db=false
run_namcap=false run_namcap=false
chrootdir= chrootdir=
passeddir=
default_copy=$USER default_copy=$USER
[[ -n $SUDO_USER ]] && default_copy=$SUDO_USER [[ -n $SUDO_USER ]] && default_copy=$SUDO_USER
@@ -52,8 +53,8 @@ usage() {
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 maintaining multiple copies.' echo ' Useful for maintaining multiple copies.'
echo '-n Run namcap on the package'
echo " Default: $default_copy" echo " Default: $default_copy"
echo '-n Run namcap on the package'
exit 1 exit 1
} }
@@ -63,7 +64,7 @@ while getopts 'hcudr:I:l:n' arg; do
c) clean_first=true ;; c) clean_first=true ;;
u) update_first=true ;; u) update_first=true ;;
d) add_to_db=true ;; d) add_to_db=true ;;
r) chrootdir="$OPTARG" ;; r) passeddir="$OPTARG" ;;
I) install_pkg="$OPTARG" ;; I) install_pkg="$OPTARG" ;;
l) copy="$OPTARG" ;; l) copy="$OPTARG" ;;
n) run_namcap=true ;; n) run_namcap=true ;;
@@ -72,7 +73,7 @@ while getopts 'hcudr:I:l:n' arg; do
done done
# Canonicalize chrootdir, getting rid of trailing / # Canonicalize chrootdir, getting rid of trailing /
chrootdir=$(readlink -e "$chrootdir") chrootdir=$(readlink -e "$passeddir")
if [[ ${copy:0:1} = / ]]; then if [[ ${copy:0:1} = / ]]; then
copydir=$copy copydir=$copy
@@ -87,7 +88,7 @@ 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=true
break break
fi fi
done done
@@ -101,7 +102,7 @@ if [[ ! -f PKGBUILD && -z $install_pkg ]]; then
fi fi
if [[ ! -d $chrootdir ]]; then if [[ ! -d $chrootdir ]]; then
die "No chroot dir defined, or invalid path '$chrootdir'" die "No chroot dir defined, or invalid path '$passeddir'"
fi fi
if [[ ! -d $chrootdir/root ]]; then if [[ ! -d $chrootdir/root ]]; then
@@ -114,7 +115,7 @@ umask 0022
# Note this is the same FD number as in mkarchroot # Note this is the same FD number as in mkarchroot
exec 9>"$copydir.lock" exec 9>"$copydir.lock"
if ! flock -n 9; then if ! flock -n 9; then
stat_busy "locking chroot copy '$copy'" stat_busy "Locking chroot copy '$copy'"
flock 9 flock 9
stat_done stat_done
fi fi
@@ -125,12 +126,12 @@ if [[ ! -d $copydir ]] || $clean_first; then
exec 8>"$chrootdir/root.lock" exec 8>"$chrootdir/root.lock"
if ! flock -sn 8; then if ! flock -sn 8; then
stat_busy "locking clean chroot" stat_busy "Locking clean chroot"
flock -s 8 flock -s 8
stat_done stat_done
fi fi
stat_busy 'creating clean working copy' stat_busy 'Creating clean working copy'
use_rsync=false use_rsync=false
if type -P btrfs >/dev/null; then if type -P btrfs >/dev/null; then
[[ -d $copydir ]] && btrfs subvolume delete "$copydir" &>/dev/null [[ -d $copydir ]] && btrfs subvolume delete "$copydir" &>/dev/null
@@ -264,6 +265,7 @@ echo 'LANG=C' > "$copydir/etc/locale.conf"
# working copy # working copy
cat >"$copydir/chrootbuild" <<EOF cat >"$copydir/chrootbuild" <<EOF
#!/bin/bash #!/bin/bash
. /etc/profile
export LANG=C export LANG=C
export HOME=/build export HOME=/build
@@ -274,7 +276,10 @@ sudo -u nobody makepkg $makepkg_args || touch BUILD_FAILED
if $run_namcap; then if $run_namcap; then
pacman -S --needed --noconfirm namcap pacman -S --needed --noconfirm namcap
namcap /build/PKGBUILD /pkgdest/*.pkg.tar.?z > /build/namcap.log for pkgfile in /build/PKGBUILD /pkgdest/*.pkg.tar.?z; do
echo "Checking \${pkgfile##*/}"
namcap "\$pkgfile" 2>&1 | tee "/build/\${pkgfile##*/}-namcap.log"
done
fi fi
exit 0 exit 0
@@ -282,7 +287,7 @@ EOF
chmod +x "$copydir/chrootbuild" chmod +x "$copydir/chrootbuild"
if mkarchroot -r "/chrootbuild" "$copydir"; then if mkarchroot -r "/chrootbuild" "$copydir"; then
for pkgfile in "$copydir"/pkgdest/*.pkg.tar.*; do for pkgfile in "$copydir"/pkgdest/*.pkg.tar.?z; do
if $add_to_db; then if $add_to_db; then
mkdir -p "$copydir/repo" mkdir -p "$copydir/repo"
pushd "$copydir/repo" >/dev/null pushd "$copydir/repo" >/dev/null
@@ -294,7 +299,7 @@ if mkarchroot -r "/chrootbuild" "$copydir"; then
mv "$pkgfile" "$PKGDEST" mv "$pkgfile" "$PKGDEST"
done done
for l in "$copydir"/build/{namcap,*-{build,check,package,package_*}}.log; do for l in "$copydir"/build/*-{build,check,namcap,package,package_*}.log; do
[[ -f $l ]] && mv "$l" . [[ -f $l ]] && mv "$l" .
done done
else else

View File

@@ -47,34 +47,34 @@ while getopts 'r:ufnhC:M:c:' arg; do
esac esac
done done
if [ "$EUID" != '0' ]; then if (( $EUID != 0 )); then
die 'this script must be run as root.' die 'This script must be run as root.'
fi fi
shift $(($OPTIND - 1)) shift $(($OPTIND - 1))
if [ "$RUN" = '' -a $# -lt 2 ]; then if [[ -z $RUN ]] && (( $# < 2 )); then
die 'you must specify a directory and one or more packages' die 'You must specify a directory and one or more packages.'
elif [ $# -lt 1 ]; then elif (( $# < 1 )); then
die 'you must specify a directory' die 'You must specify a directory.'
fi fi
working_dir="$(readlink -f ${1})" working_dir="$(readlink -f ${1})"
shift 1 shift 1
[ "${working_dir}" = '' ] && die 'please specify a working directory' [[ -z $working_dir ]] && die 'Please specify a working directory.'
if [ -z "$cache_dir" ]; then if [[ -z $cache_dir ]]; then
cache_conf=${working_dir}/etc/pacman.conf cache_conf=${working_dir}/etc/pacman.conf
[ ! -f $cache_conf ] && cache_conf=${pac_conf:-/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*//') cache_dir=$( (grep -m 1 '^CacheDir' $cache_conf || echo 'CacheDir = /var/cache/pacman/pkg') | sed 's/CacheDir\s*=\s*//')
unset cache_conf unset cache_conf
fi fi
if [ -f /etc/pacman.d/mirrorlist ]; then if [[ -f /etc/pacman.d/mirrorlist ]]; then
host_mirror=$(pacman -Sddp 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 fi
if [ -z "${host_mirror}" ]; then if [[ -z $host_mirror ]]; then
host_mirror='http://mirrors.kernel.org/archlinux/$repo/os/$arch' host_mirror='http://mirrors.kernel.org/archlinux/$repo/os/$arch'
fi fi
if echo "${host_mirror}" | grep -q 'file://'; then if echo "${host_mirror}" | grep -q 'file://'; then
@@ -83,13 +83,13 @@ 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"
[ -e "${working_dir}/proc" ] || mkdir "${working_dir}/proc" [[ -e "${working_dir}/proc" ]] || mkdir "${working_dir}/proc"
mount -t proc proc "${working_dir}/proc" mount -t proc proc "${working_dir}/proc"
[ -e "${working_dir}/dev" ] || mkdir "${working_dir}/dev" [[ -e "${working_dir}/dev" ]] || mkdir "${working_dir}/dev"
mount -t tmpfs dev "${working_dir}/dev" -o mode=0755,size=10M,nosuid mount -t tmpfs dev "${working_dir}/dev" -o mode=0755,size=10M,nosuid
mknod -m 666 "${working_dir}/dev/null" c 1 3 mknod -m 666 "${working_dir}/dev/null" c 1 3
mknod -m 666 "${working_dir}/dev/zero" c 1 5 mknod -m 666 "${working_dir}/dev/zero" c 1 5
@@ -105,19 +105,19 @@ chroot_mount() {
ln -s /proc/self/fd/1 "${working_dir}/dev/stdout" ln -s /proc/self/fd/1 "${working_dir}/dev/stdout"
ln -s /proc/self/fd/2 "${working_dir}/dev/stderr" ln -s /proc/self/fd/2 "${working_dir}/dev/stderr"
[ -e "${working_dir}/dev/shm" ] || mkdir "${working_dir}/dev/shm" [[ -e "${working_dir}/dev/shm" ]] || mkdir "${working_dir}/dev/shm"
mount -t tmpfs shm "${working_dir}/dev/shm" -o nodev,nosuid,size=128M mount -t tmpfs shm "${working_dir}/dev/shm" -o nodev,nosuid,size=128M
[ -e "${working_dir}/dev/pts" ] || mkdir "${working_dir}/dev/pts" [[ -e "${working_dir}/dev/pts" ]] || mkdir "${working_dir}/dev/pts"
mount -t devpts devpts "${working_dir}/dev/pts" -o newinstance,ptmxmode=666 mount -t devpts devpts "${working_dir}/dev/pts" -o newinstance,ptmxmode=666
ln -s pts/ptmx "${working_dir}/dev/ptmx" ln -s pts/ptmx "${working_dir}/dev/ptmx"
[ -e "${cache_dir}" ] || mkdir -p "${cache_dir}" [[ -e $cache_dir ]] || mkdir -p "${cache_dir}"
[ -e "${working_dir}/${cache_dir}" ] || mkdir -p "${working_dir}/${cache_dir}" [[ -e "${working_dir}/${cache_dir}" ]] || mkdir -p "${working_dir}/${cache_dir}"
mount -o bind "${cache_dir}" "${working_dir}/${cache_dir}" mount -o bind "${cache_dir}" "${working_dir}/${cache_dir}"
if [ -n "${host_mirror_path}" ]; then if [[ -n $host_mirror_path ]]; then
[ -e "${working_dir}/${host_mirror_path}" ] || mkdir -p "${working_dir}/${host_mirror_path}" [[ -e "${working_dir}/${host_mirror_path}" ]] || mkdir -p "${working_dir}/${host_mirror_path}"
mount -o bind "${host_mirror_path}" "${working_dir}/${host_mirror_path}" mount -o bind "${host_mirror_path}" "${working_dir}/${host_mirror_path}"
mount -o remount,ro,bind "${host_mirror_path}" "${working_dir}/${host_mirror_path}" mount -o remount,ro,bind "${host_mirror_path}" "${working_dir}/${host_mirror_path}"
fi fi
@@ -126,9 +126,16 @@ chroot_mount() {
} }
copy_hostconf () { copy_hostconf () {
chroot "${working_dir}" /bin/findmnt -rnu -o SOURCE,TARGET,FSTYPE,OPTIONS > "${working_dir}/etc/mtab"
cp /etc/resolv.conf "${working_dir}/etc/resolv.conf" cp /etc/resolv.conf "${working_dir}/etc/resolv.conf"
echo "Server = ${host_mirror}" > ${working_dir}/etc/pacman.d/mirrorlist echo "Server = ${host_mirror}" > ${working_dir}/etc/pacman.d/mirrorlist
if [[ -n $pac_conf && $NOCOPY = 'n' ]]; then
cp ${pac_conf} ${working_dir}/etc/pacman.conf
fi
if [[ -n $makepkg_conf && $NOCOPY = 'n' ]]; then
cp ${makepkg_conf} ${working_dir}/etc/makepkg.conf
fi
} }
chroot_umount () { chroot_umount () {
@@ -138,18 +145,18 @@ chroot_umount () {
umount "${working_dir}/dev/shm" umount "${working_dir}/dev/shm"
umount "${working_dir}/dev" umount "${working_dir}/dev"
umount "${working_dir}/${cache_dir}" umount "${working_dir}/${cache_dir}"
[ -n "${host_mirror_path}" ] && umount "${working_dir}/${host_mirror_path}" [[ -n $host_mirror_path ]] && umount "${working_dir}/${host_mirror_path}"
} }
chroot_lock () { chroot_lock () {
# Only reopen the FD if it wasn't handed to us # Only reopen the FD if it wasn't handed to us
if [ "$(readlink -f /dev/fd/9)" != "${working_dir}.lock" ]; then if [[ $(readlink -f /dev/fd/9) != "${working_dir}.lock" ]]; then
exec 9>"${working_dir}.lock" exec 9>"${working_dir}.lock"
fi fi
# Lock the chroot. Take note of the FD number. # Lock the chroot. Take note of the FD number.
if ! flock -n 9; then if ! flock -n 9; then
stat_busy "locking chroot" stat_busy "Locking chroot"
flock 9 flock 9
stat_done stat_done
fi fi
@@ -157,11 +164,11 @@ chroot_lock () {
# }}} # }}}
umask 0022 umask 0022
if [ "$RUN" != "" ]; then if [[ -n $RUN ]]; then
# run chroot {{{ # run chroot {{{
#Sanity check #Sanity check
if [ ! -f "${working_dir}/.arch-chroot" ]; then if [[ ! -f "${working_dir}/.arch-chroot" ]]; then
die "'${working_dir}' does not appear to be a Arch chroot" die "'${working_dir}' does not appear to be a Arch chroot."
fi fi
chroot_lock chroot_lock
@@ -173,8 +180,8 @@ if [ "$RUN" != "" ]; then
# }}} # }}}
else else
# {{{ build chroot # {{{ build chroot
if [ -e "${working_dir}" -a "${FORCE}" = "n" ]; then if [[ -e $working_dir && $FORCE = 'n' ]]; then
die "working dir '${working_dir}' already exists - try using -f" die "Working directory '${working_dir}' already exists - try using -f"
fi fi
if { type -P btrfs && btrfs subvolume create "${working_dir}"; } &>/dev/null; then if { type -P btrfs && btrfs subvolume create "${working_dir}"; } &>/dev/null; then
@@ -188,38 +195,32 @@ else
chroot_mount chroot_mount
pacargs="--noconfirm --root=${working_dir} --cachedir=${cache_dir}" pacargs="--noconfirm --root=${working_dir} --cachedir=${cache_dir}"
if [ "$pac_conf" != "" ]; then if [[ -n $pac_conf ]]; then
pacargs="$pacargs --config=${pac_conf}" pacargs="$pacargs --config=${pac_conf}"
fi fi
if [ $# -ne 0 ]; then if (( $# != 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
die 'failed to install all packages' die 'Failed to install all packages'
fi fi
fi fi
if [ -d "${working_dir}/lib/modules" ]; then if [[ -d "${working_dir}/lib/modules" ]]; then
ldconfig -r "${working_dir}" ldconfig -r "${working_dir}"
fi fi
if [ "$pac_conf" != "" -a "$NOCOPY" = "n" ]; then if [[ -e "${working_dir}/etc/locale.gen" ]]; then
cp ${pac_conf} ${working_dir}/etc/pacman.conf
fi
if [ "$makepkg_conf" != "" -a "$NOCOPY" = "n" ]; then
cp ${makepkg_conf} ${working_dir}/etc/makepkg.conf
fi
if [ -e "${working_dir}/etc/locale.gen" ]; then
sed -i 's@^#\(en_US\|de_DE\)\(\.UTF-8\)@\1\2@' "${working_dir}/etc/locale.gen" sed -i 's@^#\(en_US\|de_DE\)\(\.UTF-8\)@\1\2@' "${working_dir}/etc/locale.gen"
chroot "${working_dir}" /usr/sbin/locale-gen chroot "${working_dir}" /usr/sbin/locale-gen
fi fi
if [ ! -e "${working_dir}/.arch-chroot" ]; then copy_hostconf
if [[ ! -e "${working_dir}/.arch-chroot" ]]; then
date +%s > "${working_dir}/.arch-chroot" date +%s > "${working_dir}/.arch-chroot"
fi fi
# }}} # }}}

View File

@@ -47,7 +47,7 @@ Architecture = auto
# the following line. This will treat any key imported into pacman's keyring as # the following line. This will treat any key imported into pacman's keyring as
# trusted. # trusted.
#SigLevel = Optional TrustAll #SigLevel = Optional TrustAll
# Disable signature checks for now # For now, off by default unless you read the above.
SigLevel = Never SigLevel = Never
# #

View File

@@ -0,0 +1,99 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
HoldPkg = pacman glibc
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
#UseDelta
#TotalDownload
# We cannot check disk space from within a chroot environment
#CheckSpace
#VerbosePkgLists
# PGP signature checking
# NOTE: None of this will work without running `pacman-key --init` first.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as
# trusted.
#SigLevel = Optional TrustAll
# For now, off by default unless you read the above.
SigLevel = Never
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[gnome-unstable]
Include = /etc/pacman.d/mirrorlist
[testing]
Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[community-testing]
Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs

99
pacman-kde-unstable.conf Normal file
View File

@@ -0,0 +1,99 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
HoldPkg = pacman glibc
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
#UseDelta
#TotalDownload
# We cannot check disk space from within a chroot environment
#CheckSpace
#VerbosePkgLists
# PGP signature checking
# NOTE: None of this will work without running `pacman-key --init` first.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as
# trusted.
#SigLevel = Optional TrustAll
# For now, off by default unless you read the above.
SigLevel = Never
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[kde-unstable]
Include = /etc/pacman.d/mirrorlist
[testing]
Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[community-testing]
Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs

View File

@@ -0,0 +1,113 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
HoldPkg = pacman glibc
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
#UseDelta
#TotalDownload
# We cannot check disk space from within a chroot environment
#CheckSpace
#VerbosePkgLists
# PGP signature checking
# NOTE: None of this will work without running `pacman-key --init` first.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as
# trusted.
#SigLevel = Optional TrustAll
# For now, off by default unless you read the above.
SigLevel = Never
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[staging]
Include = /etc/pacman.d/mirrorlist
[testing]
Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[community-staging]
Include = /etc/pacman.d/mirrorlist
[community-testing]
Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repository here.
[multilib-staging]
Include = /etc/pacman.d/mirrorlist
[multilib-testing]
#SigLevel = Optional TrustAll
Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#Server = file:///home/custompkgs

View File

@@ -47,7 +47,7 @@ Architecture = auto
# the following line. This will treat any key imported into pacman's keyring as # the following line. This will treat any key imported into pacman's keyring as
# trusted. # trusted.
#SigLevel = Optional TrustAll #SigLevel = Optional TrustAll
# Disable signature checks for now # For now, off by default unless you read the above.
SigLevel = Never SigLevel = Never
# #

View File

@@ -47,7 +47,7 @@ Architecture = auto
# the following line. This will treat any key imported into pacman's keyring as # the following line. This will treat any key imported into pacman's keyring as
# trusted. # trusted.
#SigLevel = Optional TrustAll #SigLevel = Optional TrustAll
# Disable signature checks for now # For now, off by default unless you read the above.
SigLevel = Never SigLevel = Never
# #

View File

@@ -47,7 +47,7 @@ Architecture = auto
# the following line. This will treat any key imported into pacman's keyring as # the following line. This will treat any key imported into pacman's keyring as
# trusted. # trusted.
#SigLevel = Optional TrustAll #SigLevel = Optional TrustAll
# Disable signature checks for now # For now, off by default unless you read the above.
SigLevel = Never SigLevel = Never
# #

View File

@@ -47,7 +47,7 @@ Architecture = auto
# the following line. This will treat any key imported into pacman's keyring as # the following line. This will treat any key imported into pacman's keyring as
# trusted. # trusted.
#SigLevel = Optional TrustAll #SigLevel = Optional TrustAll
# Disable signature checks for now # For now, off by default unless you read the above.
SigLevel = Never SigLevel = Never
# #

View File

@@ -11,14 +11,14 @@
m4_include(lib/common.sh) m4_include(lib/common.sh)
if [ $# -le 1 ]; then if (( $# < 1 )); then
echo "usage: $(basename $0) <chrootdir> <packages to rebuild>" echo "usage: $(basename $0) <chrootdir> <packages to rebuild>"
echo " example: $(basename $0) ~/chroot readline bash foo bar baz" echo " example: $(basename $0) ~/chroot readline bash foo bar baz"
exit 1 exit 1
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
die '/etc/makepkg.conf not found!' die '/etc/makepkg.conf not found!'
@@ -63,7 +63,7 @@ for pkg in $pkgs; do
msg2 "Building '$pkg'" msg2 "Building '$pkg'"
/usr/bin/svn update "$pkg" /usr/bin/svn update "$pkg"
if [ ! -d "$pkg/trunk" ]; then if [[ ! -d "$pkg/trunk" ]]; then
FAILED="$FAILED $pkg" FAILED="$FAILED $pkg"
warning "$pkg does not exist in SVN" warning "$pkg does not exist in SVN"
continue continue
@@ -77,7 +77,7 @@ for pkg in $pkgs; do
error "$pkg Failed!" error "$pkg Failed!"
else else
pkgfile=$(pkg_from_pkgbuild) pkgfile=$(pkg_from_pkgbuild)
if [ -e "$pkgfile" ]; then if [[ -e $pkgfile ]]; then
msg2 "$pkg Complete" msg2 "$pkg Complete"
else else
FAILED="$FAILED $pkg" FAILED="$FAILED $pkg"
@@ -87,7 +87,7 @@ for pkg in $pkgs; do
done done
cd "$REBUILD_ROOT" cd "$REBUILD_ROOT"
if [ "$FAILED" != "" ]; then if [[ -n $FAILED ]]; then
msg 'Packages failed:' msg 'Packages failed:'
for pkg in $FAILED; do for pkg in $FAILED; do
msg2 "$pkg" msg2 "$pkg"

View File

@@ -1,4 +1,4 @@
#compdef archbuild archco archrelease archrm commitpkg finddeps makechrootpkg mkarchroot rebuildpkgs extrapkg=commitpkg corepkg=commitpkg testingpkg=commitpkg stagingpkg=commitpkg communitypkg=commitpkg community-testingpkg=commitpkg community-stagingpkg=commitpkg multilibpkg=commitpkg multilib-testingpkg=commitpkg extra-i686-build=archbuild extra-x86_64-build=archbuild testing-i686-build=archbuild testing-x86_64-build=archbuild staging-i686-build=archbuild staging-x86_64-build=archbuild multilib-build=archbuild multilib-testing-build=archbuild communityco=archco #compdef archbuild archco archrelease archrm commitpkg finddeps makechrootpkg mkarchroot rebuildpkgs extrapkg=commitpkg corepkg=commitpkg testingpkg=commitpkg stagingpkg=commitpkg communitypkg=commitpkg community-testingpkg=commitpkg community-stagingpkg=commitpkg multilibpkg=commitpkg multilib-testingpkg=commitpkg extra-i686-build=archbuild extra-x86_64-build=archbuild testing-i686-build=archbuild testing-x86_64-build=archbuild staging-i686-build=archbuild staging-x86_64-build=archbuild multilib-build=archbuild multilib-testing-build=archbuild multilib-staging-build=archbuild kde-unstable-i686-build=archbuild kde-unstable-x86_64-build=archbuild gnome-unstable-i686-build=archbuild gnome-unstable-x86_64-build=archbuild communityco=archco
_arch=(i686 x86_64 any) _arch=(i686 x86_64 any)
@@ -9,9 +9,12 @@ _tags=(
staging-i686 staging-x86_64 staging-any staging-i686 staging-x86_64 staging-any
testing-i686 testing-x86_64 testing-any testing-i686 testing-x86_64 testing-any
multilib-testing-i686 multilib-testing-x86_64 multilib-testing-any multilib-testing-i686 multilib-testing-x86_64 multilib-testing-any
multilib-staging-i686 multilib-staging-x86_64 multilib-staging-any
community-i686 community-x86_64 community-any community-i686 community-x86_64 community-any
community-staging-i686 community-staging-x86_64 community-staging-any community-staging-i686 community-staging-x86_64 community-staging-any
community-testing-i686 community-testing-x86_64 community-testing-any community-testing-i686 community-testing-x86_64 community-testing-any
kde-unstable-i686 kde-unstable-x86_64 kde-unstable-any
gnome-unstable-i686 gnome-unstable-x86_64 gnome-unstable-any
) )
_archbuild_args=( _archbuild_args=(