Project

General

Profile

Actions

Support #567

open

How init git repository for avoiding date error?

Added by gitlab thnx about 2 months ago. Updated 13 days ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
build system
Target version:
Start date:
11/05/2024
Due date:
% Done:

100%

Estimated time:
Affected versions:
Needs backport to:
Affected hardware:
config.emulation_qemu_aarch64_fit_support_timestamps
Affected OS:
Ubuntu Noble Numbat, 24.04, LTS

Description

With compiling for 'config.emulation_qemu_aarch64_fit_support_timestamps' following this tutorial 'https://doc.coreboot.org/tutorial/part1.html'
for origin/main branch on Linux Ubuntu Noble Numbat, 24.04, LTS, for a aarch64 emulation target, there's this error:

fatal: bad object HEAD
fatal: bad object HEAD
fatal: HEAD is neither a commit nor blob
date: invalid date '@'
date: invalid date '@'
date: invalid date '@'
date: invalid date '@'
date: invalid date '@'
date: invalid date '@'
date: invalid date '@'
date: invalid date '@'
fatal: bad object HEAD
fatal: HEAD is neither a commit nor blob
Updating git submodules.
CC romstage/lib/version.o
CC romstage/southbridge/intel/common/rtc.o
CC romstage/southbridge/intel/common/smbus.o
CC romstage/southbridge/intel/i82371eb/early_pm.o
src/lib/version.c:24:75: error: expected expression before ';' token
24 | const unsigned int coreboot_version_timestamp = COREBOOT_VERSION_TIMESTAMP;
| ^
In file included from src/lib/version.c:4:
build/build.h:13:33: error: invalid suffix "x" on integer constant
13 | #define COREBOOT_BUILD_YEAR_BCD 0x
| ~
src/lib/version.c:33:17: note: in expansion of macro 'COREBOOT_BUILD_YEAR_BCD'
33 | .year = COREBOOT_BUILD_YEAR_BCD,
| ~~~~~~~~~~~~~~~~~~~~~~
build/build.h:14:34: error: invalid suffix "x" on integer constant
14 | #define COREBOOT_BUILD_MONTH_BCD 0x
| ~
src/lib/version.c:34:18: note: in expansion of macro 'COREBOOT_BUILD_MONTH_BCD'
34 | .month = COREBOOT_BUILD_MONTH_BCD,
| ~~~~~~~~~~~~~~~~~~~~~~~
build/build.h:15:32: error: invalid suffix "x" on integer constant
15 | #define COREBOOT_BUILD_DAY_BCD 0x
| ~
src/lib/version.c:35:16: note: in expansion of macro 'COREBOOT_BUILD_DAY_BCD'
35 | .day = COREBOOT_BUILD_DAY_BCD,
| ~~~~~~~~~~~~~~~~~~~~~
build/build.h:16:36: error: invalid suffix "x" on integer constant
16 | #define COREBOOT_BUILD_WEEKDAY_BCD 0x
| ~
src/lib/version.c:36:20: note: in expansion of macro 'COREBOOT_BUILD_WEEKDAY_BCD'
36 | .weekday = COREBOOT_BUILD_WEEKDAY_BCD,
| ~~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:430: build/romstage/lib/version.o] Error 1
make: *** Waiting for unfinished jobs....

There seems to be no hint within tutorial documentation for to avoid this missing date and version from/for the repository?

( Thanks for Your time and engagement. )

Actions #1

Updated by gitlab thnx about 2 months ago · Edited

Only difference, just recognized, is repository 'git clone https://github.com/coreboot/coreboot' instead of 'git clone https://review.coreboot.org/coreboot', since on an earlier attempt having difficulties with connecting to the suggested repository for cloning.

One differing file content between these repositories with building/compiling started is within 'make' generated 'build/build.h':
for repository from 'github.com/coreboot/coreboot'

/* build system definitions (autogenerated) */
#ifndef __BUILD_H
#define __BUILD_H

#define COREBOOT_VERSION ""
/* timesource: git */
#define COREBOOT_VERSION_TIMESTAMP 
#define COREBOOT_ORIGIN_GIT_REVISION ""
#define COREBOOT_EXTRA_VERSION ""
#define COREBOOT_MAJOR_VERSION 0
#define COREBOOT_MINOR_VERSION 0
#define COREBOOT_BUILD ""
#define COREBOOT_BUILD_YEAR_BCD 0x
#define COREBOOT_BUILD_MONTH_BCD 0x
#define COREBOOT_BUILD_DAY_BCD 0x
#define COREBOOT_BUILD_WEEKDAY_BCD 0x
#define COREBOOT_BUILD_EPOCH ""
#define COREBOOT_DMI_DATE ""

