Re: [OE-core] [PATCH] opkg: Fix build reproducibility issue
On Mon, 2021-02-08 at 12:21 -0600, Alex Stewart wrote: > On 2/2/21 5:48 PM, Richard Purdie wrote: > > A build date was leaking into the generated docs and makefile used for > > ptests leading to reproducibility issues each time the month changed. > > > > Add a patch to use SOURCE_DATE_EPOCH to derive it if available. > > ACK the objective, but I have a couple concerns about the patch below. > > > +--- opkg-0.4.4.orig/configure.ac > > opkg-0.4.4/configure.ac > > +@@ -281,7 +281,12 @@ AC_FUNC_UTIME_NULL > > + AC_FUNC_VPRINTF > > + AC_CHECK_FUNCS([memmove memset mkdir regcomp strchr strcspn strdup > > strerror strndup strrchr strstr strtol strtoul sysinfo utime]) > > + > > +-CLEAN_DATE=`date +"%B %Y" | tr -d '\n'` > > ++1607446883 > > Is this `1607...` timestamp just some leftover pollution in the > configure.ac file or does it serve some purpose? Sorry, its just junk that crept in from testing. I'm surprised that doesn't error! > > ++if [ ! -z "$SOURCE_DATE_EPOCH" ]; then > > AutoConf doesn't have the shell interpretation of `[`; right? At least > on my system, AutoConf drops the brackets in this statement and writes > the ./configure file as: > > if ! -z "$SOURCE_DATE_EPOCH" ; then > > which obviously fails when executed. Can you use `if test ! -z ...` instead? I should know better than using [] in configure :) The other format should be fine. It probably works as OE always sets this now. Cheers, Richard -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#147837): https://lists.openembedded.org/g/openembedded-core/message/147837 Mute This Topic: https://lists.openembedded.org/mt/80341753/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
Re: [OE-core] [PATCH] opkg: Fix build reproducibility issue
On 2/2/21 5:48 PM, Richard Purdie wrote: A build date was leaking into the generated docs and makefile used for ptests leading to reproducibility issues each time the month changed. Add a patch to use SOURCE_DATE_EPOCH to derive it if available. ACK the objective, but I have a couple concerns about the patch below. +--- opkg-0.4.4.orig/configure.ac opkg-0.4.4/configure.ac +@@ -281,7 +281,12 @@ AC_FUNC_UTIME_NULL + AC_FUNC_VPRINTF + AC_CHECK_FUNCS([memmove memset mkdir regcomp strchr strcspn strdup strerror strndup strrchr strstr strtol strtoul sysinfo utime]) + +-CLEAN_DATE=`date +"%B %Y" | tr -d '\n'` ++1607446883 Is this `1607...` timestamp just some leftover pollution in the configure.ac file or does it serve some purpose? ++if [ ! -z "$SOURCE_DATE_EPOCH" ]; then AutoConf doesn't have the shell interpretation of `[`; right? At least on my system, AutoConf drops the brackets in this statement and writes the ./configure file as: if ! -z "$SOURCE_DATE_EPOCH" ; then which obviously fails when executed. Can you use `if test ! -z ...` instead? ++CLEAN_DATE=`LC_ALL=C date -d @$SOURCE_DATE_EPOCH +"%B %Y" | tr -d '\n'` ++else ++CLEAN_DATE=`date +"%B %Y" | tr -d '\n'` ++fi + + AC_SUBST([CLEAN_DATE]) + diff --git a/meta/recipes-devtools/opkg/opkg_0.4.4.bb b/meta/recipes-devtools/opkg/opkg_0.4.4.bb index f8034ca5fa5..548e81962d7 100644 --- a/meta/recipes-devtools/opkg/opkg_0.4.4.bb +++ b/meta/recipes-devtools/opkg/opkg_0.4.4.bb @@ -15,6 +15,7 @@ SRC_URI = "https://urldefense.com/v3/__http://downloads.yoctoproject.org/releases/$*7BBPN*7D/$*7BBPN*7D-$*7BPV*7D.tar.gz__;JSUlJSUl!!FbZ0ZwI3Qg!-TBdy64CfATG4aDXNwLs-F_1Ucyiha1TiiAh_Q51F5iWdo4LWw-X9cnExOGco7s$ file://opkg.conf \ file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \ file://0001-tests-let-the-OS-negotiate-relative-package-dirs.patch \ + file://sourcedateepoch.patch \ file://run-ptest \ " -- Alex Stewart Software Engineer - NI Real-Time OS NI (National Instruments) alex.stew...@ni.com -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#147836): https://lists.openembedded.org/g/openembedded-core/message/147836 Mute This Topic: https://lists.openembedded.org/mt/80341753/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
[OE-core] [PATCH] opkg: Fix build reproducibility issue
A build date was leaking into the generated docs and makefile used for ptests leading to reproducibility issues each time the month changed. Add a patch to use SOURCE_DATE_EPOCH to derive it if available. Signed-off-by: Richard Purdie --- .../opkg/opkg/sourcedateepoch.patch | 25 +++ meta/recipes-devtools/opkg/opkg_0.4.4.bb | 1 + 2 files changed, 26 insertions(+) create mode 100644 meta/recipes-devtools/opkg/opkg/sourcedateepoch.patch diff --git a/meta/recipes-devtools/opkg/opkg/sourcedateepoch.patch b/meta/recipes-devtools/opkg/opkg/sourcedateepoch.patch new file mode 100644 index 000..285d258c635 --- /dev/null +++ b/meta/recipes-devtools/opkg/opkg/sourcedateepoch.patch @@ -0,0 +1,25 @@ +Having CLEAN_DATE come from the current date doesn't allow for build +reproducibility. Add the option of using SOURCE_DATE_EPOCH if set +which for OE, it will be. + +Upstream-Status: Pending +RP 2021/2/2 + +Index: opkg-0.4.4/configure.ac +=== +--- opkg-0.4.4.orig/configure.ac opkg-0.4.4/configure.ac +@@ -281,7 +281,12 @@ AC_FUNC_UTIME_NULL + AC_FUNC_VPRINTF + AC_CHECK_FUNCS([memmove memset mkdir regcomp strchr strcspn strdup strerror strndup strrchr strstr strtol strtoul sysinfo utime]) + +-CLEAN_DATE=`date +"%B %Y" | tr -d '\n'` ++1607446883 ++if [ ! -z "$SOURCE_DATE_EPOCH" ]; then ++CLEAN_DATE=`LC_ALL=C date -d @$SOURCE_DATE_EPOCH +"%B %Y" | tr -d '\n'` ++else ++CLEAN_DATE=`date +"%B %Y" | tr -d '\n'` ++fi + + AC_SUBST([CLEAN_DATE]) + diff --git a/meta/recipes-devtools/opkg/opkg_0.4.4.bb b/meta/recipes-devtools/opkg/opkg_0.4.4.bb index f8034ca5fa5..548e81962d7 100644 --- a/meta/recipes-devtools/opkg/opkg_0.4.4.bb +++ b/meta/recipes-devtools/opkg/opkg_0.4.4.bb @@ -15,6 +15,7 @@ SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz file://opkg.conf \ file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \ file://0001-tests-let-the-OS-negotiate-relative-package-dirs.patch \ + file://sourcedateepoch.patch \ file://run-ptest \ " -- 2.27.0 -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#147588): https://lists.openembedded.org/g/openembedded-core/message/147588 Mute This Topic: https://lists.openembedded.org/mt/80341753/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-