Skip to content

Conversation

@jwrober
Copy link
Contributor

@jwrober jwrober commented Jul 12, 2025

See #44808

  • Changes comply with the maintainer guide.
  • The name of the port matches an existing name for this component on https://repology.org/ if possible, and/or is strongly associated with that component on search engines.
  • Optional dependencies are resolved in exactly one way. For example, if the component is built with CMake, all find_package calls are REQUIRED, are satisfied by vcpkg.json's declared dependencies, or disabled with CMAKE_DISABLE_FIND_PACKAGE_Xxx.
  • The versioning scheme in vcpkg.json matches what upstream says.
  • The license declaration in vcpkg.json matches what upstream says.
  • The installed as the "copyright" file matches what upstream says.
  • The source code of the component installed comes from an authoritative source.
  • The generated "usage text" is accurate. See adding-usage for context.
  • The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
  • Only one version is in the new port's versions file.
  • Only one version is added to each modified port's versions file.

This is my first vcpkg port, setting to draft initially.

@jwrober
Copy link
Contributor Author

jwrober commented Jul 12, 2025

@microsoft-github-policy-service agree

@jwrober
Copy link
Contributor Author

jwrober commented Jul 12, 2025

All the failures look like this. Why is ninja failing on some platforms, but not others?

CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:127 (message):
    Command failed: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe" -v
    Working Directory: D:/b/kf6archive/x86-windows-rel/vcpkg-parallel-configure
    Error code: 1

@Osyotr
Copy link
Contributor

Osyotr commented Jul 12, 2025

You have to look at the configure log.

CMake Error: Could not open file for write in copy operation D:/b/kf6archive/src/v6.7.0-619a9ab2f9.clean/.clang-format.tmp
CMake Error: : System Error: Permission denied
CMake Error at D:/installed/x64-windows/share/ECM/kde-modules/KDEClangFormat.cmake:67 (configure_file):
  configure_file Problem configuring file
Call Stack (most recent call first):
  D:/installed/x64-windows/share/ECM/kde-modules/KDEFrameworkCompilerSettings.cmake:64 (include)
  CMakeLists.txt:39 (include)

@dg0yt
Copy link
Contributor

dg0yt commented Jul 13, 2025

Why is ninja failing on some platforms, but not others?

CMake Error: Could not open file for write in copy operation D:/b/kf6archive/src/v6.7.0-619a9ab2f9.clean/.clang-format.tmp
CMake Error: : System Error: Permission denied
CMake Error at D:/installed/x64-windows/share/ECM/kde-modules/KDEClangFormat.cmake:67 (configure_file):
  configure_file Problem configuring file

So it is not a platform thing. The configuration step writes to the source directory. This is a a race when vcpkg configures release and debug binary directories at the same time. If you cannot turn off the step which writes to the source dir, you can add DISABLE_PARALLEL_CONFIGURE to the vcpkg_cmake_configure arguments.

@jwrober
Copy link
Contributor Author

jwrober commented Jul 13, 2025

Well bummer that didn't seem to do the trick.

@Osyotr
Copy link
Contributor

Osyotr commented Jul 13, 2025

This is new:

Installing in D:/p/kf6archive_x86-windows/debug. Run D:/b/kf6archive/x86-windows-dbg/prefix.sh to set the environment for KArchive.
CMake Error at D:/downloads/tools/cmake-3.30.1-windows/cmake-3.30.1-windows-i386/share/cmake-3.30/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
  Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
  D:/downloads/tools/cmake-3.30.1-windows/cmake-3.30.1-windows-i386/share/cmake-3.30/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
  D:/downloads/tools/cmake-3.30.1-windows/cmake-3.30.1-windows-i386/share/cmake-3.30/Modules/FindPkgConfig.cmake:114 (find_package_handle_standard_args)
  D:/a/_work/1/s/scripts/buildsystems/vcpkg.cmake:896 (_find_package)
  CMakeLists.txt:73 (find_package)

Hint: #31357

@jwrober
Copy link
Contributor Author

jwrober commented Jul 13, 2025

Thanks for the hint. I'll have a look at PkgConfig too.

@jwrober jwrober marked this pull request as ready for review July 15, 2025 18:16
@jwrober
Copy link
Contributor Author

jwrober commented Jul 15, 2025

I'm not sure of the error for the x86_windows CI run that passed everywhere else. I "think" I setup to have the CI skip the Android platforms. I think a newer version of ECM will fix the issue, so its kind of a chicken-egg situation there. All the other platforms look looks and match what our project needs (windows and osx)

