rpmrebuild/backport-support-filetrigger.patch
2024-11-21 17:01:36 +08:00

314 lines
9.6 KiB
Diff

From 74a3d654ce30ec83453f12a5939a91fdb94e8bb0 Mon Sep 17 00:00:00 2001
From: Eric Gerbier <gerbier@users.sourceforge.net>
Date: Fri, 6 Sep 2024 16:42:29 +0200
Subject: [PATCH] support filetrigger (merged from github repo)
---
optional_tags.cfg | 2 +
plugins/demo.plug | 2 +
processing_func.src | 18 +++++++++
rpmrebuild_parser.src | 89 +++++++++++++++++++++++++++++++++++++++++--
rpmrebuild_rpmqf.src | 10 +++++
spec_func.src | 8 ++++
6 files changed, 125 insertions(+), 4 deletions(-)
diff --git a/optional_tags.cfg b/optional_tags.cfg
index fe90209..fc69433 100644
--- a/optional_tags.cfg
+++ b/optional_tags.cfg
@@ -33,3 +33,5 @@ SUPPLEMENTVERSION d_line
# only in rpm 5
TRIGGERCONDS d_word
TRIGGERTYPE d_word
+FILETRIGGERCONDS d_line
+TRANSFILETRIGGERCONDS d_line
diff --git a/plugins/demo.plug b/plugins/demo.plug
index d377f7b..fcafbbb 100644
--- a/plugins/demo.plug
+++ b/plugins/demo.plug
@@ -30,6 +30,8 @@ change-spec-requires demo.sh
change-spec-description demo.sh
change-spec-files demo.sh
change-spec-triggers demo.sh
+change-spec-filetriggers demo.sh
+change-spec-transfiletriggers demo.sh
change-spec-pre demo.sh
change-spec-pretrans demo.sh
change-spec-post demo.sh
diff --git a/processing_func.src b/processing_func.src
index eb8beaa..4785f9c 100755
--- a/processing_func.src
+++ b/processing_func.src
@@ -41,6 +41,8 @@ function processing_init
SPEC_RECOMMENDS=${SPEC_DIR}/recommends
SPEC_SUPPLEMENTS=${SPEC_DIR}/supplements
SPEC_TRIGGERS=${SPEC_DIR}/triggers
+ SPEC_FILETRIGGERS=${SPEC_DIR}/filetriggers
+ SPEC_TRANSFILETRIGGERS=${SPEC_DIR}/transfiletriggers
SPEC_VERIFYSCRIPT=${SPEC_DIR}/verifyscript
spec_index=1
@@ -64,6 +66,8 @@ function processing_init
si_recommends=1
si_supplements=1
si_triggers=1
+ si_filetriggers=1
+ si_transfiletriggers=1
si_verifyscript=1
si_rpmqf=1
}
@@ -224,6 +228,20 @@ function processing_spec_change
SPEC_OUT=$SPEC_TRIGGERS.$si_triggers
;;
+ change-spec-filetriggers | \
+ edit-filetriggers)
+ SPEC_IN=$SPEC_FILETRIGGERS.$si_filetriggers
+ si_filetriggers=$(( si_filetriggers + 1 ))
+ SPEC_OUT=$SPEC_FILETRIGGERS.$si_filetriggers
+ ;;
+
+ change-spec-transfiletriggers | \
+ edit-transfiletriggers)
+ SPEC_IN=$SPEC_TRANSFILETRIGGERS.$si_transfiletriggers
+ si_transfiletriggers=$(( si_transfiletriggers + 1 ))
+ SPEC_OUT=$SPEC_TRANSFILETRIGGERS.$si_transfiletriggers
+ ;;
+
change-spec-verifyscript | \
edit-verifyscript)
SPEC_IN=$SPEC_VERIFYSCRIPT.$si_verifyscript
diff --git a/rpmrebuild_parser.src b/rpmrebuild_parser.src
index f0261fe..46c640b 100755
--- a/rpmrebuild_parser.src
+++ b/rpmrebuild_parser.src
@@ -81,6 +81,8 @@ options:
--change-spec-description=<command>
--change-spec-files=<command>
--change-spec-triggers=<command>
+ --change-spec-filetriggers=<command>
+ --change-spec-transfiletriggers=<command>
--change-spec-pre=<command>
--change-spec-pretrans=<command>
--change-spec-post=<command>
@@ -105,6 +107,8 @@ options:
--edit-description
--edit-files
--edit-triggers
+ --edit-filetriggers
+ --edit-transfiletriggers
--edit-pre
--edit-pretrans
--edit-post
@@ -358,11 +362,26 @@ function ProcessLongOptions
change-spec-f | \
change-spec-fi | \
change-spec-fil | \
- change-spec-file | \
+ change-spec-file)
+ AmbiguousOption
+ return 1
+ ;;
+
change-spec-files)
LONG_OPTION="change-spec-files"
;;
+ change-spec-filet | \
+ change-spec-filetr | \
+ change-spec-filetri | \
+ change-spec-filetrig | \
+ change-spec-filetrigg | \
+ change-spec-filetrigge | \
+ change-spec-filetrigger | \
+ change-spec-filetriggers)
+ LONG_OPTION="change-spec-filetriggers"
+ ;;
+
change-spec-o | \
change-spec-ob | \
change-spec-obs | \
@@ -475,7 +494,28 @@ function ProcessLongOptions
;;
change-spec-t | \
- change-spec-tr | \
+ change-spec-tr)
+ AmbiguousOption
+ return 1
+ ;;
+
+ change-spec-tra | \
+ change-spec-tran | \
+ change-spec-trans | \
+ change-spec-transf | \
+ change-spec-transfi | \
+ change-spec-transfile | \
+ change-spec-transfilet | \
+ change-spec-transfiletr | \
+ change-spec-transfiletri | \
+ change-spec-transfiletrig | \
+ change-spec-transfiletrigg | \
+ change-spec-transfiletrigge | \
+ change-spec-transfiletrigger | \
+ change-spec-transfiletriggers)
+ LONG_OPTION="change-spec-transfiletriggers"
+ ;;
+
change-spec-tri | \
change-spec-trig | \
change-spec-trigg | \
@@ -619,11 +659,27 @@ function ProcessLongOptions
edit-f | \
edit-fi | \
edit-fil | \
- edit-file | \
+ edit-file)
+ AmbiguousOption
+ return 1
+ ;;
+
edit-files)
LONG_OPTION='edit-files'
;;
+ edit-filet | \
+ edit-filetr | \
+ edit-filetri | \
+ edit-filetri | \
+ edit-filetrig | \
+ edit-filetrigg | \
+ edit-filetrigge | \
+ edit-filetrigger | \
+ edit-filetriggers)
+ LONG_OPTION='edit-filetriggers'
+ ;;
+
edit-o | \
edit-ob | \
edit-obs | \
@@ -749,7 +805,28 @@ function ProcessLongOptions
;;
edit-t | \
- edit-tr | \
+ edit-tr)
+ AmbiguousOption
+ return 1
+ ;;
+
+ edit-tra | \
+ edit-tran | \
+ edit-trans | \
+ edit-transf | \
+ edit-transfi | \
+ edit-transfile | \
+ edit-transfilet | \
+ edit-transfiletr | \
+ edit-transfiletri | \
+ edit-transfiletrig | \
+ edit-transfiletrigg | \
+ edit-transfiletrigge | \
+ edit-transfiletrigger | \
+ edit-transfiletriggers)
+ LONG_OPTION='edit-transfiletriggers'
+ ;;
+
edit-tri | \
edit-trig | \
edit-trigg | \
@@ -1038,6 +1115,7 @@ function ProcessLongOptions
change-spec-description | \
change-spec-enhances | \
change-spec-files | \
+ change-spec-filetriggers | \
change-spec-obsoletes | \
change-spec-pre | \
change-spec-pretrans | \
@@ -1051,6 +1129,7 @@ function ProcessLongOptions
change-spec-recommends | \
change-spec-suggests | \
change-spec-supplements | \
+ change-spec-transfiletriggers | \
change-spec-triggers | \
change-spec-verifyscript | \
change-spec-whole)
@@ -1095,6 +1174,7 @@ function ProcessLongOptions
edit-description | \
edit-enhances | \
edit-files | \
+ edit-filetriggers | \
edit-obsoletes | \
edit-pre | \
edit-pretrans | \
@@ -1108,6 +1188,7 @@ function ProcessLongOptions
edit-suggests | \
edit-recommends | \
edit-supplements | \
+ edit-transfiletriggers | \
edit-triggers | \
edit-verifyscript | \
edit-whole)
diff --git a/rpmrebuild_rpmqf.src b/rpmrebuild_rpmqf.src
index 04d62ea..5f4c574 100755
--- a/rpmrebuild_rpmqf.src
+++ b/rpmrebuild_rpmqf.src
@@ -146,6 +146,16 @@ echo
echo '[%%trigger%{TRIGGERTYPE} -p %{TRIGGERSCRIPTPROG} -- %{TRIGGERCONDS}\n%|TRIGGERSCRIPTS?{%{TRIGGERSCRIPTS}\n}|]'
}
+function qf_spec_filetriggers {
+echo
+echo '[%%filetrigger%{FILETRIGGERTYPE} -p %{FILETRIGGERSCRIPTPROG} -P %{FILETRIGGERPRIORITIES} -- %{FILETRIGGERCONDS}\n%|FILETRIGGERSCRIPTS?{%{FILETRIGGERSCRIPTS}\n}|]'
+}
+
+function qf_spec_transfiletriggers {
+echo
+echo '[%%transfiletrigger%{TRANSFILETRIGGERTYPE} -p %{TRANSFILETRIGGERSCRIPTPROG} -P %{TRANSFILETRIGGERPRIORITIES} -- %{TRANSFILETRIGGERCONDS}\n%|TRANSFILETRIGGERSCRIPTS?{%{TRANSFILETRIGGERSCRIPTS}\n}|]'
+}
+
function qf_spec_pre {
echo
echo '%|PREINPROG?{%%pre -p %{PREINPROG}\n%|PREIN?{[%{PREIN}\n]}|}:{%|PREIN?{\n%%pre\n[%{PREIN}\n]}|}|'
diff --git a/spec_func.src b/spec_func.src
index 6a9bff8..f919bd7 100755
--- a/spec_func.src
+++ b/spec_func.src
@@ -172,6 +172,8 @@ function SpecGeneration
spec_query qf_spec_description > "$SPEC_DESCRIPTION.$i" || Error "(SpecGeneration) qf_spec_description" || return
spec_files > "$SPEC_FILES.$i" || Error "(SpecGeneration) spec_files" || return
spec_query qf_spec_triggers > "$SPEC_TRIGGERS.$i" || Error "(SpecGeneration) qf_spec_triggers" || return
+ spec_query qf_spec_filetriggers > "$SPEC_FILETRIGGERS.$i" || Error "(SpecGeneration) qf_spec_filetriggers" || return
+ spec_query qf_spec_transfiletriggers > "$SPEC_TRANSFILETRIGGERS.$i" || Error "(SpecGeneration) qf_spec_transfiletriggers" || return
spec_query qf_spec_pre > "$SPEC_PRE.$i" || Error "(SpecGeneration) qf_spec_pre" || return
spec_query qf_spec_pretrans > "$SPEC_PRETRANS.$i" || Error "(SpecGeneration) qf_spec_pretrans" || return
spec_query qf_spec_post > "$SPEC_POST.$i" || Error "(SpecGeneration) qf_spec_post" || return
@@ -242,6 +244,8 @@ function spec_concatenate
# %%triger -> %trigger (in begin of line)
local sed_trigger="/^%%trigger/s/^%%/%/1"
+ local sed_filetrigger="/^%%filetrigger/s/^%%/%/1"
+ local sed_transfiletrigger="/^%%transfiletrigger/s/^%%/%/1"
# %%pre -> %pre (in begin of line) It'll work for %%preun too.
local sed_pre="/^%%pre/s/^%%/%/1"
# %%post -> %post (in begin of line) It'll work for %%postun too.
@@ -251,11 +255,15 @@ function spec_concatenate
sed \
-e "$sed_double_percent" \
-e "$sed_trigger" \
+ -e "$sed_filetrigger" \
+ -e "$sed_transfiletrigger" \
-e "$sed_pre" \
-e "$sed_post" \
-e "$sed_verifyscript" \
-e "$sed_global" \
"$SPEC_TRIGGERS.$si_triggers" \
+ "$SPEC_FILETRIGGERS.$si_filetriggers" \
+ "$SPEC_TRANSFILETRIGGERS.$si_transfiletriggers" \
"$SPEC_PRE.$si_pre" \
"$SPEC_PRETRANS.$si_pretrans" \
"$SPEC_POST.$si_post" \
--
2.46.0