Support #567
openHow init git repository for avoiding date error?
100%
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. )
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?
Updated by gitlab thnx about 2 months ago
- Target version changed from none to master
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?
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. )
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.
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)
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?
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 agit status
orgit 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)
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.
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'
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.
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