mirror of
https://gitlab.archlinux.org/archlinux/devtools.git
synced 2025-09-14 10:26:18 +02:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9840730880 | ||
![]() |
502813a107 | ||
![]() |
181646d03b | ||
![]() |
2d9a99ee15 | ||
![]() |
cecd257786 | ||
![]() |
82dcc19ff9 | ||
![]() |
c5893672a6 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -14,3 +14,4 @@ mkarchroot
|
|||||||
rebuildpkgs
|
rebuildpkgs
|
||||||
zsh_completion
|
zsh_completion
|
||||||
find-libdeps
|
find-libdeps
|
||||||
|
crossrepomove
|
||||||
|
11
Makefile
11
Makefile
@@ -1,4 +1,4 @@
|
|||||||
V=20120215
|
V=20120305
|
||||||
|
|
||||||
PREFIX = /usr/local
|
PREFIX = /usr/local
|
||||||
|
|
||||||
@@ -12,7 +12,8 @@ BINPROGS = \
|
|||||||
lddd \
|
lddd \
|
||||||
finddeps \
|
finddeps \
|
||||||
rebuildpkgs \
|
rebuildpkgs \
|
||||||
find-libdeps
|
find-libdeps \
|
||||||
|
crossrepomove
|
||||||
|
|
||||||
SBINPROGS = \
|
SBINPROGS = \
|
||||||
mkarchroot \
|
mkarchroot \
|
||||||
@@ -59,6 +60,10 @@ ARCHBUILD_LINKS = \
|
|||||||
gnome-unstable-i686-build \
|
gnome-unstable-i686-build \
|
||||||
gnome-unstable-x86_64-build
|
gnome-unstable-x86_64-build
|
||||||
|
|
||||||
|
CROSSREPOMOVE_LINKS = \
|
||||||
|
extra2community \
|
||||||
|
community2extra
|
||||||
|
|
||||||
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"
|
||||||
@@ -82,6 +87,7 @@ install:
|
|||||||
install -m0644 ${CONFIGFILES} $(DESTDIR)$(PREFIX)/share/devtools
|
install -m0644 ${CONFIGFILES} $(DESTDIR)$(PREFIX)/share/devtools
|
||||||
for l in ${COMMITPKG_LINKS}; do ln -sf commitpkg $(DESTDIR)$(PREFIX)/bin/$$l; done
|
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 ${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
|
ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
|
||||||
install -Dm0644 bash_completion $(DESTDIR)/etc/bash_completion.d/devtools
|
install -Dm0644 bash_completion $(DESTDIR)/etc/bash_completion.d/devtools
|
||||||
install -Dm0644 zsh_completion $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_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 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 ${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 ${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)/etc/bash_completion.d/devtools
|
||||||
rm $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools
|
rm $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools
|
||||||
rm -f $(DESTDIR)$(PREFIX)/bin/communityco
|
rm -f $(DESTDIR)$(PREFIX)/bin/communityco
|
||||||
|
38
commitpkg.in
38
commitpkg.in
@@ -42,7 +42,7 @@ pkgbase=${pkgbase:-$pkgname}
|
|||||||
case "$cmd" in
|
case "$cmd" in
|
||||||
commitpkg)
|
commitpkg)
|
||||||
if (( $# == 0 )); then
|
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
|
fi
|
||||||
repo="$1"
|
repo="$1"
|
||||||
shift
|
shift
|
||||||
@@ -51,20 +51,10 @@ case "$cmd" in
|
|||||||
repo="${cmd%pkg}"
|
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
|
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
|
# check if all local source files are under version control
|
||||||
for s in "${source[@]}"; do
|
for s in "${source[@]}"; do
|
||||||
if [[ $s != *://* ]] && ! svn status -v "$s" | grep -q '^[ AMRX~]'; then
|
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 < <(sed -n "s/^[[:space:]]*$i=//p" PKGBUILD)
|
||||||
done
|
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)
|
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
|
case $flag in
|
||||||
l) rsyncopts+=("--bwlimit=$2") ;;
|
f) archreleaseopts+=('-f') ;;
|
||||||
a) commit_arch=$2 ;;
|
s) server=$OPTARG ;;
|
||||||
|
l) rsyncopts+=("--bwlimit=$OPTARG") ;;
|
||||||
|
a) commit_arch=$OPTARG ;;
|
||||||
:) 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 [[ -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
|
if [[ -n $(svn status -q) ]]; then
|
||||||
msgtemplate="upgpkg: $pkgbase $(get_full_version)"$'\n\n'
|
msgtemplate="upgpkg: $pkgbase $(get_full_version)"$'\n\n'
|
||||||
if [[ -n $1 ]]; then
|
if [[ -n $1 ]]; then
|
||||||
@@ -162,7 +166,7 @@ for _arch in ${arch[@]}; do
|
|||||||
commit_arches+=($_arch)
|
commit_arches+=($_arch)
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
archrelease "${commit_arches[@]/#/$repo-}" || die
|
archrelease "${archreleaseopts[@]}" "${commit_arches[@]/#/$repo-}" || die
|
||||||
|
|
||||||
new_uploads=()
|
new_uploads=()
|
||||||
|
|
||||||
|
86
crossrepomove.in
Normal file
86
crossrepomove.in
Normal 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
|
@@ -3,6 +3,7 @@
|
|||||||
m4_include(lib/common.sh)
|
m4_include(lib/common.sh)
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
shopt -s extglob
|
||||||
|
|
||||||
IGNORE_INTERNAL=0
|
IGNORE_INTERNAL=0
|
||||||
|
|
||||||
@@ -40,7 +41,7 @@ fi
|
|||||||
|
|
||||||
process_sofile() {
|
process_sofile() {
|
||||||
# extract the library name: libfoo.so
|
# extract the library name: libfoo.so
|
||||||
soname="${sofile%%\.so\.*}.so"
|
soname="${sofile%.so?(+(.+([0-9])))}".so
|
||||||
# extract the major version: 1
|
# extract the major version: 1
|
||||||
soversion="${sofile##*\.so\.}"
|
soversion="${sofile##*\.so\.}"
|
||||||
if [[ "$soversion" = "$sofile" ]] && (($IGNORE_INTERNAL)); then
|
if [[ "$soversion" = "$sofile" ]] && (($IGNORE_INTERNAL)); then
|
||||||
|
@@ -67,7 +67,7 @@ while getopts 'hcudr:I:l:n' arg; do
|
|||||||
r) passeddir="$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; makepkg_args="$makepkg_args -i" ;;
|
||||||
*) makepkg_args="$makepkg_args -$arg $OPTARG" ;;
|
*) makepkg_args="$makepkg_args -$arg $OPTARG" ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
@@ -13,6 +13,7 @@ m4_include(lib/common.sh)
|
|||||||
FORCE='n'
|
FORCE='n'
|
||||||
RUN=''
|
RUN=''
|
||||||
NOCOPY='n'
|
NOCOPY='n'
|
||||||
|
USE_DEVTMPFS='n'
|
||||||
|
|
||||||
working_dir=''
|
working_dir=''
|
||||||
|
|
||||||
@@ -29,11 +30,12 @@ usage() {
|
|||||||
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: /var/cache/pacman/pkg'
|
echo ' -c <dir> Set pacman cache. Default: /var/cache/pacman/pkg'
|
||||||
|
echo ' -d Use devtmpfs instead of minimal /dev (tmpfs)'
|
||||||
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:d' arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
r) RUN="$OPTARG" ;;
|
r) RUN="$OPTARG" ;;
|
||||||
u) RUN='/bin/sh -c "pacman -Syu --noconfirm && (pacman -Qqu >/dev/null && pacman -Su --noconfirm || exit 0)"' ;;
|
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" ;;
|
M) makepkg_conf="$OPTARG" ;;
|
||||||
n) NOCOPY='y' ;;
|
n) NOCOPY='y' ;;
|
||||||
c) cache_dir="$OPTARG" ;;
|
c) cache_dir="$OPTARG" ;;
|
||||||
|
d) USE_DEVTMPFS="y" ;;
|
||||||
h|?) usage 0 ;;
|
h|?) usage 0 ;;
|
||||||
*) error "invalid argument '${arg}'"; usage ;;
|
*) error "invalid argument '${arg}'"; usage ;;
|
||||||
esac
|
esac
|
||||||
@@ -90,20 +93,24 @@ chroot_mount() {
|
|||||||
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
|
if [[ ${USE_DEVTMPFS} = "y" ]]; then
|
||||||
mknod -m 666 "${working_dir}/dev/null" c 1 3
|
mount -t devtmpfs dev "${working_dir}/dev" -o mode=0755,nosuid
|
||||||
mknod -m 666 "${working_dir}/dev/zero" c 1 5
|
else
|
||||||
mknod -m 600 "${working_dir}/dev/console" c 5 1
|
mount -t tmpfs dev "${working_dir}/dev" -o mode=0755,size=10M,nosuid
|
||||||
mknod -m 644 "${working_dir}/dev/random" c 1 8
|
mknod -m 666 "${working_dir}/dev/null" c 1 3
|
||||||
mknod -m 644 "${working_dir}/dev/urandom" c 1 9
|
mknod -m 666 "${working_dir}/dev/zero" c 1 5
|
||||||
mknod -m 666 "${working_dir}/dev/tty" c 5 0
|
mknod -m 600 "${working_dir}/dev/console" c 5 1
|
||||||
mknod -m 666 "${working_dir}/dev/tty0" c 4 0
|
mknod -m 644 "${working_dir}/dev/random" c 1 8
|
||||||
mknod -m 666 "${working_dir}/dev/full" c 1 7
|
mknod -m 644 "${working_dir}/dev/urandom" c 1 9
|
||||||
ln -s /proc/kcore "${working_dir}/dev/core"
|
mknod -m 666 "${working_dir}/dev/tty" c 5 0
|
||||||
ln -s /proc/self/fd "${working_dir}/dev/fd"
|
mknod -m 666 "${working_dir}/dev/tty0" c 4 0
|
||||||
ln -s /proc/self/fd/0 "${working_dir}/dev/stdin"
|
mknod -m 666 "${working_dir}/dev/full" c 1 7
|
||||||
ln -s /proc/self/fd/1 "${working_dir}/dev/stdout"
|
ln -s /proc/kcore "${working_dir}/dev/core"
|
||||||
ln -s /proc/self/fd/2 "${working_dir}/dev/stderr"
|
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"
|
[[ -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
|
||||||
|
Reference in New Issue
Block a user