summaryrefslogtreecommitdiff
path: root/prmipsrelease
blob: cd4d4bafa957a7e295b6d86516dbc75165110c97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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 $?