Compare commits

...

7 Commits

Author SHA1 Message Date
Pierre Schmitz
9840730880 Prepare release 2012-03-05 18:02:22 +01:00
Pierre Schmitz
502813a107 commitpkg: Pass through the -f parameter to archrelease so unofficial repos can be used 2012-03-05 16:48:19 +01:00
Pierre Schmitz
181646d03b makechrootpkg: Install the built packages before running namcap to reduce false positives and check inter split package dependencies. 2012-03-05 16:28:09 +01:00
Gerardo Exequiel Pozzi
2d9a99ee15 Add -d param to optionally support devtmpfs
The main intention of this patch is to take advantage of
/dev/loop-control and loop devices.

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-03-05 14:30:26 +01:00
Pierre Schmitz
cecd257786 Add script to move packages between [extra] and [community] 2012-03-05 01:48:27 +01:00
Pierre Schmitz
82dcc19ff9 commitpkg: Add ability to override the server
This might be useful for unofficial repos
2012-03-04 22:38:07 +01:00
Florian Pritz
c5893672a6 find-libdeps: fix extraction of soname
libperl.so results in soname="libperl.so.so" which is wrong.

This returns the correct string: "libperl.so"

Fix-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-03-04 22:25:22 +01:00
7 changed files with 142 additions and 36 deletions

1
.gitignore vendored
View File

@@ -14,3 +14,4 @@ mkarchroot
rebuildpkgs
zsh_completion
find-libdeps
crossrepomove

View File

@@ -1,4 +1,4 @@
V=20120215
V=20120305
PREFIX = /usr/local
@@ -12,7 +12,8 @@ BINPROGS = \
lddd \
finddeps \
rebuildpkgs \
find-libdeps
find-libdeps \
crossrepomove
SBINPROGS = \
mkarchroot \
@@ -59,6 +60,10 @@ ARCHBUILD_LINKS = \
gnome-unstable-i686-build \
gnome-unstable-x86_64-build
CROSSREPOMOVE_LINKS = \
extra2community \
community2extra
all: $(BINPROGS) $(SBINPROGS) bash_completion zsh_completion
edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g"
@@ -82,6 +87,7 @@ install:
install -m0644 ${CONFIGFILES} $(DESTDIR)$(PREFIX)/share/devtools
for l in ${COMMITPKG_LINKS}; do ln -sf commitpkg $(DESTDIR)$(PREFIX)/bin/$$l; done
for l in ${ARCHBUILD_LINKS}; do ln -sf archbuild $(DESTDIR)$(PREFIX)/bin/$$l; done
for l in ${CROSSREPOMOVE_LINKS}; do ln -sf crossrepomove $(DESTDIR)$(PREFIX)/bin/$$l; done
ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
install -Dm0644 bash_completion $(DESTDIR)/etc/bash_completion.d/devtools
install -Dm0644 zsh_completion $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools
@@ -93,6 +99,7 @@ uninstall:
for f in ${CONFIGFILES}; do rm -f $(DESTDIR)$(PREFIX)/share/devtools/$$f; done
for l in ${COMMITPKG_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
for l in ${ARCHBUILD_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
for l in ${CROSSREPOMOVE_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
rm $(DESTDIR)/etc/bash_completion.d/devtools
rm $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools
rm -f $(DESTDIR)$(PREFIX)/bin/communityco

View File

@@ -42,7 +42,7 @@ pkgbase=${pkgbase:-$pkgname}
case "$cmd" in
commitpkg)
if (( $# == 0 )); then
die 'usage: commitpkg <reponame> [-l limit] [-a arch] [commit message]'
die 'usage: commitpkg <reponame> [-f] [-s server] [-l limit] [-a arch] [commit message]'
fi
repo="$1"
shift
@@ -51,20 +51,10 @@ case "$cmd" in
repo="${cmd%pkg}"
;;
*)
die 'usage: commitpkg <reponame> [-l limit] [-a arch] [commit message]'
die 'usage: commitpkg <reponame> [-f] [-s server] [-l limit] [-a arch] [commit message]'
;;
esac
case "$repo" in
core|extra|testing|staging|kde-unstable|gnome-unstable)
server='gerolde.archlinux.org' ;;
community*|multilib*)
server='aur.archlinux.org' ;;
*)
server='gerolde.archlinux.org'
msg "Non-standard repository $repo in use, defaulting to server $server" ;;
esac
# check if all local source files are under version control
for s in "${source[@]}"; do
if [[ $s != *://* ]] && ! svn status -v "$s" | grep -q '^[ AMRX~]'; then
@@ -83,18 +73,32 @@ for i in 'changelog' 'install'; do
done < <(sed -n "s/^[[:space:]]*$i=//p" PKGBUILD)
done
# see if any limit options were passed, we'll send them to rsync
rsyncopts=(-e ssh -p --chmod=ug=rw,o=r -c -h -L --progress --partial -y)
while getopts ':l:a:' flag; do
archreleaseopts=()
while getopts ':l:a:s:f' flag; do
case $flag in
l) rsyncopts+=("--bwlimit=$2") ;;
a) commit_arch=$2 ;;
f) archreleaseopts+=('-f') ;;
s) server=$OPTARG ;;
l) rsyncopts+=("--bwlimit=$OPTARG") ;;
a) commit_arch=$OPTARG ;;
:) die "Option requires an argument -- '$OPTARG'" ;;
\?) die "Invalid option -- '$OPTARG'" ;;
esac
done
shift $(( OPTIND - 1 ))
if [[ -z $server ]]; then
case "$repo" in
core|extra|testing|staging|kde-unstable|gnome-unstable)
server='gerolde.archlinux.org' ;;
community*|multilib*)
server='aur.archlinux.org' ;;
*)
server='gerolde.archlinux.org'
msg "Non-standard repository $repo in use, defaulting to server $server" ;;
esac
fi
if [[ -n $(svn status -q) ]]; then
msgtemplate="upgpkg: $pkgbase $(get_full_version)"$'\n\n'
if [[ -n $1 ]]; then
@@ -162,7 +166,7 @@ for _arch in ${arch[@]}; do
commit_arches+=($_arch)
fi
done
archrelease "${commit_arches[@]/#/$repo-}" || die
archrelease "${archreleaseopts[@]}" "${commit_arches[@]/#/$repo-}" || die
new_uploads=()

