Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 682170 - dev-libs/icu-64.1 fails to build on big-endian architectures: make[1]: *** No rule to make target 'out', needed by 'out/icudt64b.dat'. Stop.
Summary: dev-libs/icu-64.1 fails to build on big-endian architectures: make[1]: *** No...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All All
: Normal normal (vote)
Assignee: Gentoo Office Team
URL: https://unicode-org.atlassian.net/bro...
Whiteboard:
Keywords: PATCH
Depends on:
Blocks: 685288
  Show dependency tree
 
Reported: 2019-03-31 20:18 UTC by Jeroen Roovers (RETIRED)
Modified: 2019-05-07 22:20 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
dev-libs:icu-64.1:20190331-170013.log (dev-libs:icu-64.1:20190331-170013.log,149.04 KB, text/plain)
2019-03-31 20:18 UTC, Jeroen Roovers (RETIRED)
Details
icu-64.1-data_archive_generation.patch (icu-64.1-data_archive_generation.patch,439 bytes, patch)
2019-04-02 02:41 UTC, Arfrever Frehtes Taifersar Arahesis
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Jeroen Roovers (RETIRED) gentoo-dev 2019-03-31 20:18:03 UTC
Created attachment 571418 [details]
dev-libs:icu-64.1:20190331-170013.log

make[2]: Leaving directory '/var/tmp/portage/dev-libs/icu-64.1/work/icu/source-.hppa/tools/escapesrc'
make[2]: Entering directory '/var/tmp/portage/dev-libs/icu-64.1/work/icu/source-.hppa/tools'
make[2]: Nothing to be done for 'all-local'.
make[2]: Leaving directory '/var/tmp/portage/dev-libs/icu-64.1/work/icu/source-.hppa/tools'
make[1]: Leaving directory '/var/tmp/portage/dev-libs/icu-64.1/work/icu/source-.hppa/tools'
make[0]: Making `all' in `data'
make[1]: Entering directory '/var/tmp/portage/dev-libs/icu-64.1/work/icu/source-.hppa/data'
make -f pkgdataMakefile
make[1]: *** No rule to make target 'out', needed by 'out/icudt64b.dat'.  Stop.
make[1]: *** Waiting for unfinished jobs....
make[2]: Entering directory '/var/tmp/portage/dev-libs/icu-64.1/work/icu/source-.hppa/data'
rm -rf icupkg.inc
make[2]: Leaving directory '/var/tmp/portage/dev-libs/icu-64.1/work/icu/source-.hppa/data'
make[1]: Leaving directory '/var/tmp/portage/dev-libs/icu-64.1/work/icu/source-.hppa/data'
make: *** [Makefile:153: all-recursive] Error 2
 * ERROR: dev-libs/icu-64.1::gentoo failed (compile phase):
 *   emake failed


[ebuild     U  ]                                                    dev-libs/icu-64.1:0/64.1::gentoo [63.1-r1:0/63.1::gentoo] USE="-debug -doc -examples -static-libs" 0 KiB

