diff mbox series

systemd: fix SOURCE_DATE_EPOCH conflict with meta-updater

Message ID 20221230132826.35918-1-eduardo.barbosa@toradex.com
State New
Headers show
Series systemd: fix SOURCE_DATE_EPOCH conflict with meta-updater | expand

Commit Message

eduardo.barbosa@toradex.com Dec. 30, 2022, 1:28 p.m. UTC
From: Eduardo Ferreira <eduardo.barbosa@toradex.com>

When we use the 'meta-updater' layer, we get a conflit on
SOURCE_DATE_EPOCH variable. where sota.conf.inc exports,
globally, SOURCE_DATE_EPOCH=0.

This ends up in systemd's TIME_EPOCH constant, that is used
clock_apply_epoch function to determine the difference to the system's
clock. And since there's a big jump we get the following error message
while booting up:
  systemd[1]: Current system time is further ahead 15y after build time, but cannot correct: Invalid argument

So, instead of creating a function to read the environment variable, we
can call get_source_date_epoch_value directly, since this is the way the
variable SOURCE_DATE_EPOCH is populated inside the recipe.

And, this way, SOURCE_DATE_EPOCH can still be used. If the packageconfig
is not used, '-Dtime-epoch=0' will be passed and when time-epoch <= 0,
meson build script will read the value of SOURCE_DATE_EPOCH before
trying to calculate the timestamp via git or by stating the NEWS file.

Signed-off-by: Eduardo Ferreira <eduardo.barbosa@toradex.com>
---
 meta/recipes-core/systemd/systemd_252.4.bb | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

--
2.34.1


[Toradex Logo] <https://www.toradex.com/>       Embedded Computing
Made Easy
Choose Us<https://www.toradex.com/how-to-choose-system-computer-on-module-partner> | Products<https://www.toradex.com/products> | Developer Center<https://developer.toradex.com/> | Community<https://community.toradex.com/> | Careers<https://careers.toradex.com/>
Join our webinar:<https://www.toradex.com/webinars>
- Implementing Power-safe Atomic Over the Air Updates | January 20, 2023: Register<https://www.toradex.com/webinars/implementing-power-safe-atomic-over-the-air-updates>

Meet our engineers at:<https://www.toradex.com/events>
- Embedded World | Nuremberg, Germany | March 14-16, 2023

Comments

Martin Jansa Dec. 30, 2022, 1:37 p.m. UTC | #1
FWIW: there is also SOURCE_DATE_EPOCH removal PR for meta-updater:
https://github.com/uptane/meta-updater/pull/35

as it was breaking more stuff than just systemd, but I no longer use
meta-updater.

On Fri, Dec 30, 2022 at 2:29 PM eduardo.barbosa via lists.openembedded.org
<eduardo.barbosa=toradex.com@lists.openembedded.org> wrote:

