summaryrefslogtreecommitdiff
path: root/prmipsrelease
diff options
context:
space:
mode:
Diffstat (limited to 'prmipsrelease')
-rwxr-xr-xprmipsrelease100
1 files changed, 100 insertions, 0 deletions
diff --git a/prmipsrelease b/prmipsrelease
new file mode 100755
index 0000000..cd4d4ba
--- /dev/null
+++ b/prmipsrelease
@@ -0,0 +1,100 @@
+#!/bin/bash
+# Lic: GPLv3+
+# Author: Nicolas Reynolds <fauno@kiwwwi.com.ar>
+# 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[0]}
+
+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
+
+# Set target CARCH as it might be used within the PKGBUILD to select correct sources
+eval $(grep '^CARCH=' "$copydir/etc/makepkg.conf")
+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 $?