Created attachment 549584 [details] dev-util/meson-0.48.0-r2:20181007-125014.log The Meson build system Version: 0.48.0 Source dir: /var/tmp/portage/dev-util/meson-0.48.0-r2/work/meson-0.48.0/test cases/rust/8 many files Build dir: /var/tmp/portage/dev-util/meson-0.48.0-r2/work/meson-0.48.0/b 3d9d0dff3f Build type: native build Project name: manyfiles Project version: undefined Appending LDFLAGS from environment: '-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu' Native Rust compiler: rustc (rustc 1.29.1) Build machine cpu family: x86_64 Build machine cpu: x86_64 Build targets in project: 1 Found ninja-1.8.2.git.kitware.dyndep-1.jobserver-1 at /usr/bin/ninja [0/1] Regenerating build files. The Meson build system Version: 0.48.0 Source dir: /var/tmp/portage/dev-util/meson-0.48.0-r2/work/meson-0.48.0/test cases/rust/8 many files Build dir: /var/tmp/portage/dev-util/meson-0.48.0-r2/work/meson-0.48.0/b 3d9d0dff3f Build type: native build Project name: manyfiles Project version: undefined Native Rust compiler: rustc (rustc 1.29.1) Build machine cpu family: x86_64 Build machine cpu: x86_64 Build targets in project: 1 Found ninja-1.8.2.git.kitware.dyndep-1.jobserver-1 at /usr/bin/ninja [1/1] Compiling Rust source '../test cases/rust/8 many files/main.rs'. FAILED: manyfiles rustc --crate-type bin --crate-name manyfiles -g --emit dep-info=manyfiles.d --emit link -o manyfiles '../test cases/rust/8 many files/main.rs' depfile has multiple output paths ninja: build stopped: subcommand failed. ninja explain: output build.ninja older than most recent input ../test cases/rust/8 many files/meson.build (1538916990650763401 vs 1538916991687773641) ninja explain: deps for 'manyfiles' are missing ninja explain: manyfiles is dirty * ERROR: dev-util/meson-0.48.0-r2::gentoo failed (test phase): * Testing failed with python3.5 * * Call stack: * ebuild.sh, line 124: Called src_test * environment, line 2683: Called distutils-r1_src_test * environment, line 907: Called _distutils-r1_run_foreach_impl 'python_test' * environment, line 346: Called python_foreach_impl 'distutils-r1_run_phase' 'python_test' * environment, line 2206: Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' * environment, line 1561: Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' * environment, line 1559: Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'python_test' * environment, line 570: Called distutils-r1_run_phase 'python_test' * environment, line 838: Called python_test * environment, line 2585: Called die * The specific snippet of code: * ${EPYTHON} -u run_tests.py ) || die "Testing failed with ${EPYTHON}"
occam ~ # emerge --info '=dev-util/meson-0.48.0-r2::gentoo' Portage 2.3.50 (python 3.6.6-final-0, default/linux/amd64/17.0/hardened, gcc-8.2.0, glibc-2.27-r6, 4.18.7-gentoo-o0 x86_64) ================================================================= System Settings ================================================================= System uname: Linux-4.18.7-gentoo-o0-x86_64-Intel-R-_Core-TM-_i5-2520M_CPU_@_2.50GHz-with-gentoo-2.6 KiB Mem: 7999296 total, 2338000 free KiB Swap: 16777212 total, 16663052 free Timestamp of repository gentoo: Sun, 07 Oct 2018 12:30:01 +0000 Head commit of repository gentoo: 809ee15fc9ed174d36f8738577bd014d7ba5f28e Timestamp of repository eroen: Sun, 30 Oct 2016 21:58:42 +0000 Head commit of repository sapher: 9ef31d0bf6a902342746fb03a445d4f8b7ddabef Head commit of repository wiktorb: 2436f2d433769b4a7c69a4088dbc5acd2645c38c Head commit of repository gentoo-snappy: 0ea79c799ebe1bc6cd924b9dd707b710eea24e83 Head commit of repository stuff: 37ab7a0657b654f43a683e41d50b061a40bde1ee sh bash 4.4_p23 ld GNU ld (Gentoo 2.31.1 p3) 2.31.1 ccache version 3.3.4 [disabled] app-shells/bash: 4.4_p23::gentoo dev-java/java-config: 2.2.0-r3::gentoo dev-lang/perl: 5.26.2::gentoo dev-lang/python: 2.7.15::gentoo, 3.4.8-r1::gentoo, 3.5.5-r1::gentoo, 3.6.6::gentoo, 3.7.0::gentoo dev-util/ccache: 3.3.4-r1::gentoo dev-util/cmake: 3.12.2::gentoo dev-util/pkgconfig: 0.29.2::gentoo sys-apps/baselayout: 2.6-r1::gentoo sys-apps/openrc: 0.38.2::gentoo sys-apps/sandbox: 2.13::gentoo sys-devel/autoconf: 2.13::gentoo, 2.69-r4::gentoo sys-devel/automake: 1.11.6-r3::gentoo, 1.13.4-r2::gentoo, 1.14.1-r2::gentoo, 1.15.1-r2::gentoo, 1.16.1-r1::gentoo sys-devel/binutils: 2.31.1-r1::gentoo sys-devel/gcc: 6.4.0-r3::gentoo, 7.3.0-r4::gentoo, 8.2.0-r3::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: 4.17::gentoo (virtual/os-headers) sys-libs/glibc: 2.27-r6::gentoo Repositories: gentoo location: /usr/portage sync-type: rsync sync-uri: rsync://rsync.gentoo.org/gentoo-portage priority: -1000 sync-rsync-extra-opts: sync-rsync-verify-metamanifest: yes sync-rsync-verify-jobs: 1 sync-rsync-verify-max-age: 24 crossdev location: /var/lib/portage/crossdev masters: gentoo gamerlay eroen eroen location: /usr/local/portage masters: gentoo priority: 0 sapher location: /var/lib/overlays/sapher sync-type: git sync-uri: https://github.com/apinsard/sapher-overlay.git masters: gentoo wiktorb location: /var/lib/overlays/wiktorb sync-type: git sync-uri: https://github.com/wiktor-b/overlay.git masters: gentoo dotnet location: /var/lib/layman/dotnet masters: gentoo priority: 50 enlightenment location: /var/lib/layman/enlightenment masters: gentoo priority: 50 flora location: /var/lib/layman/flora masters: gentoo priority: 50 gamerlay location: /var/lib/layman/gamerlay masters: gentoo priority: 50 gentoo-snappy location: /usr/local/portage/gentoo-snappy sync-type: git sync-uri: https://github.com/zyga/gentoo-snappy.git masters: gentoo priority: 50 glc location: /var/lib/layman/glc masters: gentoo priority: 50 hardened-development location: /var/lib/layman/hardened-development masters: gentoo priority: 50 haskell location: /var/lib/layman/haskell masters: gentoo priority: 50 hasufell location: /var/lib/layman/hasufell masters: gentoo priority: 50 java location: /var/lib/layman/java masters: gentoo priority: 50 laurentb location: /var/lib/layman/laurentb masters: gentoo priority: 50 roslin location: /var/lib/layman/roslin masters: gentoo priority: 50 stuff location: /var/lib/layman/stuff sync-type: git sync-uri: https://github.com/istitov/stuff.git masters: gentoo priority: 50 sunrise location: /var/lib/layman/sunrise masters: gentoo priority: 50 toolchain location: /var/lib/layman/toolchain masters: gentoo priority: 50 v-fox location: /var/lib/layman/v-fox masters: gentoo priority: 50 ACCEPT_KEYWORDS="amd64 ~amd64" ACCEPT_LICENSE="*" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=corei7-avx -pipe -Og -g -gdwarf-4" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/share/config /usr/share/easy-rsa /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 /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-march=corei7-avx -pipe -Og -g -gdwarf-4" DISTDIR="/var/distfiles" EMERGE_DEFAULT_OPTS="--jobs=1 --autounmask --quiet-build --nospinner --verbose-conflicts --verbose-slot-rebuilds" ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY 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="-O2 -pipe" FEATURES="assume-digests binpkg-logs binpkg-multi-instance cgroup collision-protect compressdebug config-protect-if-modified distlocks ebuild-locks fixlafiles installsources ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch parallel-install preserve-libs protect-owned sandbox sfperms split-log splitdebug strict strict-keepdir test unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-O2 -pipe" GENTOO_MIRRORS="http://distfiles.gentoo.org" LANG="en_GB.utf8" LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu" MAKEOPTS="-j4 -l10" PKGDIR="/var/packages" 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="X a52 aac acl alsa amd64 apng audio audiofile avresample avx bash-completion bdf bluray bzip2 cairo caps cb cdda cdparanoia cdr cjk corefonts crypt cups curl cxx ddate declarative detex device-mapper dga dia djvu dts dvd dvi2tty dvipdfm ebook egl exif fam ffmpeg fftw fits flac fontconfig g3dvl gallium gbm gcrypt gif gimp git glamor glib gmp gnuplot gnutls gold gpm graphics graphviz gs gstreamer gtk gtk3 hardened highlight iconv icu id3tag idn imagemagick imlib inotify iproute2 ipv6 jbig jpeg jpeg2k jpg json kde kde4 kpathsea latex lcms libffi libssh2 libtirpc libv4l luatex lvm lvm2 lzma lzo man metric mikmod mkv mms mmx mng mp3 mpeg mpg123 multilib multimedia musepack ncurses netlink nptl nut ocr odbc offensive ogg opengl openmp openvg optimization optimized-qmake opus pam pango pcre pdf pgf phonon pie png postscript private-headers pstricks pth publishers python3 qt3support qt4 raw readline samba sbsms scanner science sdl seccomp smp sna sndfile speex spell sqlite sse sse2 sse3 sse4 sse41 sse4_1 sse4_2 ssh ssl ssp ssse3 svg t1lib tesseract test theora threads tiff tls truetype udev unicode usb v4l v4l2 vaapi video vorbis vpx webp wmf x264 xanim xattr xcb xcomposite xetex xft xinerama xkb xml xmlpatterns xorg xosd xpm xrandr xtpax xv xvid xvmc xz zlib zsh-completion" ABI_X86="32 64" 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 plan sheets stage words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx sse sse2 avx sse3 ssse3 sse4_1 aes avx mmxext popcnt sse3 sse4_1 sse4_2 ssse3" CURL_SSL="openssl" 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" GRUB_PLATFORMS="efi-64" INPUT_DEVICES="evdev synaptics" KERNEL="linux" L10N="en en-US en-GB eng" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LLVM_TARGETS="AArch64 ARM BPF X86" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-3 php5-4" POSTGRES_TARGETS="postgres10" PYTHON_SINGLE_TARGET="python3_6" PYTHON_TARGETS="python2_7 python3_4 python3_5 python3_6 python3_7" QEMU_SOFTMMU_TARGETS="x86_64 i386" RUBY_TARGETS="ruby23" SANE_BACKENDS="plustek" USERLAND="GNU" VIDEO_CARDS="intel i965 ilo" 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, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS occam ~ # emerge -pqv '=dev-util/meson-0.48.0-r2::gentoo' [ebuild U ] dev-util/meson-0.48.0-r2 [0.48.0-r1] PYTHON_TARGETS="python3_5 python3_6 python3_7"
@rust: Any ideas here?
Can someone point me at what this is trying to test, exactly? I'm not familiar with meson, and this is compiling Rust as a build system, where most users by far use Cargo instead -- so it's not exactly on the cowpath.
Here's a link to the test case. https://github.com/mesonbuild/meson/tree/master/test%20cases/rust/8%20many%20files
From #mesonbuild: <jpakkane> Ninja has a implementation limitation that any target that produces a dep file can have only one output file. That has multiple. At least in ye olden times rustc wrote a dep rule also for the depfile itself, which was wrong but I think they fixed it.
I guess ninja is complaining about having too many targets in manyfiles.d. > % cat manyfiles.d > manyfiles: ../test\ cases/rust/8\ many\ files/main.rs ../test\ cases/rust/8\ many\ files/foo.rs > > manyfiles.d: ../test\ cases/rust/8\ many\ files/main.rs ../test\ cases/rust/8\ many\ files/foo.rs > > ../test\ cases/rust/8\ many\ files/main.rs: > ../test\ cases/rust/8\ many\ files/foo.rs:
<jpakkane> The second line is flat out wrong. Ninja deletes all .d files immediately after reading so Ninja will always rebuild everything. This was reported to rustc upstream ages ago and IIRC they fixed it.
This appears to be an issue introduced with ninja-1.8.2-r1 (the kitware branch). The test passes with ninja-1.8.2 (vanilla upstream).
@brad.king: This commit seems to break the above meson test case. https://github.com/Kitware/ninja/commit/648da3f0ae757a0725640e63476370cc63e09169
Indeed, the commit includes a test case: https://github.com/Kitware/ninja/commit/648da3f0ae757a0725640e63476370cc63e09169#diff-43a4c476eaa3e085d18a2325d36994f9R273 specifically to cover rejection in the "depfile has multiple output paths" case. It corresponds to an existing test from upstream ninja: https://github.com/Kitware/ninja/commit/648da3f0ae757a0725640e63476370cc63e09169#diff-43a4c476eaa3e085d18a2325d36994f9L156 but is extended to the multiple rule case. That upstream ninja incorrectly tolerated this has allowed the bug in the depfile generation to go unnoticed. We may need to make it a warning for now instead.
I've updated Kitware's branch to convert the depfile error into a warning in this case. See new release at: https://github.com/Kitware/ninja/releases/tag/v1.8.2.g81279.kitware.dyndep-1.jobserver-1
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=364d527015bfeca046ddbc055b3740127b098b59 commit 364d527015bfeca046ddbc055b3740127b098b59 Author: Mike Gilbert <floppym@gentoo.org> AuthorDate: 2018-10-08 16:23:49 +0000 Commit: Mike Gilbert <floppym@gentoo.org> CommitDate: 2018-10-08 16:24:21 +0000 dev-util/ninja: add new kitware release (1.8.2.g81279) Closes: https://bugs.gentoo.org/667952 Package-Manager: Portage-2.3.50_p14, Repoman-2.3.11_p21 Signed-off-by: Mike Gilbert <floppym@gentoo.org> dev-util/ninja/Manifest | 3 +- dev-util/ninja/ninja-1.8.2-r1.ebuild | 11 +-- dev-util/ninja/ninja-1.8.2-r2.ebuild | 131 +++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+), 6 deletions(-)