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

[Qt] Update to 6.6.3 #37731

Merged
merged 67 commits into from
Apr 30, 2024
Merged

[Qt] Update to 6.6.3 #37731

merged 67 commits into from
Apr 30, 2024

Conversation

Neumann-A
Copy link
Contributor

@Neumann-A Neumann-A commented Mar 26, 2024

Fixes #37766

@Neumann-A Neumann-A mentioned this pull request Mar 26, 2024
7 tasks
@jimwang118 jimwang118 added the category:port-update The issue is with a library, which is requesting update new revision label Mar 27, 2024
@Neumann-A
Copy link
Contributor Author

@dg0yt Have you looked at static ffmpeg linkage yet? Seems kind of coursed from a cmake perspective

@Neumann-A
Copy link
Contributor Author

Neumann-A commented Mar 28, 2024

all linker errors solved

@Neumann-A
Copy link
Contributor Author

list boils down to:

avformat ->  lzma/tiff libmodplug openmpt libssh libxml2 iconv
avcodec -> opencl openh264 libwebp libx264 soxr theora vorbis libvpx  libopus speex openjpeg mp3lame WebRTC aac dav1d libaom snappy libxml2 iconv

@dg0yt
Copy link
Contributor

dg0yt commented Mar 28, 2024

@dg0yt Have you looked at static ffmpeg linkage yet? Seems kind of coursed from a cmake perspective

I had to deal with a symbol relocation problem when linking ffmpeg libs. That's a different story.
You deal with transitive usage requirements. I would recommend pkgconf 2.2.0 for introspecting the dependency tree.

@nirvn
Copy link
Contributor

nirvn commented Apr 12, 2024

@Neumann-A , nice to see CIs all turned green :)

@jimwang118 jimwang118 added the info:reviewed Pull Request changes follow basic guidelines label Apr 15, 2024
set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH ON) # Required for CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 3.1 which otherwise ignores CMAKE_PREFIX_PATH

if(@WITH_MP3LAME@)
find_package(mp3lame CONFIG )
Copy link
Member

Choose a reason for hiding this comment

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

Don't these need the 'transitive REQUIRED' treatment find_dependency does?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Theoretical yes but this is in vcpkg-cmake-wrapper.cmake.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@BillyONeal: If you explicitly want I can add what libarchive is doing.

set(z_vcpkg_libarchive_args "")
if("REQUIRED" IN_LIST ARGS)
    list(APPEND z_vcpkg_libarchive_args "REQUIRED")
endif()
if("QUIET" IN_LIST ARGS)
    list(APPEND z_vcpkg_libarchive_args "QUIET")
endif()
find_package(BZip2 ${z_vcpkg_libarchive_args})

but find_dependency does not work in the wrapper. It only works within a proper find_package call which the wrapper is not.
Practically, I convinced myself that it does not make that much of a difference. You just get a better way to locate possible errors. So instead of XY::XY target not being found you'll get that package XY was not found. However you would also need to add code like:

set(package_FOUND true)
find_package(XY ${z_vcpkg_package_args})
if(NOT XY_FOUND)
  # cannot early return here since the wrapper is inside a macro
  # could however FATAL_ERROR if package is REQUIRED
  set(package_FOUND false)
else()
  # adjust what needs adjustment
endif()

I think vcpkg.cmake needs to have helper functions for these cases instead of requiring to duplicate the same logic over and over again.

Copy link
Contributor

Choose a reason for hiding this comment

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

vcpkg_find_dependency? #22743

Copy link
Contributor

@ras0219-msft ras0219-msft Apr 25, 2024

Choose a reason for hiding this comment

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

What about moving much of this logic into a proper config; something like ffmpeg-vcpkg-config.cmake? Then doing something approximately like

# ffmpeg/vcpkg-cmake-wrapper.cmake
set(ffmpeg_original_args "${ARGS}")
# Use required because this should be guaranteed to resolve
_find_package(ffmpeg-vcpkg CONFIG REQUIRED)
# ffmpeg-vcpkg/ffmpeg-vcpkg-config.cmake
# prep work, checking targets / components
_find_package(${ffmpeg_original_args})
if (@WITH_SSH@)
  find_dependency(libssh CONFIG)
  list(APPEND FFMPEG_LIBRARIES ssh)
endif()
# ...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

What about moving much of this logic into a proper config; something like ffmpeg-vcpkg-config.cmake?

a) _find_package(ffmpeg-vcpkg CONFIG REQUIRED) still needs the correct REQUIRED/QUIET logic. You cannot simply add REQUIRED here
b) there is little to no value rerouting through a CONFIG. vcpkg already provides the MODULE
c) rewriting the existing CONFIG in a MODULE requires time which I don't want to spend. I didn't even want to touch FFMPEG; these fixes are just required to get qtinterfaceframework in static builds to work. I also see no added value of having a CONFIG over a MODULE

Copy link
Contributor

Choose a reason for hiding this comment

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

What about moving much of this logic into a proper config; something like ffmpeg-vcpkg-config.cmake?

Another wrapper to wrap a non-official, non-unofficial name ffmpeg-vcpkg? This solves a reuse problem, but why not just an unofficial-ffmpeg config in that case?

But another wrapper doesn't resolve the problem of not being able to use find_dependency in wrappers or find modules. We can use guarded find_package(... REQUIRED), assuming that the dependency including a cmake package is provided by dependencies. i.e. it is always an error from a vcpkg point of view if the cmake deps don't match the vcpkg deps.

@Neumann-A
Copy link
Contributor Author

@BillyONeal ping?

ports/qtmultimedia/remove_export_macro.patch Outdated Show resolved Hide resolved
ports/pulseaudio/portfile.cmake Show resolved Hide resolved
ports/pulseaudio/portfile.cmake Outdated Show resolved Hide resolved
ports/pulseaudio/fix-build.patch Outdated Show resolved Hide resolved
@Neumann-A
Copy link
Contributor Author

@JavierMatosD CI is green

@data-queue data-queue merged commit c591ac6 into microsoft:master Apr 30, 2024
17 checks passed
@Neumann-A Neumann-A deleted the update_qt_6.6.3 branch April 30, 2024 19:04
@Neumann-A Neumann-A restored the update_qt_6.6.3 branch April 30, 2024 19:04
@Neumann-A Neumann-A deleted the update_qt_6.6.3 branch April 30, 2024 19:04
yurybura pushed a commit to yurybura/vcpkg that referenced this pull request May 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:port-update The issue is with a library, which is requesting update new revision info:reviewed Pull Request changes follow basic guidelines
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[qt] update to 6.6.3
9 participants