Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[many ports] mingw support #14556

Merged
merged 21 commits into from Dec 1, 2020

Conversation

longnguyen2004
Copy link
Contributor

@longnguyen2004 longnguyen2004 commented Nov 13, 2020

Describe the pull request

  • What does your PR fix?
    Add mingw support for a bunch of ffmpeg related ports
    Currently testing ffmpeg with features [avcodec,avdevice,avfilter,avformat,avresample,bzip2,core,ffmpeg,ffprobe,gpl,lzma,mp3lame,opus,postproc,swresample,swscale,theora,vorbis,vpx,x264,x265,zlib] Works perfectly now.
  • Which triplets are supported/not supported? Have you updated the CI baseline?
    All mingw triplets
  • Does your PR follow the maintainer guide?
    Yes

longnguyen2004 and others added 2 commits November 13, 2020 23:04
Co-authored-by: Matthias C. M. Troffaes <matthias.troffaes@gmail.com>
@longnguyen2004
Copy link
Contributor Author

Seems to work fine! I think this is ready
image

@longnguyen2004 longnguyen2004 marked this pull request as ready for review November 14, 2020 03:28
@NancyLi1013 NancyLi1013 self-assigned this Nov 16, 2020
@NancyLi1013 NancyLi1013 added the category:port-feature The issue is with a library, which is requesting new capabilities that didn’t exist label Nov 16, 2020
Copy link
Contributor

@NancyLi1013 NancyLi1013 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please also update Port-Version for libogg?

@longnguyen2004
Copy link
Contributor Author

Sure I'll amend that commit tonight

@NancyLi1013
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@JackBoosY
Copy link
Contributor

gdal:x64-osx regression:

jpeg2000_vsil_io.cpp:151:5: error: cannot initialize a member subobject of type 'int (*)(jas_stream_obj_t *, const char *, unsigned int)' (aka 'int (*)(void *, const char *, unsigned int)') with an lvalue of type 'int (jas_stream_obj_t *, char *, unsigned int)' (aka 'int (void *, char *, unsigned int)'): type mismatch at 2nd parameter ('const char *' vs 'char *')
    JPEG2000_VSIL_write,
    ^~~~~~~~~~~~~~~~~~~
1 error generated.

@longnguyen2004
Copy link
Contributor Author

longnguyen2004 commented Nov 24, 2020

Every changes made to vcpkg_configure_make results in a huge conflict for whatever reason, does anyone know why?
Also, the gdal regression doesn't seem to come from me.

@JackBoosY
Copy link
Contributor

@longnguyen2004 I updated vcpkg_configure_make in my another PR some days ago.

@Neumann-A
Copy link
Contributor

huge conflict for whatever reason, does anyone know why?

I just don't like the WS changes to it.

your line endings probably are wrong and that is why your PR is updating all of the file.

@longnguyen2004
Copy link
Contributor Author

longnguyen2004 commented Nov 24, 2020

Hmm I haven't done any line ending conversions, let me check my local files. What's the current line ending?

@strega-nil
Copy link
Contributor

This LGTM, but I want a CTI to look this over; cc @JackBoosY could you look at this this week?

@longnguyen2004
Copy link
Contributor Author

longnguyen2004 commented Nov 26, 2020

Regression on mp3lame:x64-windows-static, I'll have a look.
Builds fine on my computer, seems like SourceForge was broken before.

@JackBoosY
Copy link
Contributor

Currently working on #14716, will check these regressions tommorrow.

@JackBoosY
Copy link
Contributor

