diff --git a/roles/archbuild/files/mkpkg b/roles/archbuild/files/mkpkg index 4b2317351987a59536c4c1124d3c5fc7cf36968c..3ee25df175720007bf5409559d6e1fe8250ebc15 100755 --- a/roles/archbuild/files/mkpkg +++ b/roles/archbuild/files/mkpkg @@ -11,6 +11,7 @@ pkgname=() builddeps=() repodb=$USERNAME.db.tar.gz # repo db filename repodir=~/public_html/repo # repo to use. arch dir is appended +repohost= srcdest=. usage=0 @@ -55,6 +56,9 @@ usage2() { echo ' repodir Repo to use. Architecture dir is appended.' echo " Default: $(declare -m repodir)" echo + echo ' repohost Repo host name. Local host if empty.' + echo " Default: $(declare -m repohost)" + echo echo ' srcdest Where to find sources. Used by check_* functions.' echo " Default: $(declare -m srcdest)" echo @@ -75,7 +79,7 @@ usage2() { echo ' - for $arch:' echo ' - Call build() with $arch makechrootpkg_args' echo ' - On failure, mail logs if $mailaddr is set' - echo ' - Copy built packages to $repodir/$arch' + echo ' - Copy built packages to $repohost:$repodir/$arch' echo ' - Repo-remove old deltas from $repodb' echo ' - Remove old delta files' echo ' - Repo-add built packages to $repodb' @@ -90,6 +94,9 @@ usage2() { echo echo 'mkpkg will build the package and publish it in a repository named' echo " $repodir/\$arch/$repodb" + echo 'If $repohost is set, scp and ssh will be used to modify the repo remotely. You' + echo 'need to make sure mkpkg is able to ssh into this host without an authentication' + echo 'prompt.' echo echo 'For builds conditional on VCS updates, run check_{bzr,git,hg,svn} DIR [BRANCH]' echo 'from MKPKG, with DIR being a makepkg VCS source and BRANCH a branch (optional).' @@ -141,11 +148,32 @@ build() { # Parameters: arch repoadd() { - local -a pkgs olddeltas repopkgs + local -a pkgs pkgs=( ${^pkgname}-[^-]##-[^-]##-($1|any).pkg.tar.xz(-om[1]) ) - mkdir -p $repodir/$1 - cp $pkgs $repodir/$1/ + + if [[ -n $repohost ]]; then + ssh -q $repohost mkdir -p $repodir/$1 + scp -q $pkgs $repohost:$repodir/$1/ + ssh -q $repohost zsh -c ": + setopt extendedglob nomatch + repodir=${repodir:q} + repodb=${repodb:q} + pkgname=(${pkgname:q}) + pkgs=(${pkgs:q}) + $(declare -f repoadd_remote) + repoadd_remote ${1:q} + " + else + mkdir -p $repodir/$1 + cp $pkgs $repodir/$1/ + repoadd_remote $1 + fi +} + +# Parameters: arch +repoadd_remote() { + local -a olddeltas repopkgs pushd $repodir/$1 @@ -258,3 +286,5 @@ cd $packagedir for package; do mkpkg_one done + +# vim:set sw=2 et: