Commit cecd2577 authored by Pierre Schmitz's avatar Pierre Schmitz
Browse files

Add script to move packages between [extra] and [community]

parent 82dcc19f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -14,3 +14,4 @@ mkarchroot
rebuildpkgs
zsh_completion
find-libdeps
crossrepomove
+8 −1
Original line number Diff line number Diff line
@@ -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

crossrepomove.in

0 → 100644
+86 −0
Original line number Diff line number Diff line
#!/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