summaryrefslogtreecommitdiff
path: root/src/prtools/prmipsrelease
diff options
context:
space:
mode:
Diffstat (limited to 'src/prtools/prmipsrelease')
-rwxr-xr-xsrc/prtools/prmipsrelease98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/prtools/prmipsrelease b/src/prtools/prmipsrelease
new file mode 100755
index 0000000..1fbd696
--- /dev/null
+++ b/src/prtools/prmipsrelease
@@ -0,0 +1,98 @@
+#!/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}
+
+ 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 $?