86
crossrepomove.in Normal file
View File

@@ -0,0 +1,86 @@
#!/bin/bash
m4_include(lib/common.sh)
scriptname=${0##*/}
if [[ -z $1 ]]; then
echo 'Usage: '$scriptname' [pkgbase]'
exit 1
fi
pkgbase="${1}"
packages_svn='svn+ssh://gerolde.archlinux.org/srv/svn-packages'
packages_server='gerolde.archlinux.org'
community_svn='svn+ssh://aur.archlinux.org/srv/svn-packages'
community_server='aur.archlinux.org'
mirror='http://mirrors.kernel.org/archlinux'
case $scriptname in
extra2community)
source_svn="${packages_svn}"
target_svn="${community_svn}"
source_server="${packages_server}"
target_server="${community_server}"
source_repo='extra'
target_repo='community'
;;
community2extra)
source_svn="${community_svn}"
target_svn="${packages_svn}"
source_server="${community_server}"
target_server="${packages_server}"
source_repo='community'
target_repo='extra'
;;
*)
die "Couldn't find configuration for $scriptname"
;;
esac
setup_workdir
pushd $WORKDIR >/dev/null
msg "Downloading sources for ${pkgbase}"
svn -q checkout -N "${target_svn}" target_checkout
mkdir -p "target_checkout/${pkgbase}/repos"
svn -q export "${source_svn}/${pkgbase}/trunk" "target_checkout/${pkgbase}/trunk" || die
. "target_checkout/${pkgbase}/trunk/PKGBUILD"
msg "Downloading packages for ${pkgbase}"
for _arch in ${arch[@]}; do
if [[ "${_arch[*]}" == 'any' ]]; then
repo_arch='x86_64'
else
repo_arch=${_arch}
fi
for _pkgname in ${pkgname[@]}; do
fullver=$(get_full_version $_pkgname)
# FIXME: this only works with .xz packages
ssh "${target_server}" "cd staging/${target_repo}
curl -O ${mirror}/${source_repo}/os/${repo_arch}/$_pkgname-$fullver-${_arch}.pkg.tar.xz
curl -O ${mirror}/${source_repo}/os/${repo_arch}/$_pkgname-$fullver-${_arch}.pkg.tar.xz.sig" || die
done
done
msg "Adding ${pkgbase} to ${target_repo}"
svn -q add "target_checkout/${pkgbase}"
svn -q propset svn:keywords 'Id' "target_checkout/${pkgbase}/trunk/PKGBUILD"
svn -q commit -m"${scriptname}: Moving ${pkgbase} from ${source_repo} to ${target_repo}" target_checkout
pushd "target_checkout/${pkgbase}/trunk" >/dev/null
archrelease "${arch[@]/#/$target_repo-}" || die
popd >/dev/null
ssh "${target_server}" '/arch/db-update' || die
msg "Removing ${pkgbase} from ${source_repo}"
for _arch in ${arch[@]}; do
ssh "${source_server}" "/arch/db-remove ${source_repo} ${_arch} ${pkgbase}"
done
svn -q checkout -N "${source_svn}" source_checkout
svn -q up "source_checkout/${pkgbase}"
svn -q rm "source_checkout/${pkgbase}"
svn -q commit -m"${scriptname}: Moving ${pkgbase} from ${source_repo} to ${target_repo}" source_checkout
popd >/dev/null

