From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2119.outbound.protection.outlook.com [40.107.244.119]) by sourceware.org (Postfix) with ESMTPS id 31D20386F816 for ; Sun, 24 May 2020 16:45:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 31D20386F816 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iqwTjLO36AZnQPxbxFA/hCdg7Kn8Yw/suLwJZhKWmk2FXjWrZ0tXRm8zeXGoXmqE+2xVGZ9mvg32dU0BGIZ0Lu9auW61qD3Viy6cLPDotaqcQnumK4UAGD/+Tvs79Nx6QG/59Gmdp3IIawHhCvkQ+ffWxHeSXKCnb2WAcmFSlyZkFyse8QqI/coMdO/hzPGOSYM1CbE2VyKVPuxcOB2n85AhTJHC5uCdLxKUNrRk7I2E3a4KkbTj3XuOHORw7xyrNlLDVCGkiJstrxDQhFLDKimC7hr4s3pyrVKzW+DtOScDoi7H56MjMSRc+IpJkM5a2LmxEvmycBKbR6Uqw0ZgMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2iYYlTHH0abxYaA2jm0Huyij35G5pYm+ABjv6bCnpx0=; b=W3OJNA2bwZjFbEmkwrqQojkxeAy9GelMrXjNAG8JK+xZenufHiqHatElDlZZZDT3H8HohOAGzBOwLHA6gzSx7pdvX0M80AoQNDOB1cQjodxSPPbnQo7fY5SFacqWv6yl2utWfNS9UwegbJ1P4GYtKo+MNBD2ht/RiTdrZqwoLq6ozLMQk7DjVsZdH/vIw6pCOXN0oB9xqGaT2IdojzM6UbNbIKfvVwEfCAAGK/PPLE9cKnsuQ5sK2jsnohrylXGiWQqUUoiw1rTNDYefOV24uKxx1Aw8+CythdU97BASLSbALVZtObVuOMG+b9z5tzdMWrCf+b3e+Sevhcu0WGshRw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cornell.edu; dmarc=pass action=none header.from=cornell.edu; dkim=pass header.d=cornell.edu; arc=none Received: from DM6PR04MB6075.namprd04.prod.outlook.com (2603:10b6:5:127::31) by DM6PR04MB4907.namprd04.prod.outlook.com (2603:10b6:5:17::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.27; Sun, 24 May 2020 16:45:50 +0000 Received: from DM6PR04MB6075.namprd04.prod.outlook.com ([fe80::f48b:4e13:94d7:f7c4]) by DM6PR04MB6075.namprd04.prod.outlook.com ([fe80::f48b:4e13:94d7:f7c4%4]) with mapi id 15.20.3021.029; Sun, 24 May 2020 16:45:50 +0000 Subject: Re: Help needed with gobject-introspection To: cygwin-apps@cygwin.com References: <2c0802e9-e66c-768e-61f2-f2797acc1acb@cornell.edu> <78ad982d-8cab-323d-8bc5-682f3f2bc11f@cornell.edu> <7837c562-f96c-3084-40f8-1a52afcebdf5@dronecode.org.uk> <429779d8-dc38-2f75-bd3e-42f898941483@cornell.edu> <6703fe25-ba53-68c7-c398-843b2a8295dc@dronecode.org.uk> <93b48fc8-61f9-ce33-ac76-0e6cc56aa18c@dronecode.org.uk> From: Ken Brown Message-ID: Date: Sun, 24 May 2020 12:45:46 -0400 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 In-Reply-To: <93b48fc8-61f9-ce33-ac76-0e6cc56aa18c@dronecode.org.uk> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-ClientProxiedBy: BL0PR0102CA0004.prod.exchangelabs.com (2603:10b6:207:18::17) To DM6PR04MB6075.namprd04.prod.outlook.com (2603:10b6:5:127::31) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.0.17] (68.175.129.7) by BL0PR0102CA0004.prod.exchangelabs.com (2603:10b6:207:18::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.23 via Frontend Transport; Sun, 24 May 2020 16:45:49 +0000 X-Originating-IP: [68.175.129.7] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3ce1740e-c316-4f6f-919f-08d80001ea2b X-MS-TrafficTypeDiagnostic: DM6PR04MB4907: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-Forefront-PRVS: 0413C9F1ED X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lzxavhh8WJuE4Y/+fNXibg8xRFzb+4+Ywm8eDMzuVPwSh/XU1T3Hg5clcqra2Rsz0dheFRUCJmP3O6bSvQv2yBLhJfc0Q3H5FlGxrGlcLcZVZ90j88lKi+MOfXTqr/+MzJnurYwf9Mzi4ZH+zxeznyNXkajob2bx6HhyeIkinoXYQovXlaKy2lC9q8Hpg9urkP9gz3KhJNUmYzZ+4MfnEv+I8yTDg2vPXpxp/awcrusjou1ugxCPgIhWRsKCtzw8MRCwucoC+1cvKEZekEEOjiRBo0QF7uGQVop9OXZkJkcB/b3Igjy+pRAoDLaXmQmw00ywwdY9lu7tmrUdLGGnXJ9ppw7IwroU94uur2FCY3eraV5fL1ylsqPCLNXiUExqO9vWp9Ch+vm10aegCWEJXuDwjkttu4ZUbBztf9VXxLACRDHRJosFEK6Px4FVQmo0bdYiKpH3ikdKM0V8DAiOPVtW5AjlL2osNnzpz/72ktA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR04MB6075.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(376002)(346002)(396003)(136003)(39860400002)(366004)(66946007)(6916009)(31686004)(66476007)(2616005)(66556008)(6666004)(5660300002)(75432002)(8936002)(8676002)(478600001)(6486002)(86362001)(2906002)(31696002)(956004)(16576012)(26005)(786003)(53546011)(186003)(316002)(16526019)(52116002)(36756003)(966005)(43740500002)(460985005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: lkQVDMAVjlAwU2vau9xcsOctH2L2uMNKIFZAN9ur43ZDxdxwkOQXnOXc2sTkAOxvlNFC5QhC1qNODYcUvws83L79+mtx0L+cRPh4/OlnKKKdz8nQ6XVIHTy93m71UmvphrslCuVRO+Tg+XG2X+9iD1jHexmL1zAlSEJrIFkFrjq/gPHMTxDtp1x63JzYwvn0/Fdp5XQg+yHGT5DkaA02LRV+ebS5BX8sXH+EulWrVWRN64gE+c2sgZrbJa4MFwe846zkGhKYAjk7HG7zdv747aYQPVHWzuH2akn69b1VgcfwMg6irp36qw9rzDXjwdC8kdDCmGU0a5hLsmM8WJb2UApRRaJpGuiH7sP9QAW1Vtdzz4xlrfZK1NSzpcUKOtkJ0aQyvUcvx3SUuXS4v683uBe2NpD/wfQo++ibG9NNL+YCcOFzOgNRUTBl83BH8kph++oQCvbybG4ETeH6SZAFfMRtyQkjMnhcqsjGONu+MPw= X-OriginatorOrg: cornell.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 3ce1740e-c316-4f6f-919f-08d80001ea2b X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2020 16:45:49.8974 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5d7e4366-1b9b-45cf-8e79-b14b27df46e1 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: f2aJCS+L7SICf0eAHLyYCssTeE6UBwyEEBsDXDzb50WtWO1tvyS4e+MOHBZDzhF2kQi9DwGu3IH4XyWpIgQebg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR04MB4907 X-Spam-Status: No, score=1.0 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_INVALID, DKIM_SIGNED, KAM_DMARC_STATUS, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin-apps@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin package maintainer discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 16:45:55 -0000 On 5/24/2020 11:56 AM, Jon Turney wrote: > On 21/05/2020 18:07, Ken Brown via Cygwin-apps wrote: >> On 5/21/2020 11:48 AM, Jon Turney wrote: >>> On 21/05/2020 16:13, Ken Brown via Cygwin-apps wrote: >>>> On 5/21/2020 9:24 AM, Jon Turney wrote: >>>>> On 20/05/2020 15:50, Ken Brown via Cygwin-apps wrote: >>>>>> On 5/19/2020 7:04 PM, Ken Brown via Cygwin-apps wrote: >>>>>>> I would like to adopt gimp and related packages.  At the moment I'm >>>>>>> having trouble with babl, which is needed for gegl0.4, which is needed >>>>>>> for gimp. The problem involves gobject-introspection. >>>>>>> >>>>>>> If I disable introspection, the build works fine.  This would be OK, >>>>>>> since babl has been built without introspection for several years. But >>>>>>> then the gegl0.4 build complains about the missing babl introspection >>>>>>> files, so I would have to disable introspection there too, which hasn't >>>>>>> been done in the past. >>>>>>> >>>>>>> So my preference is to figure out what the problem is and get the babl >>>>>>> build working with introspection.  I'm attaching my cygport file and patch. >>>>>>> >>>>>>> Here's the failing command... >>>>>>> >>>>>>> /usr/bin/g-ir-scanner -I/usr/include/gobject-introspection-1.0 >>>>>>> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -D_REENTRANT >>>>>>> --no-libtool --namespace=Babl --nsversion=0.1 --warn-all --output >>>>>>> babl/Babl-0.1.gir --c-include=babl.h >>>>>>> '--identifier-filter-cmd=/usr/bin/python3 >>>>>>> /tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/babl/identfilter.py' >>>>>>> -DBABL_IS_BEING_COMPILED >>>>>>> -I/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/babl >>>>>>> -I/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl >>>>>>> -I./. -I../. -I./babl/base/. -I../babl/base/. >>>>>>> --filelist=/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl/4170c83@@babl-0.1@sha/Babl_0.1_gir_filelist >>>>>>> --cflags-begin -fno-unsafe-math-optimizations >>>>>>> -Wdeclaration-after-statement -Winit-self -Wmissing-declarations >>>>>>> -Wmissing-prototypes -Wold-style-definition -Wpointer-arith -mmmx -msse >>>>>>> -mfpmath=sse -I./. -I../. -I./babl/base/. -I../babl/base/. --cflags-end >>>>>>> --library babl-0.1 >>>>>>> -L/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl >>>>>>> --extra-library=m --extra-library=dl --extra-library=lcms2 >>>>>>> >>>>>>> ...and the error message: >>>>>>> >>>>>>> g-ir-scanner: link: gcc -o >>>>>>> /tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/tmp-introspectCwCaUc/Babl-0.1.exe >>>>>>> -ggdb -O2 -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 >>>>>>> -fstack-protector-strong --param=ssp-buffer-size=4 >>>>>>> -fdebug-prefix-map=/tmp/cygbabl/babl-0.1.74-1.x86_64/build=/usr/src/debug/babl-0.1.74-1 >>>>>>> -fdebug-prefix-map=/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74=/usr/src/debug/babl-0.1.74-1 >>>>>>> /tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/tmp-introspectCwCaUc/Babl-0.1.o >>>>>>> -L. -lbabl-0.1 -lm -ldl -llcms2 >>>>>>> -L/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl >>>>>>> -Wl,-rpath,/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl >>>>>>> -lgio-2.0 -lgobject-2.0 -Wl,--export-all-symbols -lgmodule-2.0 -lglib-2.0 >>>>>>> -lintl >>>>>>> ERROR: can't resolve libraries to shared libraries: babl-0.1 >>>>>>> >>>>>>> I don't understand the error message, because the command line contains >>>>>>> >>>>>>> -L/tmp/cygbabl/babl-0.1.74-1.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/babl >>>>>>> >>>>>>> and that directory contains libbabl-0.1.dll.a and cygbabl-0.1-0.dll. I >>>>>>> even tried adding that directory to my PATH to make sure the right >>>>>>> cygbabl-0.1-0.dll would be found, but that didn't help. >>>>> >>>>> This might possibly be related to the problem described in the comment for: >>>>> >>>>> https://github.com/mesonbuild/meson/pull/2880/commits/8a27c08b05e4537d5061d30ddd8aad9dc52cf1c4 > > > Yeah, this looks extremely plausible, there seem to be no GObject derived types > in babl's interface. > > It might be possible to work around this by patching in a dummy GObject derived > type which does nothing. > > I'll have to see if I can find my notes about how I debugged this before. > >>>>>> By the way, in case you're wondering why I disabled the building of docs, >>>>>> it's because I was getting a build failure there too.  I don't know if >>>>>> this is related to the introspection failure.  The failing command there is >>>>>> >>>>>> /usr/bin/meson --internal exe --unpickle >>>>>> /tmp/cygbabl/babl-0.1.74-2.x86_64/src/babl-0.1.74/x86_64-pc-cygwin/meson-private/meson_exe_env_7bf39b99114d34540b83d26a5d8f097e05882836.dat >>>>>> >>>>>> cp: target 'docs/index.html.tmp' is not a directory >>>>>> >>>>>> I don't know why it's not showing me the actual cp command that fails. >>>>> >>>>> I believe it's is an infelicity in meson that it doesn't echo the actual >>>>> failing command here. >>>>> >>>>> Noted here: >>>>> https://github.com/mesonbuild/meson/pull/3716#issuecomment-395746838 >>>>> >>>>>> The corresponding information in docs/meson.build is >>>>>> >>>>>> Reference_html = custom_target('Reference.html', >>>>>>    input : [ >>>>>>      'Reference-static.html', >>>>>>      'toc', >>>>>>      index_html_tmp, >>>>>>    ], >>>>>>    output: [ 'Reference.html', ], >>>>>>    command: [ >>>>>>      env_bin, >>>>>>      'cp', '@INPUT0@', '@OUTPUT@', >>>>>>      '&&', xml_insert, '@OUTPUT@', 'TOC', '@INPUT1@', >>>>>>      '&&', xml_insert, '@OUTPUT@', 'BablBase', '@INPUT2@', >>>>>>    ], >>>>>>    build_by_default: true, >>>>>> ) >>>>>> >>>>>> There are several such custom targets in the file, and for all except this >>>>>> one, I see the actual cp command in the log.  This is the only one for >>>>>> which meson generates a 'meson --unpickle' command instead of a cp command. >>>>> >>>>> Yeah, I wasn't expecting it to use this method of executing the command >>>>> line (storing it in a pickle and then using a python wrapper to execute it) >>>>> to be used except on Windows, so I'll have to take a more detailed look at >>>>> why that's happening. > > So, it's correct that it runs this command indirectly via the pickle, because it > needs to interpose itself to do some PATH manipulation to add the DLL, because > this target has the 'babl-html-dump' tool, which is linked with the DLL, in it's > input (indirectly). > >>>> Thanks.  FWIW, the recipe for building docs/Reference.html translates to >>>> >>>>    /usr/bin/env \ >>>>       cp ../docs/Reference-static.html docs/Reference.html \ >>>>        && ../docs/tools/xml_insert.sh docs/Reference.html TOC ../docs/toc \ >>>>        && ../docs/tools/xml_insert.sh \ >>>>           docs/Reference.html BablBase docs/index.html.tmp >>>> >>>> This succeeds when run manually in the build directory.  So something must >>>> have gone wrong in the pickling/unpickling process. >>> >>> >>> patching /usr/lib/python3.6/site-packages/mesonbuild/scripts/meson_exe.py >>> something like this might shed some light: >>> >>> --- meson_exe.py.bak    2020-05-21 15:01:19.187046500 +0100 >>> +++ meson_exe.py        2020-05-21 15:09:29.485915300 +0100 >>> @@ -57,6 +57,8 @@ >>>                   ['Z:' + p for p in exe.extra_paths] + >>> child_env.get('WINEPATH', '').split(';') >>>               ) >>> >>> +    print(cmd_args) >>> + >>>       p = subprocess.Popen(cmd_args, env=child_env, cwd=exe.workdir, >>>                            close_fds=False, >>>                            stdout=subprocess.PIPE, >> >> OK, now the log shows >> >> cp: target 'docs/index.html.tmp' is not a directory >> ['/usr/bin/env', 'cp', '../docs/Reference-static.html', 'docs/Reference.html', >> '&&', >> '/home/kbrown/src/cygpackages/babl/babl-0.1.74-1.x86_64/src/babl-0.1.74/docs/tools/xml_insert.sh', >> 'docs/Reference.html', 'TOC', '../docs/toc', '&&', >> '/home/kbrown/src/cygpackages/babl/babl-0.1.74-1.x86_64/src/babl-0.1.74/docs/tools/xml_insert.sh', >> 'docs/Reference.html', 'BablBase', 'docs/index.html.tmp'] >> >> This does indeed shed some light.  If I remove all the commas but leave the >> single quotes, the command fails with the same error message as before: >> >> cp: target 'docs/index.html.tmp' is not a directory >> >> If I also remove the single quotes, the command succeeds.  I think the problem >> is the quotes around the double ampersands, so they are treated as arguments >> to the cp command instead of being interpreted by the shell executing the >> command. > > So, yeah, this is a meson bug, which I will work on (if this command ends up in > the build.ninja, it's executed by ninja with 'sh -c', but if it ends up in a > pickle, it's executed by meson with execve()) Yes, that does seem like a meson bug. But is it also a babl bug to some extent? When babl puts '&&' in a command argument, it's assuming that the command will be executed by 'sh -c'. I have very little experience with meson. Have you ever seen this issue in other projects that use meson? > (Ofc, everything behaves differently if we are building on Windows, and > CreateProcess() is used in both places, so allowing shell control operators here > is not very portable)