Sun 31 Mar 22:17:22 CEST 2019
emerge --info =dev-libs/icu-64.1:0/64.1::gentoo
Portage 2.3.62 (python 3.5.7-final-0, default/linux/hppa/17.0, gcc-8.2.0, glibc-2.29-r1, 5.0.0-JeR-11515-g3b319ee220a8 parisc64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-5.0.0-JeR-11515-g3b319ee220a8-parisc64-PA8800_-Mako-with-gentoo-2.6
KiB Mem:     8233016 total,    544720 free
KiB Swap:          0 total,         0 free
Timestamp of repository gentoo: Sun, 31 Mar 2019 14:15:01 +0000
Head commit of repository gentoo: f9341a8c9836f0709a8c6e2ee8719207c38d8758
sh bash 5.0_p3-r1
ld GNU ld (Gentoo 2.31.1 p5) 2.31.1
distcc[14360] (dcc_mkdir) ERROR: mkdir '/dev/shm/distcc/root/state' failed: No such file or directory [disabled]
ccache version 3.6 [disabled]
app-shells/bash:          5.0_p3-r1::gentoo
dev-lang/perl:            5.28.0::gentoo
dev-lang/python:          2.7.16::gentoo, 3.4.8-r1::gentoo, 3.5.7::gentoo, 3.6.8::gentoo, 3.7.3::gentoo
dev-util/ccache:          3.6::gentoo
dev-util/cmake:           3.14.1::gentoo
sys-apps/baselayout:      2.6-r1::gentoo
sys-apps/openrc:          0.41.2::gentoo
sys-apps/sandbox:         2.17::gentoo
sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r4::gentoo
sys-devel/automake:       1.9.6-r3::gentoo, 1.11.6-r3::gentoo, 1.12.6::gentoo, 1.13.4-r2::gentoo, 1.14.1::gentoo, 1.15.1-r2::gentoo, 1.16.1-r1::gentoo
sys-devel/binutils:       2.25.1-r1::gentoo, 2.26.1::gentoo, 2.29::gentoo, 2.29.1-r1::gentoo, 2.30-r3::gentoo, 2.31.1-r4::gentoo, 2.32::gentoo
sys-devel/gcc:            6.4.0-r5::gentoo, 7.3.0-r6::gentoo, 8.2.0-r6::gentoo, 8.3.0::gentoo
sys-devel/gcc-config:     2.0::gentoo
sys-devel/libtool:        2.4.6-r5::gentoo
sys-devel/make:           4.2.1-r4::gentoo
sys-kernel/linux-headers: 5.0-r1::gentoo (virtual/os-headers)
sys-libs/glibc:           2.29-r1::gentoo
Repositories:

gentoo
    location: /aches/gentoo/portage
    sync-type: rsync
    sync-uri: rsync://rsync.nl.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-verify-metamanifest: yes
    sync-rsync-verify-jobs: 1
    sync-rsync-extra-opts: 
    sync-rsync-verify-max-age: 24

JeR
    location: /aches/gentoo/local
    masters: gentoo
    priority: -100

ACCEPT_KEYWORDS="hppa ~hppa"
ACCEPT_LICENSE="*"
CBUILD="hppa2.0-unknown-linux-gnu"
CFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -O2 -pipe -Wno-comment"
CHOST="hppa2.0-unknown-linux-gnu"
CONFIG_PROTECT="/etc /etc/stunnel/stunnel.conf /usr/lib/distcc/bin /usr/share/easy-rsa /usr/share/gnupg/qualified.txt /var/bind /var/www/localhost/htdocs/wordpress/wp-config.php"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.6/ext-active/ /etc/php/apache2-php7.1/ext-active/ /etc/php/apache2-php7.2/ext-active/ /etc/php/apache2-php7.3/ext-active/ /etc/php/cgi-php5.6/ext-active/ /etc/php/cgi-php7.1/ext-active/ /etc/php/cgi-php7.2/ext-active/ /etc/php/cgi-php7.3/ext-active/ /etc/php/cli-php5.6/ext-active/ /etc/php/cli-php7.1/ext-active/ /etc/php/cli-php7.2/ext-active/ /etc/php/cli-php7.3/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -O2 -pipe"
DISTDIR="/aches/gentoo/distfiles"
EMERGE_DEFAULT_OPTS="--quiet-build=n --autounmask=n --keep-going --ignore-built-slot-operator-deps=y"
ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS=""
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg compressdebug config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync metadata-transfer multilib-strict news notitles parallel-fetch preserve-libs protect-owned sandbox sfperms splitdebug strict test-fail-continue unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -O2 -pipe"
GENTOO_MIRRORS=" 	http://ftp.snt.utwente.nl/pub/os/linux/gentoo 	http://mirror.leaseweb.com/gentoo/ 	http://mirror.netcologne.de/gentoo/ "
LANG="en_GB.utf8"
LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,--no-keep-memory"
LINGUAS="en nl he"
MAKEOPTS="-j3"
PKGDIR="/aches/gentoo/packages/karsten"
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="256-color X acl alsa amr anacron apng argyllcms audit bash-completion beautifulsoup3 berkdb bfio big-endian bittorrent botan bzip2 cairo canberra cli consolekit coverage crossdev crypt cups custom-cflags cxx dane dbus declarative dirac directfb distinct-l dlz dot dri emacs exceptions exif expat fbcon ffmpeg filecaps firefox firmware foomaticdb fortran frontend-optional g-sorcery gbm gdbm geoip geoloc glep gles1 gles2 gost gpg gpm gsm gstreamer gtk gudev guile hddtemp hppa hwdb iconv idn imlib inotify ipv6 jadetex javascript jingle jit jpeg jpeg2k json kdrive kmod ladspa lasi launch-frontend lensfun libcaca libcanberra libevent libidn2 libopts libsoxr libusb libwww lua lzma lzo mad mng mod modplug mp3 mtp multislot multitarget munge nagios nas natspec ncurses netlink nfs nls nptl objc objc++ objc-gc offensive ofono-headset openexr opengl openmp openrc openvg opus oqgraph osmesa oss pam pcre pcre16 php pic pkcs11 png pnm policykit python qt qt3support qt4 raw readline realtime regression-test rtmp rubytests samba sbc schroedinger sctp smi snappy socks5 speex spell spidermonkey sqlite ssl svg tcl tcpd tga theora threads tiff tk tokyocabinet truetype unicode unwind v4l vim-syntax vorbis vpx wcwidth x264 x265 xattr xcb xft xhtml xkb xvfb xvid zlib" ALSA_CARDS="ad1889 usb-audio" 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="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CURL_SSL="nss" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev joystick keyboard mouse acecad aiptek calcomp citron digitaledge dmc dynapro elo2300 elographics fpit hyperpen jamstudio magellan microtouch mutouch palmax penmount spaceorb summa tek4957 tslib ur98 virtualbox libinput void" KERNEL="linux" L10N="en nl he" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" NETBEANS_MODULES="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6 php7-1" POSTGRES_TARGETS="postgres9_5 postgres10" PYTHON_SINGLE_TARGET="python3_5" PYTHON_TARGETS="python2_7 python3_6 python3_5" RUBY_TARGETS="ruby24 ruby25" USERLAND="GNU" VIDEO_CARDS="stifb dummy" 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, INSTALL_MASK, LC_ALL, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Arfrever Frehtes Taifersar Arahesis 2019-04-02 02:37:58 UTC
> make[1]: *** No rule to make target 'out', needed by 'out/icudt64b.dat'.  Stop.

'out' is value of $(OUTDIR) set in source/data/Makefile.in:
OUTDIR=./out

icudt${version}b.dat is used on big-endian architectures.
icudt${version}l.dat is used on little-endian architectures.

In both ICU 63.1 and 64.1, pre-generated .dat file is provided only for little-endian architectures:
ICU 63.1 tarball contains source/data/in/icudt63l.dat
ICU 64.1 tarball contains source/data/in/icudt64l.dat


source/data/Makefile.in later contains:
[[[
# Find out if we have a source archive.
# If we have that, then use that instead of building everything from scratch.
ICUDATA_SOURCE_ARCHIVE = $(wildcard $(srcdir)/in/$(ICUDATA_PLATFORM_NAME).dat)
ifeq ($(ICUDATA_SOURCE_ARCHIVE),)
ICUDATA_ARCHIVE = $(firstword $(wildcard $(srcdir)/in/$(ICUDATA_BASENAME_VERSION)*.dat))
# We don't have the data in the current endianess or charset.
# See if we can find data of any archive type,
# and convert it to the current type.
ifneq ($(ICUDATA_ARCHIVE),)
ICUDATA_SOURCE_ARCHIVE = $(OUTDIR)/$(ICUDATA_PLATFORM_NAME).dat
$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE) $(OUTDIR)
        $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(ICUDATA_ARCHIVE) $(ICUDATA_SOURCE_ARCHIVE)
endif
else
...
endif
]]]

