From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 10 Jul 2024 18:45:40 +0200 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1sRaRo-003TYt-2c for lore@lore.pengutronix.de; Wed, 10 Jul 2024 18:45:40 +0200 Received: from localhost ([127.0.0.1] helo=metis.whiteo.stw.pengutronix.de) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1sRaRo-0001cE-1J; Wed, 10 Jul 2024 18:45:40 +0200 Received: from smtp121.ord1d.emailsrvr.com ([184.106.54.121]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sRaRQ-0001bv-96 for ptxdist@pengutronix.de; Wed, 10 Jul 2024 18:45:17 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mev.co.uk; s=20221208-6x11dpa4; t=1720629914; bh=b9Y2x0PRjyBQTVJ6z4pkX6l8oJqHwW9ww1Ngq+3m4SQ=; h=Date:Subject:To:From:From; b=M2d6tb94MqNriYJ21wnMW6jpObIoVvX+WedcjUK2mSlpiOy42jUpoHex4TnnMBcw+ GIKqUMMnq9Kw1DFd3yCqNp8ohqgkNO9sjWkHQOYMyv6lglKCUy8kfap3Cex48+CsTx VbROa5vYfcbiTLGkYPyKZQjF6aNypiZO73UHuS98= X-Auth-ID: abbotti@mev.co.uk Received: by smtp24.relay.ord1d.emailsrvr.com (Authenticated sender: abbotti-AT-mev.co.uk) with ESMTPSA id 79DB6A018E for ; Wed, 10 Jul 2024 12:45:14 -0400 (EDT) Message-ID: Date: Wed, 10 Jul 2024 17:45:13 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: ptxdist@pengutronix.de References: <5397b601-b66b-4a08-8076-e38a660fe227@mev.co.uk> <5b0e0443-2aba-4425-bed0-c1fe4c2cb73e@mev.co.uk> Content-Language: en-GB From: Ian Abbott Organization: MEV Ltd. In-Reply-To: <5b0e0443-2aba-4425-bed0-c1fe4c2cb73e@mev.co.uk> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Classification-ID: cd80eb3c-6970-4b15-bdcb-8238cc5f7abf-1-1 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.whiteo.stw.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-3.2 required=4.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Subject: Re: [ptxdist] nodejs build problems X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false On 10/07/2024 12:38, Ian Abbott wrote: > On 10/07/2024 07:31, Michael Olbrich wrote: >> On Tue, Jul 09, 2024 at 03:45:31PM +0100, Ian Abbott wrote: >>> Hello folks, >>> >>> This is my first time trying to build nodejs for >>> arm-v7a-linux-gnueabif and >>> I'm not having much luck.  It's failing at the "nodejs.prepare" stage >>> in the >>> `try_check_compiler(CXX, 'c++)` call in "configure.py: >>> >>> ---------------------[8<]------------------------ >>> >>> Traceback (most recent call last): >>>    File >>> "/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/build-target/node-v20.11.0/./configure", >>> line 29, in >>> Node.js configure: Found Python 3.11.2... >>>      import configure >>>    File >>> "/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/build-target/node-v20.11.0/configure.py", >>> line 2026, in >>>      check_compiler(output) >>>    File >>> "/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/build-target/node-v20.11.0/configure.py", >>> line 1038, in check_compiler >>>      ok, is_clang, clang_version, gcc_version = try_check_compiler(CXX, >>> 'c++') >>> >>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>>    File >>> "/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/build-target/node-v20.11.0/configure.py", >>> line 944, in try_check_compiler >>>      gcc_version = tuple(map(int, values[1:1+3])) >>>                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>> ValueError: invalid literal for int() with base 10: '__STDC__' >>> make: *** [/usr/local/lib/ptxdist-2024.03.0/rules/nodejs.make:84: >>> /mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/state/nodejs.prepare] >>> Error 1 >>> ---------------------[>8]------------------------ >>> >>> This is being built in a Debian 12 ("bookworm") schroot.  (I also get >>> the >>> same problem when building in my usual Debian "testing" environment.) >>> >>> As you can see, I am using ptxdist-2024.03.0. The selected_toolchain is >>> `/opt/OSELAS.Toolchain-2023.07.1/arm-v7a-linux-gnueabihf/gcc-13.2.1-clang-16.0.6-glibc-2.37-binutils-2.40-kernel-6.3.6-sanitized/bin`. >>> >>> I tried downgrading to the nodejs-v18.13.0 rules and patch series from >>> ptxdist-2024.01.0, but it fails in the same way, so I think there is >>> some >>> incompatibility between that `try_check_compiler` function and the >>> toolchain. >>> >>> I'm wondering if anyone else has seen the same problem and managed to >>> solve >>> it? >> >> Hmmm, I've not seen this in my build tests. And I'm testing that >> combination as well. If you run ptxdist with '-v' then the whole compiler >> commandline is recorded in the logfile (with a 'wrapper:' prefix). Maybe >> call it manually to see what actually happens here. > > Thanks Michael.  I have since built nodejs successfully for the v7a > platform in DistroKit master branch, which uses the same toolchain, but > a more recent ptxdist (2024.05.0), so that gives me something to compare > against. > > For DistroKit (with ptxdist-2024.05.0): > > wrapper:  arm-v7a-linux-gnueabihf-gcc > -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/= -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-host/usr/lib/wrapper/=platform-v7a/  -mfpu=neon  -fstack-protector-strong -fstack-clash-protection -fPIE -pie -D_GLIBCXX_ASSERTIONS -print-sysroot > wrapper:  cc  -isystem > /mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-host/usr/include -c -o /tmp/cgfoWvk4/dummy.o /tmp/cgfoWvk4/dummy.c > wrapper:  cc  -isystem > /mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-host/usr/include -E /tmp/cgfoWvk4/dummy.c > wrapper:  cc  -isystem > /mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-host/usr/include -E /tmp/cgfoWvk4/dummy.c > wrapper:  arm-v7a-linux-gnueabihf-gcc > -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/= -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-host/usr/lib/wrapper/=platform-v7a/ -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64  -mfpu=neon  -Wl,-z,relro -Wl,-z,now -Wl,--hash-style=gnu -Wl,--as-needed -Wl,--build-id=sha1 -fstack-protector-strong -fstack-clash-protection -fPIE -pie -D_GLIBCXX_ASSERTIONS -x c -o /dev/null -v -  -isystem /mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-target/usr/include -B/mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-target/usr/lib -L/mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-target/usr/lib -Wl,-rpath-link -Wl,/mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-target/usr/lib > wrapper:  gcc  -isystem > /mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-host/usr/include -dumpversion > wrapper:  arm-v7a-linux-gnueabihf-ld  -v > wrapper:  arm-v7a-linux-gnueabihf-gcc > -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/= -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-host/usr/lib/wrapper/=platform-v7a/ -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64  -mfpu=neon -fstack-protector-strong -fstack-clash-protection -fPIE -pie -D_GLIBCXX_ASSERTIONS -dumpversion  -isystem /mnt/lindata/work/abbotti/ptxdist/projects/DistroKit/platform-v7a/sysroot-target/usr/include > > For my platform (using ptxdist 2024.03.0): > > wrapper:  arm-v7a-linux-gnueabihf-gcc > -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/= -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-host/usr/lib/wrapper/=platform-its-ipt4v2/  -mfpu=neon  -print-sysroot   -ggdb3 > wrapper:  cc  -isystem > /mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-host/usr/include -c -o /tmp/cgTFhVra/dummy.o /tmp/cgTFhVra/dummy.c > wrapper:  cc  -isystem > /mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-host/usr/include -E /tmp/cgTFhVra/dummy.c > wrapper:  cc  -isystem > /mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-host/usr/include -E /tmp/cgTFhVra/dummy.c > wrapper:  arm-v7a-linux-gnueabihf-gcc > -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/= -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-host/usr/lib/wrapper/=platform-its-ipt4v2/ -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64  -mfpu=neon  -Wl,--hash-style=gnu -Wl,--as-needed -Wl,--build-id=sha1  -x c -o /dev/null -v -  -isystem /mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-target/usr/include -ggdb3 -B/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-target/usr/lib -L/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-target/usr/lib -Wl,-rpath-link -Wl,/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-target/usr/lib > wrapper:  gcc  -isystem > /mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-host/usr/include -dumpversion > wrapper:  arm-v7a-linux-gnueabihf-ld  -v > wrapper:  arm-v7a-linux-gnueabihf-gcc > -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/= -fdebug-prefix-map=/mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-host/usr/lib/wrapper/=platform-its-ipt4v2/ -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64  -mfpu=neon  -dumpversion -isystem /mnt/lindata/work/abbotti/ptxdist/projects/its-ipt4-demo/platform-its-ipt4v2/sysroot-target/usr/include -ggdb3 > > The main difference is that the DistroKit wrapper for > arm-v7a-linux-gnueabihf has these options: -fstack-protector-strong > -fstack-clash-protection -fPIE -pie -D_GLIBCXX_ASSERTIONS > and does not have this option: -ggdb3 > but I think that is just differences in the selected hardening and > debugging options. > > My next step is to try and capture the commands and pipe contents that > `try_check_compiler` is using. I have found that the problem only occurs when selecting PTXCONF_TARGET_DEBUG_FULL (architecture ---> extra toolchain options ---> debugging (xxx) ---> enabled (full)) in the platformconfig. That sets the `-ggdb3` compiler option. The problem does not occur when selecting PTXCONF_TARGET_DEBUG_ENABLE (sets the `-g` compiler option). The `-ggdb3` option seems to make the GCC preprocessor emit all the `#define` and `#undef` lines even when the `-P` command line option has been used to suppress line control output. (Specifically, it is the request for level 3 debugging information that causes this, so the `-g3` compiler option would do the same thing.) The first line of output is: #define __STDC__ 1 However, the `try_check_compiler` function in configure.py is expecting to read a single line of output corresponding to the macro expansion of the following line: __clang__ __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__ __clang_major__ __clang_minor__ __clang_patchlevel__ For the toolchain in use, that will be macro-expanded to the following line: __clang__ 13 2 1 __clang_major__ __clang_minor__ __clang_patchlevel__ With the `-ggdb3` option, that line appears as the last line of output, after over 400 `#define` and `#undef` lines. The next question is how to fix it? Is there a way to disable compiler debugging options during the .prepare stage, or failing that, change or disable the debugging options for a particular package? -- -=( Ian Abbott || MEV Ltd. is a company )=- -=( registered in England & Wales. Regd. number: 02862268. )=- -=( Regd. addr.: S11 & 12 Building 67, Europa Business Park, )=- -=( Bird Hall Lane, STOCKPORT, SK3 0XA, UK. || www.mev.co.uk )=-