From abdd9a04698a4a77058d83ed0dae59d3053618f7 Mon Sep 17 00:00:00 2001 From: Sam Bingner Date: Mon, 23 Mar 2020 14:40:26 -1000 Subject: Infrastructure to build a metapackage and _librsync metapackage --- make.sh | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 72 insertions(+), 6 deletions(-) (limited to 'make.sh') diff --git a/make.sh b/make.sh index 969d5b838..639b862b9 100755 --- a/make.sh +++ b/make.sh @@ -58,6 +58,13 @@ function pkg:patch() { pkg:libtool_ libtool pkg:libtool_ ltmain.sh + if [ -f "debian/patches/series" ]; then + for diff in $(cut -d'#' -f1 < debian/patches/series); do + echo "patching with debian ${diff}..." + patch ${args:=-p1} < "debian/patches/${diff}" + done + fi + for diff in "${PKG_DATA}"/*.diff; do if [[ ${diff} =~ .*/_[^/]*.diff$ ]]; then continue; @@ -67,6 +74,16 @@ function pkg:patch() { echo "patching with ${diff}..." patch ${args:=-p1} <"${diff}" done + + for diff in "${PKG_DATA}"/*.diff."${PKG_ARCH}"; do + if [[ ${diff} =~ .*/_[^/]*.diff.${PKG_ARCH}$ ]]; then + continue; + fi + + args=$(cat ${diff%.diff}.args 2>/dev/null || true) + echo "patching with ${diff}..." + patch ${args:=-p1} <"${diff}" + done } export -f pkg:patch @@ -93,7 +110,7 @@ function pkg:autoconf() { patch -F 3 -r/dev/null "${m4}" "${PKG_BASE}/util/libtool.m4.diff" || true done - autoconf + autoconf } export -f pkg:autoconf @@ -110,10 +127,13 @@ export -f pkg:libtool_ function pkg:setup() { pkg:extract - if [ -z ""*/ ]; then - echo "Empty package??" - exit 1 - fi + if [ -z ""*/ ]; then + echo "Empty package??" + exit 1 + fi + if [ -d "debian" ]; then + mv debian "$(ls | grep -v debian)" + fi cd */ pkg:patch } @@ -154,7 +174,7 @@ function pkg:install() { export -f pkg:install function pkg:extract() { - for tgz in "${PKG_DATA}"/*.{tar.{gz,xz,bz2,lz},tgz}; do + for tgz in "${PKG_DATA}"/*.{tar.{gz,xz,bz2,lz,lzma},tgz}; do tar -xf "${tgz}" done @@ -172,6 +192,47 @@ function pkg:usrbin() { export -f pkg:usrbin +function subpkg:stage_() { + shopt -s nullglob extglob + export PKG_PARENT="${PKG_NAME}" + for install in "${PKG_DATA}"/*.install; do + PKG_NAME="$(basename ${install} .install)" + . "${PKG_BASE}"/helper.sh + echo Staging subproject ${PKG_NAME} + IFS=$'\n' read -r -d '' -a PKG_DEB_GLOBS < ${install} + rm -rf "${PKG_DEST}" + for pkg_deb_glob in "${PKG_DEB_GLOBS[@]}"; do + for pkg_deb_file in "${PKG_PARENT_DEST}/"${pkg_deb_glob}; do + SRC_FILE="${pkg_deb_file}" + DST_FILE="${PKG_DEST}/${SRC_FILE/#${PKG_PARENT_DEST}*(\/)/}" + if [ -d "${pkg_deb_file}" ]; then + SRC_DIR="${SRC_FILE}" + DST_DIR="${DST_FILE}" + install -dvp "${SRC_DIR}" "${DST_DIR}" + cp -va "${SRC_DIR}" "${DST_DIR}" + else + SRC_DIR="$(dirname ${SRC_FILE})" + DST_DIR="$(dirname ${DST_FILE})" + if [ ! -d "${DST_DIR}" ]; then + install -dvp "${SRC_DIR}" "${DST_DIR}" + fi + cp -va "${SRC_FILE}" "${DST_FILE}" + fi + done + done + echo Staged subproject ${PKG_DEB_NAME} + done + echo done +} + +export -f subpkg:stage_ + +function subpkg:stage() { + ${FAKEROOT} bash -c "subpkg:stage_" +} + +export -f subpkg:stage + cd "${PKG_WORK}" "${PKG_BASE}/exec.sh" "${PKG_NAME}" . "${PKG_DATA}/make.sh" @@ -201,6 +262,10 @@ rmdir_ "${PKG_DEST}/usr/local" rmdir_ "${PKG_DEST}/usr/lib" rmdir_ "${PKG_DEST}/usr" +if grep -r "${PKG_BASE}" "${PKG_DEST}"; then + echo "WARNING - files contain ${PWD}" +fi + if [[ -e "${PKG_BASE}/arch/${PKG_ARCH}/${PKG_CFTARG}/strip" ]]; then . "${PKG_BASE}/arch/${PKG_ARCH}/${PKG_CFTARG}/strip" fi @@ -215,6 +280,7 @@ find "${PKG_DEST}" -type f -name '*.elc' -print0 | while read -r -d $'\0' bin; d done find "${PKG_DEST}" -type f -name '*.a' -print0 | while read -r -d $'\0' bin; do + chmod u+w "${bin}" "${PKG_BASE}/util/arid" "${bin}" done -- cgit v1.2.3