summaryrefslogtreecommitdiff
path: root/maintainer
diff options
context:
space:
mode:
authorAlexey Neyman <stilor@att.net>2017-12-02 20:21:27 (GMT)
committerAlexey Neyman <stilor@att.net>2017-12-02 20:21:27 (GMT)
commit723a97fdd37118873fd8d301659206f3f4e4c3b0 (patch)
tree5d016dd84b529161f0d99f8447a5dd212c502d1d /maintainer
parente832b9b220f90b11b893e2815ceb37ec2b708683 (diff)
Add an ability to refresh/renumber patches
Signed-off-by: Alexey Neyman <stilor@att.net>
Diffstat (limited to 'maintainer')
-rwxr-xr-xmaintainer/test-packages.sh66
1 files changed, 63 insertions, 3 deletions
diff --git a/maintainer/test-packages.sh b/maintainer/test-packages.sh
index 7cc82d5..336237c 100755
--- a/maintainer/test-packages.sh
+++ b/maintainer/test-packages.sh
@@ -24,6 +24,10 @@ Options:
--apply-patches, -a
Implies -d. Unpack and apply the bundled patches.
+ --update-patches, -P
+ Implies -d. Renumber the patches and update the offsets
+ in them. Requires quilt to be installed.
+
--verify-urls, -u
Check *all* the download URLs for accessibility, without
actually downloading anything.
@@ -54,6 +58,10 @@ while [ -n "${1}" ]; do
apply_patches=y
download_pkgs=y
;;
+ --update-patches|-P)
+ update_patches=y
+ download_pkgs=y
+ ;;
--select|-s)
shift
[ -n "${1}" ] || { echo "argument required for --select" >&2; exit 1; }
@@ -85,6 +93,7 @@ CT_TARBALLS_DIR=`pwd`/temp.tarballs
CT_COMMON_SRC_DIR=`pwd`/temp.src
CT_SRC_DIR=`pwd`/temp.src
CT_LOG_LEVEL_MAX=EXTRA
+CT_TEMP_PATCH_DIR=`pwd`/temp.patches
mkdir -p ${CT_TARBALLS_DIR}
# Does not matter, just to make the scripts load
@@ -165,6 +174,51 @@ create_digests()
archive_formats="${save_archive_formats}"
}
+update_patches()
+{
+ local masterpfx="${1}"
+ local pkgdir="${CT_LIB_DIR}/packages/${pkg_name}/${version}"
+ local p i base newname
+
+ CT_DoExecLog ALL rm -rf "${CT_TEMP_PATCH_DIR}"
+ CT_DoExecLog ALL mkdir -p "${CT_TEMP_PATCH_DIR}"
+
+ # Move old patches so that CT_DoExtractPatch produces a clean directory
+ for p in "${pkgdir}"/*.patch; do
+ if [ "${p}" = "${pkgdir}/*.patch" ]; then
+ return # No patches
+ fi
+ CT_DoExecLog ALL mv "${p}" "${CT_TEMP_PATCH_DIR}"
+ done
+ # NOTE: we're already inside CT_PackageRun, so use CT_DoExtractPatch rather
+ # than CT_ExtractPatch, so that we keep the variable modified by it.
+ CT_DoExtractPatch
+ CT_DoLog EXTRA "Pushing patches into quilt"
+ CT_Pushd "${src_dir}/${dir_name}"
+ export QUILT_PATCHES=ct-ng.patches
+ CT_DoExecLog ALL mkdir -p ${QUILT_PATCHES}
+ CT_DoExecLog ALL touch ${QUILT_PATCHES}/series
+ CT_DoExecLog ALL quilt --quiltrc - setup ct-ng.patches/series
+ for p in "${CT_TEMP_PATCH_DIR}"/*.patch; do
+ # By now we know we have a non-empty set of patches
+ CT_DoExecLog ALL quilt --quiltrc - import "${p}"
+ CT_DoExecLog ALL quilt --quiltrc - push
+ CT_DoExecLog ALL quilt --quiltrc - refresh -p ab --no-timestamps --no-index --diffstat
+ done
+ # Now publish the patches back into the package's directory, renumbering them
+ # in the process.
+ CT_DoLog EXTRA "Saving updated patches"
+ i=0
+ for p in `quilt --quiltrc - applied`; do
+ # Strip index separated by dash or underscore
+ base=`echo "${p}" | sed 's#^[0-9]\{2,4\}[-_]##'`
+ newname=`printf "%04u-%s" "${i}" "${base}"`
+ i=$[i+1]
+ CT_DoExecLog ALL mv "${QUILT_PATCHES}/${p}" "${pkgdir}/${newname}"
+ done
+ CT_Popd
+}
+
run_pkgversion()
{
while [ -n "${1}" ]; do
@@ -214,6 +268,7 @@ CT_${pfx}_V_${kcfg}=y
CT_SAVE_TARBALLS=y
# CT_VERIFY_DOWNLOAD_DIGEST is not set
${signature+CT_VERIFY_DOWNLOAD_SIGNATURE=y}
+# CT_OVERRIDE_CONFIG_GUESS_SUB is not set
EOF
./kconfig/conf --defconfig=temp.defconfig temp.in >/dev/null
@@ -233,10 +288,15 @@ EOF
CT_Fetch "${masterpfx}"
fi
if [ -n "${apply_patches}" ]; then
- rm -rf ${CT_COMMON_SRC_DIR}
- mkdir -p ${CT_COMMON_SRC_DIR}
+ CT_DoExecLog ALL rm -rf ${CT_COMMON_SRC_DIR}
+ CT_DoExecLog ALL mkdir -p ${CT_COMMON_SRC_DIR}
CT_ExtractPatch "${masterpfx}"
fi
+ if [ -n "${update_patches}" ]; then
+ CT_DoExecLog ALL rm -rf ${CT_COMMON_SRC_DIR}
+ CT_DoExecLog ALL mkdir -p ${CT_COMMON_SRC_DIR}
+ CT_PackageRun "${masterpfx}" update_patches
+ fi
CT_EndStep
}
@@ -245,4 +305,4 @@ EOF
. maintainer/package-versions
[ -r .config-saved ] && mv .config-saved .config
-rm -rf ${CT_TARBALLS_DIR} ${CT_COMMON_SRC_DIR}
+CT_DoExecLog ALL rm -rf ${CT_TARBALLS_DIR} ${CT_COMMON_SRC_DIR} ${CT_TEMP_PATCH_DIR}