> From: Eduardo Ferreira <eduardo.barbosa@toradex.com>
>
> When we use the 'meta-updater' layer, we get a conflit on
> SOURCE_DATE_EPOCH variable. where sota.conf.inc exports,
> globally, SOURCE_DATE_EPOCH=0.
>
> This ends up in systemd's TIME_EPOCH constant, that is used
> clock_apply_epoch function to determine the difference to the system's
> clock. And since there's a big jump we get the following error message
> while booting up:
>   systemd[1]: Current system time is further ahead 15y after build time,
> but cannot correct: Invalid argument
>
> So, instead of creating a function to read the environment variable, we
> can call get_source_date_epoch_value directly, since this is the way the
> variable SOURCE_DATE_EPOCH is populated inside the recipe.
>
> And, this way, SOURCE_DATE_EPOCH can still be used. If the packageconfig
> is not used, '-Dtime-epoch=0' will be passed and when time-epoch <= 0,
> meson build script will read the value of SOURCE_DATE_EPOCH before
> trying to calculate the timestamp via git or by stating the NEWS file.
>
> Signed-off-by: Eduardo Ferreira <eduardo.barbosa@toradex.com>
> ---
>  meta/recipes-core/systemd/systemd_252.4.bb | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/meta/recipes-core/systemd/systemd_252.4.bb
> b/meta/recipes-core/systemd/systemd_252.4.bb
> index eb6f5ecc17..e63b2bb681 100644
> --- a/meta/recipes-core/systemd/systemd_252.4.bb
> +++ b/meta/recipes-core/systemd/systemd_252.4.bb
> @@ -191,10 +191,7 @@ PACKAGECONFIG[sysusers] =
> "-Dsysusers=true,-Dsysusers=false"
>  PACKAGECONFIG[sysvinit] = "-Dsysvinit-path=${sysconfdir}/init.d
> -Dsysvrcnd-path=${sysconfdir},-Dsysvinit-path=
> -Dsysvrcnd-path=,,systemd-compat-units update-rc.d"
>  # When enabled use reproducble build timestamp if set as time epoch,
>  # or build time if not. When disabled, time epoch is unset.
> -def build_epoch(d):
> -    epoch = d.getVar('SOURCE_DATE_EPOCH') or "-1"
> -    return '-Dtime-epoch=%d' % int(epoch)
> -PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
> +PACKAGECONFIG[set-time-epoch] =
> "${@get_source_date_epoch_value(d)},-Dtime-epoch=0"
>  PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
>  PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
>  PACKAGECONFIG[usrmerge] = "-Dsplit-usr=false,-Dsplit-usr=true"
> --
> 2.34.1
>
>
> [Toradex Logo] <https://www.toradex.com/>       Embedded Computing
> Made Easy
> Choose Us<
> https://www.toradex.com/how-to-choose-system-computer-on-module-partner>
> | Products<https://www.toradex.com/products> | Developer Center<
> https://developer.toradex.com/> | Community<https://community.toradex.com/>
> | Careers<https://careers.toradex.com/>
> Join our webinar:<https://www.toradex.com/webinars>
> - Implementing Power-safe Atomic Over the Air Updates | January 20, 2023:
> Register<
> https://www.toradex.com/webinars/implementing-power-safe-atomic-over-the-air-updates
> >
>
> Meet our engineers at:<https://www.toradex.com/events>
> - Embedded World | Nuremberg, Germany | March 14-16, 2023
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#175139):
> https://lists.openembedded.org/g/openembedded-core/message/175139
> Mute This Topic: https://lists.openembedded.org/mt/95953516/3617156
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> Martin.Jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
diff mbox series

Patch

diff --git a/meta/recipes-core/systemd/systemd_252.4.bb b/meta/recipes-core/systemd/systemd_252.4.bb
index eb6f5ecc17..e63b2bb681 100644
--- a/meta/recipes-core/systemd/systemd_252.4.bb
+++ b/meta/recipes-core/systemd/systemd_252.4.bb
@@ -191,10 +191,7 @@  PACKAGECONFIG[sysusers] = "-Dsysusers=true,-Dsysusers=false"
 PACKAGECONFIG[sysvinit] = "-Dsysvinit-path=${sysconfdir}/init.d -Dsysvrcnd-path=${sysconfdir},-Dsysvinit-path= -Dsysvrcnd-path=,,systemd-compat-units update-rc.d"
 # When enabled use reproducble build timestamp if set as time epoch,
 # or build time if not. When disabled, time epoch is unset.
-def build_epoch(d):
-    epoch = d.getVar('SOURCE_DATE_EPOCH') or "-1"
-    return '-Dtime-epoch=%d' % int(epoch)
-PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
+PACKAGECONFIG[set-time-epoch] = "${@get_source_date_epoch_value(d)},-Dtime-epoch=0"
 PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
 PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
 PACKAGECONFIG[usrmerge] = "-Dsplit-usr=false,-Dsplit-usr=true"