ocilib:x64-windows-static:

     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymCleanup [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymSetOptions [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymInitialize [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymGetSearchPathW [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymSetSearchPathW [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymGetModuleBase64 [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymFunctionTableAccess64 [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_StackWalk64 [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymFromAddr [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol __imp_SymGetLineFromAddr64 [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol SymGetModuleBase64 [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(stack_trace_win.obj) : error LNK2001: unresolved external symbol SymFunctionTableAccess64 [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(win_util.obj) : error LNK2001: unresolved external symbol __imp_SetupDiGetClassDevsW [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(win_util.obj) : error LNK2001: unresolved external symbol __imp_SetupDiEnumDeviceInfo [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(win_util.obj) : error LNK2001: unresolved external symbol __imp_CM_Get_Device_IDW [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(win_util.obj) : error LNK2001: unresolved external symbol __imp_InitPropVariantFromCLSID [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(win_util.obj) : error LNK2001: unresolved external symbol PowerDeterminePlatformRoleEx [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(win_util.obj) : error LNK2001: unresolved external symbol __imp_IsOS [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(pe_image.obj) : error LNK2001: unresolved external symbol __HrLoadAllImportsForDll [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(wmi.obj) : error LNK2001: unresolved external symbol CLSID_WbemLocator [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(file_version_info_win.obj) : error LNK2001: unresolved external symbol VerQueryValueW [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(file_version_info_win.obj) : error LNK2001: unresolved external symbol GetFileVersionInfoSizeW [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(file_version_info_win.obj) : error LNK2001: unresolved external symbol GetFileVersionInfoW [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>chromium_base.lib(file_enumerator_win.obj) : error LNK2001: unresolved external symbol __imp_PathMatchSpecW [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]
     2>D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\lib64\\ociliba.dll : fatal error LNK1120: 24 unresolved externals [D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\proj\dll\ocilib_dll_vs2019.vcxproj]

Command:

         C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.27.29110\bin\HostX86\x64\link.exe /ERRORREPORT:QUEUE /OUT:"D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\lib64\\ociliba.dll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"D:/installed/x64-windows-static\lib" /LIBPATH:"D:/installed/x64-windows-static\lib\manual-link" kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "D:/installed/x64-windows-static\lib\*.lib" /NODEFAULTLIB:ocilib.lib /MANIFEST:NO /DEBUG /PDB:".\..\..\lib64\ociliba.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /LTCG /TLBID:1 /DYNAMICBASE:NO /IMPLIB:"D:\buildtrees\ocilib\x64-windows-static-rel\4fc7a69e6d-337dbe59ca.clean\lib64\\ociliba.lib" /MACHINE:X64 /DLL .\temp\main.res  .\temp\agent.obj ...

According to the document, ocilib should link to Dbghelp.lib on Windows.

gdal:x64-linx:

jpeg2000dataset.cpp: In member function ‘int JPEG2000Dataset::DecodeImage()’:
jpeg2000dataset.cpp:516:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (poBand->iDepth != jas_image_cmptprec( psImage, iBand ) ||
                                ^
jpeg2000_vsil_io.cpp:154:1: error: invalid conversion from ‘int (*)(jas_stream_obj_t*, char*, unsigned int) {aka int (*)(void*, char*, unsigned int)}’ to ‘int (*)(jas_stream_obj_t*, const char*, unsigned int) {aka int (*)(void*, const char*, unsigned int)}’ [-fpermissive]
 };
 ^

gdal:x64-osx:

jpeg2000dataset.cpp:516:32: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
            if (poBand->iDepth != jas_image_cmptprec( psImage, iBand ) ||
                ~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
jpeg2000_vsil_io.cpp:151:5: error: cannot initialize a member subobject of type 'int (*)(jas_stream_obj_t *, const char *, unsigned int)' (aka 'int (*)(void *, const char *, unsigned int)') with an lvalue of type 'int (jas_stream_obj_t *, char *, unsigned int)' (aka 'int (void *, char *, unsigned int)'): type mismatch at 2nd parameter ('const char *' vs 'char *')
    JPEG2000_VSIL_write,
    ^~~~~~~~~~~~~~~~~~~

I met these regressions before, currently don't know why it happend again.

About mpg132 and mp3lame regressions, they are download issue, will be solved by rerun the pipeline test.

ports/ffmpeg/portfile.cmake Show resolved Hide resolved
ports/libogg/portfile.cmake Show resolved Hide resolved
@JackBoosY
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

ports/mp3lame/portfile.cmake Outdated Show resolved Hide resolved
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
@JackBoosY
Copy link
Contributor

Fine, the only regression is about gdal, I will take a look after the CI test finished.

@JackBoosY JackBoosY added the info:reviewed Pull Request changes follow basic guidelines label Dec 1, 2020
@JackBoosY
Copy link
Contributor

It seems that the GDAL regression no longer exists, and I hope it never happens again.

@strega-nil strega-nil merged commit 02f6b89 into microsoft:master Dec 1, 2020
@strega-nil
Copy link
Contributor

Awesome! Thanks @longnguyen2004 :)

@longnguyen2004 longnguyen2004 deleted the mingw-ffmpeg-related branch December 4, 2020 13:55
@longnguyen2004 longnguyen2004 restored the mingw-ffmpeg-related branch December 4, 2020 13:55
@longnguyen2004 longnguyen2004 deleted the mingw-ffmpeg-related branch December 4, 2020 13:56
@longnguyen2004 longnguyen2004 restored the mingw-ffmpeg-related branch December 4, 2020 13:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:port-feature The issue is with a library, which is requesting new capabilities that didn’t exist category:tool-update The issue is with build tool or build script, which requires update or should be executed correctly info:reviewed Pull Request changes follow basic guidelines
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants