perl-openssl / perl-Crypt-OpenSSL-AES

https://metacpan.org/pod/Crypt::OpenSSL::AES
Other
2 stars 2 forks source link

Windows smokers issues #6

Closed timlegge closed 1 year ago

timlegge commented 1 year ago

Older strawberry perl seem to be failing with:

Output from 'C:\Strawberry\c\bin\dmake.exe':

cp lib/Crypt/OpenSSL/AES.pm blib\lib\Crypt\OpenSSL\AES.pm
Running Mkbootstrap for AES ()
C:\"Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "AES.bs"
C:\"Strawberry\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- AES.bs blib\arch\auto\Crypt\OpenSSL\AES\AES.bs 644
C:\"Strawberry\perl\bin\perl.exe" "C:\home\heaven\perl5\lib\perl5\ExtUtils\xsubpp"  -typemap C:\Strawberry\perl\lib\ExtUtils\typemap -typemap C:\Strawberry\cpan\build\Crypt-OpenSSL-AES-0.11-0\typemap  AES.xs > AES.xsc
C:\"Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e mv -- AES.xsc AES.c
gcc -c  -IC:\Strawberry\perl\..\c/include   -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -Wall      -DVERSION=\"0.11\"    -DXS_VERSION=\"0.11\"  "-IC:\Strawberry\perl\lib\CORE"   AES.c
In file included from C:\Strawberry\perl\lib\CORE/sys/socket.h:79:0,
                 from C:\Strawberry\perl\lib\CORE/win32.h:388,
                 from C:\Strawberry\perl\lib\CORE/win32thread.h:4,
                 from C:\Strawberry\perl\lib\CORE/perl.h:2852,
                 from AES.xs:3:
C:\Strawberry\perl\lib\CORE/win32.h:393:26: warning: "/*" within comment [-Wcomment]
C:\Strawberry\perl\lib\CORE/win32.h:394:33: warning: "/*" within comment [-Wcomment]
In file included from C:\Strawberry\perl\lib\CORE/win32thread.h:4:0,
                 from C:\Strawberry\perl\lib\CORE/perl.h:2852,
                 from AES.xs:3:
C:\Strawberry\perl\lib\CORE/win32.h:393:26: warning: "/*" within comment [-Wcomment]
C:\Strawberry\perl\lib\CORE/win32.h:394:33: warning: "/*" within comment [-Wcomment]
AES.xs: In function 'XS_Crypt__OpenSSL__AES_new':
AES.xs:149:14: warning: unused variable 'self' [-Wunused-variable]
AES.c:291:7: warning: unused variable 'class' [-Wunused-variable]
AES.c:287:5: warning: unused variable 'Perl___notused' [-Wunused-variable]
AES.c: In function 'XS_Crypt__OpenSSL__AES_encrypt':
AES.c:372:5: warning: unused variable 'Perl___notused' [-Wunused-variable]
AES.c: In function 'XS_Crypt__OpenSSL__AES_decrypt':
AES.c:446:5: warning: unused variable 'Perl___notused' [-Wunused-variable]
AES.c: In function 'XS_Crypt__OpenSSL__AES_DESTROY':
AES.c:518:5: warning: unused variable 'Perl___notused' [-Wunused-variable]
AES.c: In function 'boot_Crypt__OpenSSL__AES':
AES.c:551:5: warning: unused variable 'Perl___notused' [-Wunused-variable]
C:\"Strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"Crypt::OpenSSL::AES\", 'DLBASE' => 'AES', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
g++ AES.def -o blib\arch\auto\Crypt\OpenSSL\AES\AES.dll -mdll -s -L"C:\Strawberry\perl\lib\CORE" -L"C:\Strawberry\c\lib" AES.o   "C:\Strawberry\perl\lib\CORE\libperl514.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libmoldname.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libkernel32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libuser32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libgdi32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libwinspool.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libcomdlg32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libadvapi32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libshell32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libole32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\liboleaut32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libnetapi32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libuuid.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libws2_32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libmpr.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libwinmm.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libversion.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libodbc32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libodbccp32.a" "C:\Strawberry\c\i686-w64-mingw32\lib\libcomctl32.a" -Wl,--enable-auto-image-base
AES.o:AES.c:(.text+0x54): undefined reference to `EVP_CIPHER_CTX_free'
AES.o:AES.c:(.text+0x5f): undefined reference to `EVP_CIPHER_CTX_free'
AES.o:AES.c:(.text+0x1d1): undefined reference to `EVP_CIPHER_CTX_set_padding'
AES.o:AES.c:(.text+0x1fc): undefined reference to `EVP_DecryptUpdate'
AES.o:AES.c:(.text+0x227): undefined reference to `EVP_DecryptFinal_ex'
AES.o:AES.c:(.text+0x484): undefined reference to `EVP_CIPHER_CTX_set_padding'
AES.o:AES.c:(.text+0x4af): undefined reference to `EVP_EncryptUpdate'
AES.o:AES.c:(.text+0x4da): undefined reference to `EVP_EncryptFinal_ex'
AES.o:AES.c:(.text+0xc54): undefined reference to `EVP_CIPHER_CTX_new'
AES.o:AES.c:(.text+0xc64): undefined reference to `EVP_CIPHER_CTX_new'
AES.o:AES.c:(.text+0xc9a): undefined reference to `EVP_EncryptInit_ex'
AES.o:AES.c:(.text+0xcce): undefined reference to `EVP_DecryptInit_ex'
AES.o:AES.c:(.text+0x967): undefined reference to `EVP_aes_256_ofb'
AES.o:AES.c:(.text+0x976): undefined reference to `EVP_aes_256_ecb'
AES.o:AES.c:(.text+0x986): undefined reference to `EVP_aes_128_ecb'
AES.o:AES.c:(.text+0x996): undefined reference to `EVP_aes_192_ecb'
AES.o:AES.c:(.text+0x9a6): undefined reference to `EVP_aes_128_cbc'
AES.o:AES.c:(.text+0x9b6): undefined reference to `EVP_aes_192_cbc'
AES.o:AES.c:(.text+0x9c6): undefined reference to `EVP_aes_256_cbc'
AES.o:AES.c:(.text+0x9d6): undefined reference to `EVP_aes_128_cfb128'
AES.o:AES.c:(.text+0x9e6): undefined reference to `EVP_aes_128_ofb'
AES.o:AES.c:(.text+0x9f6): undefined reference to `EVP_aes_192_cfb128'
AES.o:AES.c:(.text+0xa06): undefined reference to `EVP_aes_256_cfb128'
AES.o:AES.c:(.text+0xa16): undefined reference to `EVP_aes_128_ctr'
AES.o:AES.c:(.text+0xa26): undefined reference to `EVP_aes_192_ctr'
AES.o:AES.c:(.text+0xa36): undefined reference to `EVP_aes_256_ctr'
AES.o:AES.c:(.text+0xa40): undefined reference to `EVP_aes_192_ofb'
collect2: ld returned 1 exit status
dmake.exe:  Error code 129, while making 'blib\arch\auto\Crypt\OpenSSL\AES\AES.dll'

The issue is that the Makefile.PL is looking for libssl or libcrypto. In those old perls it should link libeay32

C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 AES.bs
C:\strawberry\perl\bin\perl.exe -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"Crypt::OpenSSL::AES\", 'DLBASE' => 'AES', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
dlltool --def AES.def --output-exp dll.exp
g++ -o blib\arch\auto\Crypt\OpenSSL\AES\AES.dll -Wl,--base-file -Wl,dll.base -mdll -s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" AES.o   C:\strawberry\perl\lib\CORE\libperl516.a C:\strawberry\perl\..\c\lib\libeay32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libmoldname.a C:\strawberry\c\x86_64-w64-mingw32\lib\libkernel32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libuser32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libgdi32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libwinspool.a C:\strawberry\c\x86_64-w64-mingw32\lib\libcomdlg32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libadvapi32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libshell32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libole32.a C:\strawberry\c\x86_64-w64-mingw32\lib\liboleaut32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libnetapi32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libuuid.a C:\strawberry\c\x86_64-w64-mingw32\lib\libws2_32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libmpr.a C:\strawberry\c\x86_64-w64-mingw32\lib\libwinmm.a C:\strawberry\c\x86_64-w64-mingw32\lib\libversion.a C:\strawberry\c\x86_64-w64-mingw32\lib\libodbc32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libodbccp32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libcomctl32.a dll.exp
dlltool --def AES.def --base-file dll.base --output-exp dll.exp
g++ -o blib\arch\auto\Crypt\OpenSSL\AES\AES.dll -mdll -s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" AES.o   C:\strawberry\perl\lib\CORE\libperl516.a C:\strawberry\perl\..\c\lib\libeay32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libmoldname.a C:\strawberry\c\x86_64-w64-mingw32\lib\libkernel32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libuser32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libgdi32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libwinspool.a C:\strawberry\c\x86_64-w64-mingw32\lib\libcomdlg32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libadvapi32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libshell32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libole32.a C:\strawberry\c\x86_64-w64-mingw32\lib\liboleaut32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libnetapi32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libuuid.a C:\strawberry\c\x86_64-w64-mingw32\lib\libws2_32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libmpr.a C:\strawberry\c\x86_64-w64-mingw32\lib\libwinmm.a C:\strawberry\c\x86_64-w64-mingw32\lib\libversion.a C:\strawberry\c\x86_64-w64-mingw32\lib\libodbc32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libodbccp32.a C:\strawberry\c\x86_64-w64-mingw32\lib\libcomctl32.a dll.exp
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 755 blib\arch\auto\Crypt\OpenSSL\AES\AES.dll
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e cp -- AES.bs blib\arch\auto\Crypt\OpenSSL\AES\AES.bs
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 blib\arch\auto\Crypt\OpenSSL\AES\AES.bs
timlegge commented 1 year ago

LIBS => ['-leay32 -lssl32 ']

timlegge commented 1 year ago

Fixed in recent builds