#define COREBOOT_COMPILE_TIME ""
#define ASL_VERSION 0x20230628
#endif

for repository from 'review.coreboot.org/coreboot'

/* build system definitions (autogenerated) */
#ifndef __BUILD_H
#define __BUILD_H

#define COREBOOT_VERSION "24.08-573-g5e580c79dfd4"
/* timesource: git */
#define COREBOOT_VERSION_TIMESTAMP 1730777704
#define COREBOOT_ORIGIN_GIT_REVISION "5e580c79dfd4"
#define COREBOOT_EXTRA_VERSION ""
#define COREBOOT_MAJOR_VERSION 24
#define COREBOOT_MINOR_VERSION 8
#define COREBOOT_BUILD "Tue Nov 05 03:35:04 UTC 2024"
#define COREBOOT_BUILD_YEAR_BCD 0x24
#define COREBOOT_BUILD_MONTH_BCD 0x11
#define COREBOOT_BUILD_DAY_BCD 0x05
#define COREBOOT_BUILD_WEEKDAY_BCD 0x2
#define COREBOOT_BUILD_EPOCH "1730777704"
#define COREBOOT_DMI_DATE "11/05/2024"

#define COREBOOT_COMPILE_TIME "03:35:04"
#define ASL_VERSION 0x20230628
#endif

The configuration task is maybe within the build system or git infrastructure?

Actions #2

Updated by gitlab thnx about 2 months ago

  • Target version changed from none to master
Actions #3

Updated by Maximilian Brune about 2 months ago · Edited

It looks like the call to the date command is not getting a proper date as argument in util/genbuild_h/genbuild_h.sh. Looks like the git command to fetch the date fails (according to fatal: bad object HEAD in your log`)
Could you execute:

sh -x ./util/genbuild_h/genbuild_h.sh build/xcompile

inside the coreboot directory and post the output?
You might as well also try to execute

git status
git log

Do you also get an error then?

Actions #4

Updated by gitlab thnx about 2 months ago · Edited

Maximilian Brune wrote in #note-3:

sh -x ./util/genbuild_h/genbuild_h.sh build/xcompile
[thnx@gitlab coreboot]# sh -x ./util/genbuild_h/genbuild_h.sh build/xcompile
+ DATE=
+ GITREV=
+ TIMESOURCE=
+ XGCCPATH=util/crossgcc/xgcc/bin/
+ MAJOR_VER=
+ MINOR_VER=
+ COREBOOT_VERSION_FILE=.coreboot-version
+ export LANG=C
+ export LC_ALL=C
+ export TZ=UTC0
+ XCOMPILE=build/xcompile
+ [ -z build/xcompile ]
+ [ build/xcompile = --help ]
+ [  = 1 ]
+ git rev-parse --is-inside-work-tree
+ [ true = true ]
+ get_git_head_data %h
+ LANG= git log --no-show-signature --abbrev=12 -1 --format=format:%h
+ LANG= git log --abbrev=12 -1 --format=format:%h
fatal: bad object HEAD
+ GITREV=
+ TIMESOURCE=git
+ get_git_head_data %ct
+ LANG= git log --no-show-signature --abbrev=12 -1 --format=format:%ct
+ LANG= git log --abbrev=12 -1 --format=format:%ct
fatal: bad object HEAD
+ DATE=
+ git describe
fatal: HEAD is neither a commit nor blob
+ VERSION=
+ echo 
+ sed -n s/^0*\([0-9]*\)\.0*\([0-9]*\).*/\1/p
+ MAJOR_VER=
+ echo 
+ sed -n s/^0*\([0-9]*\)\.0*\([0-9]*\).*/\2/p
+ MINOR_VER=
+ IASL=util/crossgcc/xgcc/bin/iasl
+ grep ^IASL:= build/xcompile
+ sed s,:=,=,
+ eval IASL=/mnt/sda1/__git/coreboot/util/crossgcc/xgcc/bin//iasl
+ IASL=/mnt/sda1/__git/coreboot/util/crossgcc/xgcc/bin//iasl
+ [ ! -x /mnt/sda1/__git/coreboot/util/crossgcc/xgcc/bin//iasl ]
+ /mnt/sda1/__git/coreboot/util/crossgcc/xgcc/bin//iasl -v
+ grep version
+ sed s/.*version //
+ IASLVERSION=20230628
+ printf /* build system definitions (autogenerated) */\n
/* build system definitions (autogenerated) */
+ printf #ifndef __BUILD_H\n
#ifndef __BUILD_H
+ printf #define __BUILD_H\n\n
#define __BUILD_H

+ printf #define COREBOOT_VERSION %s\n ""
#define COREBOOT_VERSION ""
+ printf /* timesource: %s */\n git
/* timesource: git */
+ printf #define COREBOOT_VERSION_TIMESTAMP %s\n 
#define COREBOOT_VERSION_TIMESTAMP 
+ printf #define COREBOOT_ORIGIN_GIT_REVISION "%s"\n 
#define COREBOOT_ORIGIN_GIT_REVISION ""
+ printf #define COREBOOT_EXTRA_VERSION "%s"\n 
#define COREBOOT_EXTRA_VERSION ""
+ printf #define COREBOOT_MAJOR_VERSION %s\n 0
#define COREBOOT_MAJOR_VERSION 0
+ printf #define COREBOOT_MINOR_VERSION %s\n 0
#define COREBOOT_MINOR_VERSION 0
+ our_date  +%a %b %d %H:%M:%S %Z %Y
+ uname
+ date -d @ +%a %b %d %H:%M:%S %Z %Y
date: invalid date '@'
+ printf #define COREBOOT_BUILD "%s"\n 
#define COREBOOT_BUILD ""
+ our_date  +%y
+ uname
+ date -d @ +%y
date: invalid date '@'
+ printf #define COREBOOT_BUILD_YEAR_BCD 0x%s\n 
#define COREBOOT_BUILD_YEAR_BCD 0x
+ our_date  +%m
+ uname
+ date -d @ +%m
date: invalid date '@'
+ printf #define COREBOOT_BUILD_MONTH_BCD 0x%s\n 
#define COREBOOT_BUILD_MONTH_BCD 0x
+ our_date  +%d
+ uname
+ date -d @ +%d
date: invalid date '@'
+ printf #define COREBOOT_BUILD_DAY_BCD 0x%s\n 
#define COREBOOT_BUILD_DAY_BCD 0x
+ our_date  +%w
+ uname
+ date -d @ +%w
date: invalid date '@'
+ printf #define COREBOOT_BUILD_WEEKDAY_BCD 0x%s\n 
#define COREBOOT_BUILD_WEEKDAY_BCD 0x
+ our_date  +%s
+ uname
+ date -d @ +%s
date: invalid date '@'
+ printf #define COREBOOT_BUILD_EPOCH "%s"\n 
#define COREBOOT_BUILD_EPOCH ""
+ our_date  +%m/%d/%Y
+ uname
+ date -d @ +%m/%d/%Y
date: invalid date '@'
+ printf #define COREBOOT_DMI_DATE "%s"\n 
#define COREBOOT_DMI_DATE ""
+ printf \n

+ our_date  +%T
+ uname
+ date -d @ +%T
date: invalid date '@'
+ printf #define COREBOOT_COMPILE_TIME "%s"\n 
#define COREBOOT_COMPILE_TIME ""
+ printf #define ASL_VERSION 0x%s\n 20230628
#define ASL_VERSION 0x20230628
+ printf #endif\n
#endif
git status
git log
[thnx@gitlab coreboot]# git status  
fatal: bad object HEAD
fatal: 'git status --porcelain=2' failed in submodule 3rdparty/arm-trusted-firmware
[thnx@gitlab coreboot]# git log  
fatal: bad object HEAD

( FYI (for comparison); with 'cd' into cloned review.coreboot.org/coreboot repository:

[thnx@gitlab coreboot]# git status 
On branch main
Your branch is up to date with 'origin/main'.


It took 3.23 seconds to enumerate untracked files. 'status -uno'
may speed it up, but you have to be careful not to forget to add
new files yourself (see 'git help status').
nothing to commit, working tree clean

) ( Thanks for Your work and engagement. )

Actions #5

Updated by Maximilian Brune about 2 months ago

Your coreboot git folder seems to be weirdly broken.
Can you reproduce this? So remove the coreboot folder and clone coreboot again? It looks like a clean clone of coreboot should fix this.

Actions #6

Updated by gitlab thnx about 1 month ago · Edited

Maximilian Brune wrote in #note-5:

Your coreboot git folder seems to be weirdly broken.
Can you reproduce this? So remove the coreboot folder and clone coreboot again? It looks like a clean clone of coreboot should fix this.

Retrying several times for several filesystems (ext4, ntfs, virtual filesystem tmpfs) there's (mostly) always a difference between the 'github.com/coreboot/coreboot' and the 'review.coreboot.org/coreboot' repository for git status and git log, with being functional for the second mentioned.
One influence seems being the '--recursive' option, that maybe disturbs cloning for all needed git 'date' fetching capability for the 'github.com/coreboot/coreboot' repository. Once not using that option with cloning, the repository seems functional (tested on ntfs filesystems, with Ubuntu Jammy, aarch64 hw), but this doesn't seem to affect the 'review.coreboot.org/coreboot' repository (why?).

Maybe You can tell me Your experience with starting from 'git clone --recursive github.com/coreboot/coreboot', if having a functional local repository for building the binaries or otherwise repeating the issue. (thx)

Actions #7

Updated by Maximilian Brune about 1 month ago

Maybe You can tell me Your experience with starting from 'git clone --recursive github.com/coreboot/coreboot', if having a functional local repository for building the binaries or otherwise repeating the issue. (thx)

I issued the following comment: git clone --recursive "https://github.com/coreboot/coreboot" and it works fine for me. I get no errors when I issue a git status or git log.
Did you try it on another device?

Actions #8

Updated by gitlab thnx about 1 month ago · Edited

I issued the following comment: git clone --recursive "https://github.com/coreboot/coreboot" and it works fine for me. I get no errors when I issue a git status or git log.
Did you try it on another device?

with correction on my previous assumption: 'Retrying several times for several filesystems ( ext4 , ntfs, virtual filesystem tmpfs )'

Probably found one reason, since cloning was always to a ntfs partition and local 'coreboot' repository directories were copied to the other filesystems for saving time and bandwidth. With directly cloning to an ext4 partition (now tested with https://github.com/coreboot/coreboot) git status and git log are returning suitable results.

The weird thing is, the repository from https://review.coreboot.org/coreboot is functional on ntfs partition with git status and git log.
(Differences from ntfs compared to ext4 might affect the cloned structures? At the moment, this seems being the most probable reason for the git structure/naming(?) related errors for repositories from https://github.com/coreboot/coreboot on a local ntfs filesystem. Maybe git diff can offer hints where mentioned git repositories are different?
If verified, maybe there's need for something to change or a hint in documentation/tutorials for handling repositories on local (ntfs, btrfs?, xfs?, hfs?, f2fs?, exfat?) filesystems?) (thx)

Actions #9

Updated by Maximilian Brune about 1 month ago

I now tried (2 times) to format one of my USB sticks with a NTFS partition and cloned the repository in there with:

git clone --recursive "https://github.com/coreboot/coreboot"

And git status and git log work fine. I can't seem to reproduce the issues you face.

Actions #10

Updated by gitlab thnx about 1 month ago

Maybe it's about ntfs version or mounting options? (thx)
ntfs-3g --version

'ntfs-3g 2021.8.22 integrated FUSE 28 - Third Generation NTFS Driver
        Configuration type 7, XATTRS are on, POSIX ACLS are on'

mount | grep -e 'fuseblk' -e 'ntfs'

'/dev/sda11 on /media/sda11 type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)' 

uname -a

'Linux server 6.10.0-05082024 #9 SMP PREEMPT Sat Nov  2 11:35:22 CET 2024 aarch64 aarch64 aarch64 GNU/Linux'

lsb_release -d

'Description:   Ubuntu 22.04.5 LTS'
Actions #11

Updated by Maximilian Brune about 1 month ago

ntfs-3g --version

ntfs-3g 2022.10.3 external FUSE 29

mount | grep -e 'fuseblk' -e 'ntfs'

/dev/sda1 on /mnt type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096)

uname -a

Linux mmax 6.11.3-artix1-1 #1 SMP PREEMPT_DYNAMIC Fri, 11 Oct 2024 03:02:25 +0000 x86_64 GNU/Linux

lsb_release -d

Description:    Artix Linux

good luck on the bug hunt. let me know if you need anything else.

Actions #12

Updated by gitlab thnx 14 days ago · Edited

With compiling for 'config.emulation_qemu_aarch64_fit_support_timestamps' following this tutorial 'https://doc.coreboot.org/tutorial/part1.html'
for origin/main branch on Linux for a aarch64 emulation target
[etc.]
( Thanks for Your time and engagement. )

meanwhile, with otherwise no significant changes to Ubuntu 22.04, Jammy (not tested on more advanced Ubuntu 24.04, Noble Numbat), but apt-get update && apt-get upgrade and a (cold) reboot enabled, the issue is (also on ntfs) no more reproducible.
( the cause for the issue is unknown to me, but one small difference with mount options occurred since:
/dev/sda11 on /mnt/sda11 type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096) , no 'default_permissions' utilized )

Thanks (& @all the unknown) again, for Your time and engagement

Actions #13

Updated by gitlab thnx 13 days ago

  • % Done changed from 0 to 100
Actions

Also available in: Atom PDF