summaryrefslogtreecommitdiffstats
path: root/bin/reprepro_fix-changes.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/reprepro_fix-changes.sh')
-rwxr-xr-xbin/reprepro_fix-changes.sh139
1 files changed, 139 insertions, 0 deletions
diff --git a/bin/reprepro_fix-changes.sh b/bin/reprepro_fix-changes.sh
new file mode 100755
index 0000000..ae35550
--- /dev/null
+++ b/bin/reprepro_fix-changes.sh
@@ -0,0 +1,139 @@
+#!/bin/sh
+
+set -e
+
+CHANGELOGS="${@:-*/packages/*/*/*.changes}"
+
+echo -n "Fixing "
+
+Fix_size ()
+{
+ CHANGES="${1}"
+ BUILDINFO="${2}"
+
+ OLD_SIZE="$(grep " [0-9]* $(basename ${BUILDINFO})$" ${CHANGES} | head -n1 | awk '{ print $2 }')"
+ NEW_SIZE="$(ls -l ${BUILDINFO} | awk '{ print $5 }')"
+
+ if [ -n "${OLD_SIZE}" ] && [ -n "${NEW_SIZE}" ] && grep -qs " ${OLD_SIZE} " "${CHANGES}"
+ then
+ sed -i -e "s| ${OLD_SIZE} | ${NEW_SIZE} |g" "${CHANGES}"
+
+ cd "$(dirname ${CHANGES})"
+ echo "Signing ${CHANGES}"
+
+ if grep -qs progress-linux.org ${CHANGES}
+ then
+ psign.sh > /dev/null 2>&1
+ elif grep -qs bfh.ch ${CHANGES}
+ then
+ bsign.sh > /dev/null 2>&1
+ fi
+ cd "${OLDPWD}"
+ fi
+}
+
+Fix_hashsums ()
+{
+ CHANGES="${1}"
+ BUILDINFO="${2}"
+ SIZE="${3}"
+
+ for HASHSUM in $(grep " ${SIZE} " "${CHANGES}")
+ do
+ OLD_HASH="$(echo ${HASHSUM} | awk '{ print $1 }')"
+ NEW_HASH=""
+
+ case $(echo ${OLD_HASH} | wc -c) in
+ 41)
+ NEW_HASH="$(sha1sum ${BUILDINFO} | awk '{ print $1 }')"
+ ;;
+
+ 65)
+ NEW_HASH="$(sha256sum ${BUILDINFO} | awk '{ print $1 }')"
+ ;;
+
+ 33)
+ NEW_HASH="$(md5sum ${BUILDINFO} | awk '{ print $1 }')"
+ ;;
+ esac
+
+ if [ -n "${NEW_HASH}" ] && ! grep -qs "^ ${NEW_HASH} ${SIZE} " "${CHANGES}"
+ then
+ sed -i -e "s|^ ${OLD_HASH} ${SIZE}| ${NEW_HASH} ${SIZE}|" "${CHANGES}"
+
+ cd "$(dirname ${CHANGES})"
+ echo "Signing ${CHANGES}"
+ psign.sh > /dev/null 2>&1
+ cd "${OLDPWD}"
+ fi
+ done
+}
+
+for CHANGES in ${CHANGELOGS}
+do
+ BUILDINFO="$(echo ${CHANGES} | sed -e 's|.changes$|.buildinfo|')"
+
+ if grep -qs usr-local-has-programs "${BUILDINFO}" && grep -qs merged-usr-via-symlinks "${BUILDINFO}"
+ then
+ grep -v usr-local-has-programs "${BUILDINFO}" > "${BUILDINFO}".tmp
+ rm -f "${BUILDINFO}"
+ mv "${BUILDINFO}".tmp "${BUILDINFO}"
+ else
+ if grep -qs usr-local-has-programs "${BUILDINFO}" && ! grep -qs merged-usr-via-symlinks "${BUILDINFO}"
+ then
+ sed -i -e 's|usr-local-has-programs|merged-usr-via-symlinks|' "${BUILDINFO}"
+ fi
+ fi
+
+ if grep -qs DEB_BUILD_OPTIONS= "${BUILDINFO}"
+ then
+ grep -v DEB_BUILD_OPTIONS= "${BUILDINFO}" > "${BUILDINFO}".tmp
+ rm -f "${BUILDINFO}"
+ mv "${BUILDINFO}".tmp "${BUILDINFO}"
+ fi
+
+ if [ ! -e "${BUILDINFO}" ]
+ then
+ continue
+ fi
+
+ SIZE="$(ls -l ${BUILDINFO} | awk '{ print $5 }')"
+
+ if [ $(grep -c ".* ${SIZE} .*$(basename ${BUILDINFO})" ${CHANGES}) -ne 3 ]
+ then
+ echo
+ echo "${CHANGES}: fix buildinfo size"
+ Fix_size ${CHANGES} ${BUILDINFO}
+ fi
+
+ SHA1SUM="$(sha1sum ${BUILDINFO} | awk '{ print $1 }')"
+
+ if ! grep -qs "^ ${SHA1SUM} ${SIZE} $(basename ${BUILDINFO})$" "${CHANGES}"
+ then
+ echo
+ echo "${CHANGES}: fix buildinfo sha1"
+ Fix_hashsums ${CHANGES} ${BUILDINFO} ${SIZE}
+ fi
+
+ SHA256SUM="$(sha256sum ${BUILDINFO} | awk '{ print $1 }')"
+
+ if ! grep -qs "^ ${SHA256SUM} ${SIZE} $(basename ${BUILDINFO})$" "${CHANGES}"
+ then
+ echo
+ echo "${CHANGES}: fix buildinfo sha256"
+ Fix_hashsums ${CHANGES} ${BUILDINFO} ${SIZE}
+ fi
+
+ MD5SUM="$(md5sum ${BUILDINFO} | awk '{ print $1 }')"
+
+ if ! grep -qs "^ ${MD5SUM} ${SIZE} .*$(basename ${BUILDINFO})$" "${CHANGES}"
+ then
+ echo
+ echo "${CHANGES}: fix buildinfo md5"
+ Fix_hashsums ${CHANGES} ${BUILDINFO} ${SIZE}
+ fi
+
+ echo -n "."
+done
+
+echo " done."