So on big-endian architectures, icupkg tool is used to create icudt64b.dat ($(ICUDATA_SOURCE_ARCHIVE)) from icudt64l.dat ($(ICUDATA_ARCHIVE)).
The same behavior is in ICU 63.1.
In both ICU 63.1 and 64.1, source/data/Makefile.in contains this line:
$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE) $(OUTDIR)
                                              ^^^^^^^^^

The problem probably started to occur due to this change between ICU 63.1 and 64.1:
[[[
-BUILD_DIRS=$(OUTDIR) $(MAINBUILDDIR) $(BUILDDIR) $(CURRBLDDIR) $(LANGBLDDIR) $(REGIONBLDDIR) $(ZONEBLDDIR) $(UNITBLDDIR) $(BRKBLDDIR) $(COLBLDDIR) $(RBNFBLDDIR) $(TRANSLITBLDDIR) $(OUTTMPDIR) $(OUTTMPDIR_390STUB) $(OUTTMPDIR)/$(CURR_TREE) $(OUTTMPDIR)/$(LANG_TREE) $(OUTTMPDIR)/$(REGION_TREE) $(OUTTMPDIR)/$(ZONE_TREE) $(OUTTMPDIR)/$(UNIT_TREE) $(OUTTMPDIR)/$(COLLATION_TREE) $(OUTTMPDIR)/$(RBNF_TREE) $(OUTTMPDIR)/$(TRANSLIT_TREE) $(OUTTMPDIR)/$(BREAK_TREE)
...
-$(BUILD_DIRS): build-dir
-
-build-dir:
-       @-$(RMV) $@
-       echo timestamp > $@.tmp
-       @list='$(BUILD_DIRS)'; \
-       for dir in $$list; do \
-         if ! test -d $$dir; then \
-           echo $(MKINSTALLDIRS) $(BUILD_DIRS); \
-           $(MKINSTALLDIRS) $(BUILD_DIRS); \
-         fi; \
-       done
-       mv $@.tmp $@
]]]


