summaryrefslogtreecommitdiff
path: root/src/pr-tools/prmipsrelease
blob: 1fbd696ea841b09fcf1ee4728a0977ab292a0d2e (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
#!/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 $?