#!/bin/bash # Lic: GPLv3+ # Author: Nicolas Reynolds # Local release of mips64el packages + clean ABS sync # Called by HOOKLOCALRELEASE # $1 repo # $2+ packages source /etc/makepkg.conf source /etc/libretools.conf source /etc/libretools.d/prtools.conf usage() { echo "$0 repo package1 [ package2 ... packageN ]" echo echo " release packages locally on ${PKGDEST}/stage3." echo " and make a clean ABS sync " } ## # usage : get_full_version( $epoch, $pkgver, $pkgrel ) # return : full version spec, including epoch (if necessary), pkgver, pkgrel ## get_full_version() { if [[ $1 -eq 0 ]]; then # zero epoch case, don't include it in version echo $2-$3 else echo $1:$2-$3 fi } repo=$1; shift repo-add "${PKGDEST}/stage3.db.tar.gz" $@ # Get all needed sources source PKGBUILD fullver=$(get_full_version ${epoch:-0} ${pkgver} ${pkgrel}) pkgbase=${pkgbase:-$pkgname} msg "Adding packages to [stage3]..." repo-add $@ for name in ${pkgname[@]}; do msg2 "${name} ${fullver}" repo-add ${PKGDEST}/stage3.db.tar.gz ${PKGDEST}/${name}-${fullver}-*.pkg.tar.* done # Copy PKGBUILD and sources msg "Adding clean source to $WORKDIR/abs/${CARCH}/$repo/$pkgbase" dest_dir="$WORKDIR/abs/${CARCH}/$repo/$pkgbase" mkdir -p ${dest_dir} >/dev/null rm -rf ${dest_dir}/* # if package existed already there eval $(grep '^CARCH=' "$copydir/etc/makepkg.conf") # CARCH might be used in PKGBUILD to select sources. export CARCH source=($(. "PKGBUILD"; echo ${source[@]})) cp --remove-destination "PKGBUILD" "${dest_dir}" || echo "copy 1" for f in ${source[@]}; do basef=$(echo $f | sed 's|::.*||' | sed 's|^.*://.*/||g') if [ -f "$basef" ]; then cp --remove-destination "$basef" "${dest_dir}" fi done ( . PKGBUILD for i in 'changelog' 'install'; do filelist=$(sed -n "s/^[[:space:]]*$i=//p" PKGBUILD) for file in $filelist; do # evaluate any bash variables used eval file=${file} if [ -f "$file" ]; then cp --remove-destination "$file" "${dest_dir}" fi done done ) # END add clean abs # Commit the changes pushd "$dest_dir" >/dev/null source "${dest_dir}/PKGBUILD" epoch=${epoch:-0} fullver=$(get_full_version ${epoch} ${pkgver} ${pkgrel}) pkgbase=${pkgbase:-${pkgname[0]}} git add "${dest_dir}/." # add using .gitignore git commit -m "${pkgbase}-${fullver} ${repo}" >/dev/null && msg2 "${pkgbase} ${fullver} ${repo}" popd >/dev/null # END commit exit $?