View File

@@ -3,6 +3,7 @@
m4_include(lib/common.sh)
set -e
shopt -s extglob
IGNORE_INTERNAL=0
@@ -40,7 +41,7 @@ fi
process_sofile() {
# extract the library name: libfoo.so
soname="${sofile%%\.so\.*}.so"
soname="${sofile%.so?(+(.+([0-9])))}".so
# extract the major version: 1
soversion="${sofile##*\.so\.}"
if [[ "$soversion" = "$sofile" ]] && (($IGNORE_INTERNAL)); then

View File

@@ -67,7 +67,7 @@ while getopts 'hcudr:I:l:n' arg; do
r) passeddir="$OPTARG" ;;
I) install_pkg="$OPTARG" ;;
l) copy="$OPTARG" ;;
n) run_namcap=true ;;
n) run_namcap=true; makepkg_args="$makepkg_args -i" ;;
*) makepkg_args="$makepkg_args -$arg $OPTARG" ;;
esac
done

View File

@@ -13,6 +13,7 @@ m4_include(lib/common.sh)
FORCE='n'
RUN=''
NOCOPY='n'
USE_DEVTMPFS='n'
working_dir=''
@@ -29,11 +30,12 @@ usage() {
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 ' -d Use devtmpfs instead of minimal /dev (tmpfs)'
echo ' -h This message'
exit 1
}
while getopts 'r:ufnhC:M:c:' arg; do
while getopts 'r:ufnhC:M:c:d' arg; do
case "${arg}" in
r) RUN="$OPTARG" ;;
u) RUN='/bin/sh -c "pacman -Syu --noconfirm && (pacman -Qqu >/dev/null && pacman -Su --noconfirm || exit 0)"' ;;
@@ -42,6 +44,7 @@ while getopts 'r:ufnhC:M:c:' arg; do
M) makepkg_conf="$OPTARG" ;;
n) NOCOPY='y' ;;
c) cache_dir="$OPTARG" ;;
d) USE_DEVTMPFS="y" ;;
h|?) usage 0 ;;
*) error "invalid argument '${arg}'"; usage ;;
esac
@@ -90,20 +93,24 @@ chroot_mount() {
mount -t proc proc "${working_dir}/proc"
[[ -e "${working_dir}/dev" ]] || mkdir "${working_dir}/dev"
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/zero" c 1 5
mknod -m 600 "${working_dir}/dev/console" c 5 1
mknod -m 644 "${working_dir}/dev/random" c 1 8
mknod -m 644 "${working_dir}/dev/urandom" c 1 9
mknod -m 666 "${working_dir}/dev/tty" c 5 0
mknod -m 666 "${working_dir}/dev/tty0" c 4 0
mknod -m 666 "${working_dir}/dev/full" c 1 7
ln -s /proc/kcore "${working_dir}/dev/core"
ln -s /proc/self/fd "${working_dir}/dev/fd"
ln -s /proc/self/fd/0 "${working_dir}/dev/stdin"
ln -s /proc/self/fd/1 "${working_dir}/dev/stdout"
ln -s /proc/self/fd/2 "${working_dir}/dev/stderr"
if [[ ${USE_DEVTMPFS} = "y" ]]; then
mount -t devtmpfs dev "${working_dir}/dev" -o mode=0755,nosuid
else
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/zero" c 1 5
mknod -m 600 "${working_dir}/dev/console" c 5 1
mknod -m 644 "${working_dir}/dev/random" c 1 8
mknod -m 644 "${working_dir}/dev/urandom" c 1 9
mknod -m 666 "${working_dir}/dev/tty" c 5 0
mknod -m 666 "${working_dir}/dev/tty0" c 4 0
mknod -m 666 "${working_dir}/dev/full" c 1 7
ln -s /proc/kcore "${working_dir}/dev/core"
ln -s /proc/self/fd "${working_dir}/dev/fd"
ln -s /proc/self/fd/0 "${working_dir}/dev/stdin"
ln -s /proc/self/fd/1 "${working_dir}/dev/stdout"
ln -s /proc/self/fd/2 "${working_dir}/dev/stderr"
fi
[[ -e "${working_dir}/dev/shm" ]] || mkdir "${working_dir}/dev/shm"
mount -t tmpfs shm "${working_dir}/dev/shm" -o nodev,nosuid,size=128M