Directory $(OUTDIR) gets created for me on little-endian architecture, but by a target run later.

There seem to be 2 alternative fixes:

1. Defining target $(OUTDIR) somewhere:
+$(OUTDIR):
+       @$(MKINSTALLDIRS) $(OUTDIR)

2. Dropping dependency on target $(OUTDIR) and creating directory $(OUTDIR) directly:
 ifneq ($(ICUDATA_ARCHIVE),)
 ICUDATA_SOURCE_ARCHIVE = $(OUTDIR)/$(ICUDATA_PLATFORM_NAME).dat
-$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE) $(OUTDIR)
+$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE)
+       $(MKINSTALLDIRS) $(OUTDIR)
        $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(ICUDATA_ARCHIVE) $(ICUDATA_SOURCE_ARCHIVE)
 endif

There are no other dependencies on target $(OUTDIR), so the second fix might be preferred.
($(MKINSTALLDIRS) refers to script source/mkinstalldirs which already checks for existence of directory before creating it and has parallel-safe behavior.)
Comment 2 Arfrever Frehtes Taifersar Arahesis 2019-04-02 02:41:29 UTC
Created attachment 571552 [details, diff]
icu-64.1-data_archive_generation.patch

Please test this patch. If it works, I will send it to upstream.
Comment 3 Jeroen Roovers (RETIRED) gentoo-dev 2019-04-02 08:37:48 UTC
It works.
Comment 4 Arfrever Frehtes Taifersar Arahesis 2019-05-07 22:20:05 UTC
icu-64.1-data_archive_generation.patch added in commit 69ff75e390a563e731c8e124d557d1513fba31d1:

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=69ff75e390a563e731c8e124d557d1513fba31d1

commit 69ff75e390a563e731c8e124d557d1513fba31d1
Author:     Lars Wendler <polynomial-c@gentoo.org>
AuthorDate: 2019-04-21 11:32:00 +0000
Commit:     Lars Wendler <polynomial-c@gentoo.org>
CommitDate: 2019-04-21 11:35:18 +0000

    dev-libs/icu: Bump to version 64.2
    
    Package-Manager: Portage-2.3.64, Repoman-2.3.12
    Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>