diff options
author | Max Rees <maxcrees@me.com> | 2020-04-11 19:11:29 -0500 |
---|---|---|
committer | Max Rees <maxcrees@me.com> | 2020-04-11 19:11:29 -0500 |
commit | 075e7b4df615a60a2302a849d1e9c8a65312dece (patch) | |
tree | f24e11abd43e3c86920859b0d7fdd67df0b387cc /resignapk.in | |
parent | d7006b134051c3f7163f8de85c15011c53abe497 (diff) | |
download | abuild-075e7b4df615a60a2302a849d1e9c8a65312dece.tar.gz abuild-075e7b4df615a60a2302a849d1e9c8a65312dece.tar.bz2 abuild-075e7b4df615a60a2302a849d1e9c8a65312dece.tar.xz abuild-075e7b4df615a60a2302a849d1e9c8a65312dece.zip |
resignapk: support re-signing APKINDEXresignapk
Diffstat (limited to 'resignapk.in')
-rw-r--r-- | resignapk.in | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/resignapk.in b/resignapk.in index 9479c3d..fd558a2 100644 --- a/resignapk.in +++ b/resignapk.in @@ -93,19 +93,33 @@ cleanup() { } trap cleanup INT EXIT -for apk in "$@"; do +for apk; do case "$apk" in /*) ;; *) apk="$PWD/$apk";; esac apk_basename="${apk##*/}" - msg 'Splitting .apk...' + case "$apk" in + *.apk) + signpart=control.tar.gz + filetype=.apk + ;; + */APKINDEX.tar.gz) + signpart=data.tar.gz + filetype=APKINDEX + ;; + *) + die 'Unknown file type' + ;; + esac + + msg "Splitting $filetype..." tmpdir="$(mktemp -td resignapk.XXXXXX)" cd "$tmpdir" abuild-gzsplit < "$apk" - if [ -n "$packager" ]; then + if [ -n "$packager" ] && [ "$filetype" = .apk ]; then msg 'Updating control.tar.gz' tar -xf control.tar.gz ctrl_files="$(tar -tf control.tar.gz)" @@ -116,16 +130,24 @@ for apk in "$@"; do | gzip -9 > control.tar.gz fi - abuild-sign -k "$privkey" -p "$pubkey" -q control.tar.gz + abuild-sign -k "$privkey" -p "$pubkey" -q "$signpart" msg 'Old signatures:' list_sigs signatures.tar.gz msg 'New signatures:' - list_sigs control.tar.gz + list_sigs "$signpart" - [ -n "$inplace" ] && msg 'Updating apk' || msg 'Creating apk.new' - [ -n "$inplace" ] || apk="$apk.new" + if [ -n "$inplace" ]; then + msg "Updating $filetype" + else + msg "Creating $filetype.new" + apk="$apk.new" + fi - cat control.tar.gz data.tar.gz > "$apk" + if [ "$filetype" = APKINDEX ]; then + mv data.tar.gz "$apk" + else + cat control.tar.gz data.tar.gz > "$apk" + fi cleanup done |