Blame SOURCES/persistent-data-load.patch

e965a0
From e866044b7d2050c5558de8e8e2cc7f7d7f34e715 Mon Sep 17 00:00:00 2001
e965a0
From: Dalibor Pospisil <dapospis@redhat.com>
e965a0
Date: Fri, 2 Feb 2018 11:41:00 +0100
e965a0
Subject: [PATCH 2/5] fixed persistent data load for bash <= 4.1.2
e965a0
e965a0
there's no '-g' option to declare in bash <= 4.1.2
e965a0
therefore declare cannot be used for this purpose
e965a0
---
e965a0
 src/journal.sh | 51 +++++++++++++++++++++++++++------------------------
e965a0
 1 file changed, 27 insertions(+), 24 deletions(-)
e965a0
e965a0
diff --git a/src/journal.sh b/src/journal.sh
e965a0
index f35d03b..04e4a10 100644
e965a0
--- a/src/journal.sh
e965a0
+++ b/src/journal.sh
e965a0
@@ -937,31 +937,34 @@ __INTERNAL_PrintHeadLog() {
e965a0
 # functions __INTERNAL_PersistentDataLoad and __INTERNAL_PersistentDataSave
e965a0
 # should be called before and after that respectively.
e965a0
e965a0
+__INTERNAL_PersistentDataSave_sed='s/^declare/\0 -g/'
e965a0
+# ugly workaround for bash-4.1.2 and older, where -g does not exist
e965a0
+# there might be an issue when there's a line break in the variables and there's
e965a0
+# "")'" or "()'" at the end of the line. This should not never happen, the worst
e965a0
+# case might happen in the phase name but is is not expected to contain line
e965a0
+# breaks
e965a0
+declare -g &> /dev/null || __INTERNAL_PersistentDataSave_sed="s/(^declare -a[^=]+=)'\(/\1(/;s/([\"(]\))'$/\1/;s/declare\s+\S+\s+([^=]+=)/\1/"
e965a0
+
e965a0
 __INTERNAL_PersistentDataSave() {
e965a0
-  local var
e965a0
-  (
e965a0
-    for var in \
e965a0
-     __INTERNAL_STARTTIME \
e965a0
-     __INTERNAL_TEST_STATE \
e965a0
-     __INTERNAL_PHASES_PASSED \
e965a0
-     __INTERNAL_PHASES_FAILED \
e965a0
-     __INTERNAL_PHASES_SKIPPED \
e965a0
-     __INTERNAL_JOURNAL_OPEN \
e965a0
-     __INTERNAL_PHASE_OPEN \
e965a0
-     __INTERNAL_PHASES_WORST_RESULT \
e965a0
-     __INTERNAL_METAFILE_INDENT_LEVEL \
e965a0
-     __INTERNAL_PHASE_TYPE \
e965a0
-     __INTERNAL_PHASE_NAME \
e965a0
-     __INTERNAL_PHASE_FAILED \
e965a0
-     __INTERNAL_PHASE_PASSED \
e965a0
-     __INTERNAL_PHASE_STARTTIME \
e965a0
-     __INTERNAL_PHASE_TXTLOG_START \
e965a0
-     __INTERNAL_PHASE_METRICS \
e965a0
-     ;
e965a0
-    do
e965a0
-      declare -p $var
e965a0
-    done
e965a0
-  ) | sed -r 's/declare/\0 -g/' > "$__INTERNAL_PERSISTENT_DATA"
e965a0
+  declare -p \
e965a0
+    __INTERNAL_STARTTIME \
e965a0
+    __INTERNAL_TEST_STATE \
e965a0
+    __INTERNAL_PHASES_PASSED \
e965a0
+    __INTERNAL_PHASES_FAILED \
e965a0
+    __INTERNAL_PHASES_SKIPPED \
e965a0
+    __INTERNAL_JOURNAL_OPEN \
e965a0
+    __INTERNAL_PHASE_OPEN \
e965a0
+    __INTERNAL_PHASES_WORST_RESULT \
e965a0
+    __INTERNAL_METAFILE_INDENT_LEVEL \
e965a0
+    __INTERNAL_PHASE_TYPE \
e965a0
+    __INTERNAL_PHASE_NAME \
e965a0
+    __INTERNAL_PHASE_FAILED \
e965a0
+    __INTERNAL_PHASE_PASSED \
e965a0
+    __INTERNAL_PHASE_STARTTIME \
e965a0
+    __INTERNAL_PHASE_TXTLOG_START \
e965a0
+    __INTERNAL_PHASE_METRICS \
e965a0
+    __INTERNAL_TEST_NAME \
e965a0
+    | sed -r "$__INTERNAL_PersistentDataSave_sed" > "$__INTERNAL_PERSISTENT_DATA"
e965a0
 }
e965a0
e965a0
 __INTERNAL_PersistentDataLoad() {
e965a0
--
e965a0
2.14.3