@@ -53,6 +53,11 @@ set_default_params () {
53
53
LOCAL_SUBMODULES=" N"
54
54
LOCAL_GROUPS=" mer-core mer-core-attic mer-crosshelpers mer-obs mer-tools"
55
55
LOCAL_MIRROR_GROUP=" mirror"
56
+ # Allow running supplied *.changes.run executable to generate changelog.
57
+ ALLOW_CHANGES_RUN=" Y"
58
+ # Use the given exec wrapper for running *.changes.run to protect against malware.
59
+ # The wrapper can be a command with initial list of arguments
60
+ CHANGES_RUN_WRAPPER=(sfdk-changelog --script)
56
61
}
57
62
58
63
get_config_options () {
@@ -227,6 +232,13 @@ find_changes_file () {
227
232
[[ -z $CHANGESFILE ]] || cp " $CHANGESFILE " ..
228
233
}
229
234
235
+ find_changes_run_file () {
236
+
237
+ CHANGESRUNFILE=" $( find $1 -type f -name ' *.changes.run' ) "
238
+
239
+ [[ " $( echo $CHANGESRUNFILE | wc -w) " -le 1 ]] || error " Need single changes.run file in rpm"
240
+ }
241
+
230
242
find_yaml_file () {
231
243
232
244
YAMLFILE=" $( basename $SPECFILE .spec) .yaml"
@@ -237,7 +249,7 @@ find_yaml_file () {
237
249
238
250
find_other_files () {
239
251
240
- for i in $( find rpm/ -type f -not -name ' *.yaml' -not -name ' *.changes' -not -name ' *.spec' ) ; do
252
+ for i in $( find rpm/ -type f -not -name ' *.yaml' -not -name ' *.changes' -not -name ' *.changes.run ' -not -name ' *. spec' ) ; do
241
253
242
254
cp -v $i ..
243
255
@@ -532,6 +544,17 @@ do_changelog_block () {
532
544
533
545
generate_changes () {
534
546
547
+ if test -n " $CHANGESRUNFILE " ; then
548
+ if test " $ALLOW_CHANGES_RUN " ! = " Y" ; then
549
+ error " Not allowed to run supplied executable to generate changelog"
550
+ fi
551
+ CHANGESFILE=../$( basename " ${CHANGESRUNFILE% .run} " )
552
+ if ! command " ${CHANGES_RUN_WRAPPER[@]} " " $CHANGESRUNFILE " > " $CHANGESFILE " ; then
553
+ error " Unable to generate changelog entries using '$CHANGESRUNFILE '"
554
+ fi
555
+ return
556
+ fi
557
+
535
558
CHANGES=" "
536
559
ENTRIES=" "
537
560
@@ -1014,6 +1037,7 @@ rpm_pkg () {
1014
1037
expand_spec_file " $SPECFILE "
1015
1038
cp -v " $SPECFILE " ..
1016
1039
find_changes_file rpm
1040
+ find_changes_run_file rpm
1017
1041
find_yaml_file
1018
1042
find_other_files
1019
1043
find_compression " $SPECFILE "
@@ -1064,6 +1088,7 @@ run_android_repo_service () {
1064
1088
$REPOCMD
1065
1089
find_spec_file " $MYOUTDIR "
1066
1090
find_changes_file " $MYOUTDIR "
1091
+ find_changes_run_file " $MYOUTDIR "
1067
1092
find_package_name " $SPECFILE "
1068
1093
echo " package name is $PACKAGE_NAME "
1069
1094
set_versha
0 commit comments