Created attachment 455602 [details] build.log.gz rmv7a-hardfp-musl-hardened ~ # emerge --info dracut Portage 2.3.1 (python 2.7.12-final-0, hardened/linux/musl/arm/armv7a, gcc-4.9.4, musl-1.1.15-r2, 4.7.10-hardened armv7l) ================================================================= System Settings ================================================================= System uname: Linux-4.7.10-hardened-armv7l-with-gentoo-2.3 KiB Mem: 65970600 total, 22771192 free KiB Swap: 10485756 total, 10470988 free Timestamp of repository gentoo: Fri, 09 Dec 2016 08:22:13 +0000 sh bash 4.3_p48 ld GNU ld (Gentoo 2.25.1 p1.1) 2.25.1 app-shells/bash: 4.3_p48::gentoo dev-lang/perl: 5.22.2::gentoo dev-lang/python: 2.7.12::gentoo, 3.4.5::gentoo dev-util/cmake: 3.5.2-r1::gentoo dev-util/pkgconfig: 0.28-r2::gentoo sys-apps/baselayout: 2.3::gentoo sys-apps/openrc: 0.21.7::gentoo sys-apps/sandbox: 2.10-r1::musl sys-devel/autoconf: 2.69::gentoo sys-devel/automake: 1.11.6-r1::gentoo, 1.14.1::gentoo, 1.15::gentoo sys-devel/binutils: 2.25.1-r1::gentoo sys-devel/gcc: 4.9.4-r99::musl sys-devel/gcc-config: 1.7.3::gentoo sys-devel/libtool: 2.4.6::gentoo sys-devel/make: 4.1-r1::gentoo sys-kernel/linux-headers: 4.3::musl (virtual/os-headers) sys-libs/musl: 1.1.15-r2::gentoo Repositories: gentoo location: /usr/portage sync-type: git sync-uri: https://github.com/gentoo-mirror/gentoo priority: -1000 musl location: /usr/portage-overlays/musl sync-type: git sync-uri: git://anongit.gentoo.org/proj/musl.git masters: gentoo Installed sets: @archive, @arm-base-system, @portage, @vcs ACCEPT_KEYWORDS="arm" ACCEPT_LICENSE="* -@EULA" CBUILD="armv7a-hardfloat-linux-musleabi" CFLAGS="-O2 -pipe -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard" CHOST="armv7a-hardfloat-linux-musleabi" CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" CXXFLAGS="-O2 -pipe -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard" DISTDIR="/usr/portage-distfiles" EMERGE_DEFAULT_OPTS=" --jobs --keep-going --newuse --deep --backtrack=3000 --complete-graph --with-bdeps=y" FCFLAGS="-O2 -pipe -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard" FEATURES="assume-digests binpkg-logs buildpkg clean-logs compress-build-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch parallel-install preserve-libs protect-owned sandbox sfperms split-elog split-log strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-O2 -pipe -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard" GENTOO_MIRRORS="http://distfiles.gentoo.org" INSTALL_MASK="charset.alias" LDFLAGS="-Wl,-O1 -Wl,--as-needed" MAKEOPTS="-j30" PKGDIR="/usr/portage-packages" PORTAGE_COMPRESS="xz" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" PORTAGE_TMPDIR="/var/tmp" USE="a52 aac acpi alsa apng arm avahi bindist branding cairo cdda cdr cli cracklib crypt cxx d-pau dbus dconf dri dts dvd dvdr egl emboss encode exif fam ffmpeg flac fortran gcj gd gif gnome-keyring gpm gstreamer gtk gudev hardened iconv icu ipv6 jpeg lcms libnotify libsecret lm_sensors mad minizip mng modules mp3 mp4 mpeg ncurses networkmanager nls nptl ogg opengl openmp pam pango pax_kernel pcre pdf pic png policykit ppds pulseaudio python qt5 readline samba sdl seccomp session sound spell sqlite ssl startup-notification svg tcpd theora threads tiff truetype udev udisks unicode upower usb vaapi vorbis wayland widevine wifi xattr xcb xinerama xml xv xvid zeroconf zlib" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="musl" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="coreboot efi-64 emu qemu pc" INPUT_DEVICES="evdev mouse keyboard libinput" KERNEL="linux" L10N="en en-US" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en en_US" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_4" QEMU_SOFTMMU_TARGETS="arm aarch64 x86_64" QEMU_USER_TARGETS="arm aarch64 x86_64" RUBY_TARGETS="ruby21 ruby21" USERLAND="GNU" VIDEO_CARDS="vesa modesetting fbdev" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CC, CPPFLAGS, CTARGET, CXX, LANG, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON In file included from install/util.h:40:0, from install/util.c:27: install/util.h: In function ‘safe_atolu’: install/macro.h:153:17: error: duplicate case value case !!(expr): \ ^ install/util.h:181:9: note: in expansion of macro ‘assert_cc’ assert_cc(sizeof(unsigned long) == sizeof(unsigned long long)); ^ In file included from install/util.h:40:0, from install/strv.c:26: install/util.h: In function ‘safe_atolu’: install/macro.h:152:17: error: previously used here case 0: \ ^
I suspect musl does not define the __WORDSIZE macro in the same place as glibc.
On some architectures musl exposes __WORDSIZE via <sys/reg.h>, on some via <sys/user.h>. It is not entirely clear to me whether it is intended to expose __WORDSIZE at, though. How about something like: --- a/install/util.h +++ b/install/util.h @@ -167,25 +167,23 @@ int safe_atollu(const char *s, unsigned long long *ret_u); int safe_atolli(const char *s, long long int *ret_i); -#if __WORDSIZE == 32 static inline int safe_atolu(const char *s, unsigned long *ret_u) { - assert_cc(sizeof(unsigned long) == sizeof(unsigned)); - return safe_atou(s, (unsigned*) ret_u); -} -static inline int safe_atoli(const char *s, long int *ret_u) { - assert_cc(sizeof(long int) == sizeof(int)); - return safe_atoi(s, (int*) ret_u); -} -#else -static inline int safe_atolu(const char *s, unsigned long *ret_u) { - assert_cc(sizeof(unsigned long) == sizeof(unsigned long long)); - return safe_atollu(s, (unsigned long long*) ret_u); + assert_cc((sizeof(unsigned long) == sizeof(unsigned)) || + (sizeof(unsigned long) == sizeof(unsigned long long))); + if (sizeof(unsigned long) == sizeof(unsigned)) + return safe_atou(s, (unsigned*) ret_u); + else if (sizeof(unsigned long) == sizeof(unsigned long long)) + return safe_atollu(s, (unsigned long long*) ret_u); } + static inline int safe_atoli(const char *s, long int *ret_u) { - assert_cc(sizeof(long int) == sizeof(long long int)); - return safe_atolli(s, (long long int*) ret_u); + assert_cc((sizeof(long int) == sizeof(int)) || + (sizeof(long int) == sizeof(long long int))); + if (sizeof(long int) == sizeof(int)) + return safe_atoi(s, (int*) ret_u); + else if (sizeof(long int) == sizeof(long long int)) + return safe_atolli(s, (long long int*) ret_u); } -#endif static inline int safe_atou32(const char *s, uint32_t *ret_u) { assert_cc(sizeof(uint32_t) == sizeof(unsigned));
The header was originated from systemd. And here is solution from systemd: https://github.com/systemd/systemd/commit/8507eb20b64010b26f23822cbf442bb0bf96511c
https://github.com/dracutdevs/dracut/pull/460
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3a5005c33678f26a1477a49e791f89a8480c523a commit 3a5005c33678f26a1477a49e791f89a8480c523a Author: Alexander Tsoy <alexander@tsoy.me> AuthorDate: 2019-01-11 18:40:03 +0000 Commit: Mike Gilbert <floppym@gentoo.org> CommitDate: 2019-01-21 14:23:15 +0000 sys-kernel/dracut: version bump to 049 Bug: https://bugs.gentoo.org/602122 Bug: https://bugs.gentoo.org/670450 Closes: https://github.com/gentoo/gentoo/pull/10808 Package-Manager: Portage-2.3.51, Repoman-2.3.11 Signed-off-by: Alexander Tsoy <alexander@tsoy.me> Signed-off-by: Mike Gilbert <floppym@gentoo.org> sys-kernel/dracut/Manifest | 1 + sys-kernel/dracut/dracut-049.ebuild | 158 +++++++++++++++++++++ ...etwork-Don-t-include-40network-by-default.patch | 34 +++++ ...49-remove-bashism-in-various-boot-scripts.patch | 89 ++++++++++++ 4 files changed, 282 insertions(+)