[MASSMAIL]meson vs windows perl
От | Andrew Dunstan |
---|---|
Тема | [MASSMAIL]meson vs windows perl |
Дата | |
Msg-id | 01117f88-f465-bf6c-9362-083bd72ca305@dunslane.net обсуждение исходный текст |
Ответы |
Re: meson vs windows perl
(Andrew Dunstan <andrew@dunslane.net>)
|
Список | pgsql-hackers |
meson.build has this code
ldopts = run_command(perl, '-MExtUtils::Embed', '-e', 'ldopts', check: true).stdout().strip() undesired = run_command(perl_conf_cmd, 'ccdlflags', check: true).stdout().split() undesired += run_command(perl_conf_cmd, 'ldflags', check: true).stdout().split() perl_ldopts = [] foreach ldopt : ldopts.split(' ') if ldopt == '' or ldopt in undesired continue endif perl_ldopts += ldopt.strip('"') endforeach message('LDFLAGS recommended by perl: "@0@"'.format(ldopts)) message('LDFLAGS for embedding perl: "@0@"'.format(' '.join(perl_ldopts)))
This code is seriously broken if perl reports items including spaces, when a) removing the quotes is quite wrong, and b) splitting on spaces is also wrong.
Here's an example from one of my colleagues:
C:\Program Files\Microsoft Visual Studio\2022\Professional>perl.EXE -MExtUtils::Embed -e ldopts -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"C:\edb\languagepack\v4\Perl-5.38\lib\CORE" -machine:AMD64 -subsystem:console,"5.02" "C:\edb\languagepack\v4\Perl-5.38\lib\CORE\perl538.lib" "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\lib\x64\oldnames.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\kernel32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\user32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\gdi32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\winspool.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\comdlg32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\advapi32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\shell32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\ole32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\oleaut32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\netapi32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\uuid.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\ws2_32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\mpr.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\winmm.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\version.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\odbc32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\odbccp32.lib" "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\comctl32.lib" "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\lib\x64\msvcrt.lib" "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\lib\x64\vcruntime.lib" "C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib"
And with that we get errors like
cl : Command line warning D9024 : unrecognized source file type 'C:\Program', object file assumed cl : Command line warning D9024 : unrecognized source file type 'Files\Microsoft', object file assumed cl : Command line warning D9024 : unrecognized source file type 'Visual', object file assumed cl : Command line warning D9024 : unrecognized source file type 'C:\Program', object file assumed cl : Command line warning D9024 : unrecognized source file type 'Files', object file assumed cl : Command line warning D9024 : unrecognized source file type '(x86)\Windows', object file assumed
It looks like we need to get smarter about how we process the ldopts and strip out the ccdlflags and ldflags cheers andrew
-- Andrew Dunstan EDB: https://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: