mirror of
				https://gitlab.archlinux.org/archlinux/devtools.git
				synced 2025-11-04 01:34:42 +01:00 
			
		
		
		
	Compare commits
	
		
			14 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					9840730880 | ||
| 
						 | 
					502813a107 | ||
| 
						 | 
					181646d03b | ||
| 
						 | 
					2d9a99ee15 | ||
| 
						 | 
					cecd257786 | ||
| 
						 | 
					82dcc19ff9 | ||
| 
						 | 
					c5893672a6 | ||
| 
						 | 
					73d61f43c7 | ||
| 
						 | 
					afc93f3430 | ||
| 
						 | 
					9ab0d94578 | ||
| 
						 | 
					5e8cb67603 | ||
| 
						 | 
					65365f1853 | ||
| 
						 | 
					06a681ca3d | ||
| 
						 | 
					b763788b16 | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -14,3 +14,4 @@ mkarchroot
 | 
			
		||||
rebuildpkgs
 | 
			
		||||
zsh_completion
 | 
			
		||||
find-libdeps
 | 
			
		||||
crossrepomove
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
V=20120119
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,32 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
m4_include(lib/common.sh)
 | 
			
		||||
m4_include(lib/valid-tags.sh)
 | 
			
		||||
 | 
			
		||||
if [[ -z $1 ]]; then
 | 
			
		||||
	echo 'Usage: archrelease <repo>...'
 | 
			
		||||
# parse command line options
 | 
			
		||||
FORCE=
 | 
			
		||||
while getopts ':f' flag; do
 | 
			
		||||
	case $flag in
 | 
			
		||||
		f) FORCE=1 ;;
 | 
			
		||||
		:) die "Option requires an argument -- '$OPTARG'" ;;
 | 
			
		||||
		\?) die "Invalid option -- '$OPTARG'" ;;
 | 
			
		||||
	esac
 | 
			
		||||
done
 | 
			
		||||
shift $(( OPTIND - 1 ))
 | 
			
		||||
 | 
			
		||||
if ! (( $# )); then
 | 
			
		||||
	echo 'Usage: archrelease [-f] <repo>...'
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# TODO: validate repo is really repo-arch
 | 
			
		||||
# validate repo is really repo-arch
 | 
			
		||||
if [[ -z $FORCE ]]; then
 | 
			
		||||
	for tag in "$@"; do
 | 
			
		||||
		if ! in_array "$tag" "${_tags[@]}"; then
 | 
			
		||||
			die 'archrelease: Invalid tag: "'$tag'" (use -f to force release)'
 | 
			
		||||
		fi
 | 
			
		||||
	done
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ ! -f PKGBUILD ]]; then
 | 
			
		||||
	die 'archrelease: PKGBUILD not found'
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										62
									
								
								commitpkg.in
									
									
									
									
									
								
							
							
						
						
									
										62
									
								
								commitpkg.in
									
									
									
									
									
								
							@@ -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
 | 
			
		||||
@@ -135,7 +139,7 @@ for _arch in ${arch[@]}; do
 | 
			
		||||
		fullver=$(get_full_version $_pkgname)
 | 
			
		||||
 | 
			
		||||
		if ! pkgfile=$(shopt -s nullglob;
 | 
			
		||||
				getpkgfile "${DESTDIR+$DESTDIR/}$_pkgname-$fullver-${_arch}".pkg.tar.?z); then
 | 
			
		||||
				getpkgfile "${PKGDEST+$PKGDEST/}$_pkgname-$fullver-${_arch}".pkg.tar.?z); then
 | 
			
		||||
			warning "Skipping $_pkgname-$fullver-$_arch: failed to locate package file"
 | 
			
		||||
			skip_arches+=($_arch)
 | 
			
		||||
			continue 2
 | 
			
		||||
@@ -143,21 +147,17 @@ for _arch in ${arch[@]}; do
 | 
			
		||||
		uploads+=("$pkgfile")
 | 
			
		||||
 | 
			
		||||
		sigfile="${pkgfile}.sig"
 | 
			
		||||
		if [[ $SIGNPKG == 'y' && ! -f $sigfile ]]; then
 | 
			
		||||
		if [[ ! -f $sigfile ]]; then
 | 
			
		||||
			msg "Signing package ${pkgfile}..."
 | 
			
		||||
			if [[ -n $GPGKEY ]]; then
 | 
			
		||||
				SIGNWITHKEY="-u ${GPGKEY}"
 | 
			
		||||
			fi
 | 
			
		||||
			gpg --detach-sign --use-agent ${SIGNWITHKEY} "${pkgfile}" || die
 | 
			
		||||
		fi
 | 
			
		||||
		if [[ -f $sigfile ]]; then
 | 
			
		||||
			if ! gpg --verify "$sigfile" >/dev/null 2>&1; then
 | 
			
		||||
				die "Signature ${pkgfile}.sig is incorrect!"
 | 
			
		||||
			fi
 | 
			
		||||
			uploads+=("$sigfile")
 | 
			
		||||
		else
 | 
			
		||||
			die "Signature ${pkgfile}.sig was not found"
 | 
			
		||||
		if ! gpg --verify "$sigfile" >/dev/null 2>&1; then
 | 
			
		||||
			die "Signature ${pkgfile}.sig is incorrect!"
 | 
			
		||||
		fi
 | 
			
		||||
		uploads+=("$sigfile")
 | 
			
		||||
	done
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
@@ -166,7 +166,17 @@ for _arch in ${arch[@]}; do
 | 
			
		||||
		commit_arches+=($_arch)
 | 
			
		||||
	fi
 | 
			
		||||
done
 | 
			
		||||
archrelease "${commit_arches[@]/#/$repo-}" || die
 | 
			
		||||
archrelease "${archreleaseopts[@]}" "${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
 | 
			
		||||
	msg 'Uploading all package and signature files'
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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)
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								lib/valid-tags.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								lib/valid-tags.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
_arch=(
 | 
			
		||||
	i686
 | 
			
		||||
	x86_64
 | 
			
		||||
	any
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
_tags=(
 | 
			
		||||
	core-i686 core-x86_64 core-any
 | 
			
		||||
	extra-i686 extra-x86_64 extra-any
 | 
			
		||||
	multilib-x86_64
 | 
			
		||||
	staging-i686 staging-x86_64 staging-any
 | 
			
		||||
	testing-i686 testing-x86_64 testing-any
 | 
			
		||||
	multilib-testing-x86_64
 | 
			
		||||
	multilib-staging-x86_64
 | 
			
		||||
	community-i686 community-x86_64 community-any
 | 
			
		||||
	community-staging-i686 community-staging-x86_64 community-staging-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
 | 
			
		||||
)
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -1,21 +1,6 @@
 | 
			
		||||
#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)
 | 
			
		||||
 | 
			
		||||
_tags=(
 | 
			
		||||
	core-i686 core-x86_64 core-any
 | 
			
		||||
	extra-i686 extra-x86_64 extra-any
 | 
			
		||||
	multilib-i686 multilib-x86_64 multilib-any
 | 
			
		||||
	staging-i686 staging-x86_64 staging-any
 | 
			
		||||
	testing-i686 testing-x86_64 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-staging-i686 community-staging-x86_64 community-staging-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
 | 
			
		||||
)
 | 
			
		||||
m4_include(lib/valid-tags.sh)
 | 
			
		||||
 | 
			
		||||
_archbuild_args=(
 | 
			
		||||
	'-c[Recreate the chroot before building]'
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user