@vicroms vicroms self-assigned this Jul 16, 2025
@vicroms vicroms added the info:needs-maintainer-attention Lets the current 'on rotation' vcpkg maintainer know they need to look at this. label Jul 16, 2025
@jwrober jwrober requested a review from vicroms July 19, 2025 15:42
@@ -0,0 +1,60 @@
{
"name": "kf6archive",
Copy link
Member

Choose a reason for hiding this comment

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

I have a couple of questions regarding the KDE Framework libraries.

Is version 5 still being maintained? Does it offer a LTS version?

This seems to be in a similar situation to Qt, but do we really need to keep both versions around? If the answer to any of the previous questions is "no", then we should update the existing port and maybe rename it.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

For transparency, I am not a Qt nor a KDE Frameworks developer. I support an open source game that leverages Qt and the KfArchive library. Hence the port here for the Qt6 one. As I understand it based on a read here the Qt5 frameworks are in maintenance mode. I believe that is the same with Qt 5.15, which is the last of the Qt v5 LTS series. Frameworks don't do LTS, only Qt does. While Qt6 has been out now for awhile and has an LTS in v6.8, the development libraries are kind of new in the Linux world, especially Frameworks libraries.

My suggestion is to keep both v5 and v6 for both Qt and the KDE Frameworks. It's going to take some time for everyone using Qt5 to get over to Qt6 I'll wager. KDE Frameworks v6 library packages aren't even in Ubuntu LTS yet. That won't happen until 26.04 I think. They were not included in 24.04. Also, I think this port of kf6archive is the only KDE Frameworks port on any library on Qt6. There is an open issue for the rest of them, but I only need the one so took it under myself to add it here.

Hope this helps.

Choose a reason for hiding this comment

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

Hi! The situation is indeed a bit complicated.

Qt 5 is officially end-of-life, but still gets (commercial) extended support by the Qt Company. (Some of?) the changes are committed to the repos on GitHub. Kde maintains an unversioned fork based on this + other fixes they backport from Qt 6. This is used by Linux distributions that ship Qt 5 (e.g. Arch). Vcpkg uses the last release by the Qt Company (link).

The latest Kde Frameworks 5 release was 5.116.0 on Sat May 19, 2024. This is used in Kde Plasma 5.27 LTS, which is still supported and had a release in January. Given the ties between Frameworks and Plasma, The Kde Qt fork and Kde Frameworks will be supported at least as long as Plasma is. There has been no end-of-life announcement so far.

Copy link
Member

Choose a reason for hiding this comment

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

Qt 5 is officially end-of-life, but still gets (commercial) extended support by the Qt Company.

According to https://endoflife.date/qt , OSS support for qt5 ended 4 years, 7 months ago, and commercial support ended 2 months ago.

I think that supports flipping vcpkg's canonical version of qt to qt6 for all downstream ports that must pick one. We already did this in e.g. qtapplicationmanager.

Copy link
Member

Choose a reason for hiding this comment

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

My suggestion is to keep both v5 and v6 for both Qt and the KDE Frameworks.

Do the KDE frameworks take steps to not step on each others' symbols for different versions such that they can be simultaneously installed? Most libraries do not do that, qt is special for doing so. Most of the time we can usually only pick one.

Choose a reason for hiding this comment

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

Frameworks 5 and 6 can be installed next to each other but not linked together in the same executable. For instance, Arch Linux has both karchive and karchive-qt5. On my Ubuntu-based distro, I have:

/usr/lib/x86_64-linux-gnu/libKF5Archive.so.5.116.0
/usr/lib/x86_64-linux-gnu/libKF6Archive.so.6.15.0

Copy link
Member

Choose a reason for hiding this comment

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

Unfortunately vcpkg's registry models a single link domain so if they can't be linked together I think we have to pick one to be the canonical one for the curated registry.

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 Are you suggesting we name this port kfarchive? This would follow how Qt6 is ported e.g. qt-base is Qt6 and qt5-base is Qt5

Choose a reason for hiding this comment

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

(the framework name is karchive so it should be something like kf-karchive or just karchive, but it's customary to prefix kf with the version, as in kf6)

Copy link
Member

Choose a reason for hiding this comment

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

No, I wasn't suggesting a name change, I was trying to say "can we take this at all while kf5archive exists". My understanding was that qt provided the link domain separation thing making it OK but after doing some digging with @vicroms and @ras0219-msft today it appears qt might not actually provide that unless you go out of your way to set the "namespace" for it to be in, and it doesn't appear we do that.

Which means this seems to be providing the same guarantees that our qt ports are already providing, which seems like it has to be OK then even if it breaks msbuild customers that try to install both.

Digging on repology looking for other kfXxx things e.g. https://repology.org/project/kio/versions our existing kf5Xxx are getting marked as part of that "project". The most common naming pattern is either no numbering at all, or kfX-name . Unfortunately that makes us a 'special snowflake' with kf5Xxx because we have no dash, but that's unfortunately too late to be worth changing now. Given that we're considering having both, I think the name already proposed here, kf6archive, is correct.

@vicroms vicroms added the requires:vcpkg-team-review This PR or issue requires someone on the vcpkg team to take a further look. label Jul 20, 2025
@jwrober
Copy link
Contributor Author

jwrober commented Jul 28, 2025

Anything else for this PR to be approved and merged?

@vicroms vicroms removed the requires:vcpkg-team-review This PR or issue requires someone on the vcpkg team to take a further look. label Jul 29, 2025
Copy link
Member

@BillyONeal BillyONeal left a comment

Choose a reason for hiding this comment

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

Thanks for the new port!

@BillyONeal BillyONeal merged commit e9bb3f9 into microsoft:master Aug 1, 2025
18 checks passed
talregev pushed a commit to talregev/vcpkg that referenced this pull request Aug 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

info:needs-maintainer-attention Lets the current 'on rotation' vcpkg maintainer know they need to look at this.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants