Skip to content

add package: dtkcommon\dtklog\dtkcore\dtkgui\dtkwidget\dtkdeclarative - #30594

Open
kt286 wants to merge 1 commit into
msys2:masterfrom
kt286:add/dtkcommon
Open

kt286 wants to merge 1 commit into
msys2:masterfrom
kt286:add/dtkcommon

Conversation

@kt286

@kt286 kt286 commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Deepin Tool Kit (DTK) is a Qt‑based development framework created by Deepin Technology (and now used by UnionTech for the UOS operating system). DTK provides a unified set of UI libraries and common utilities to build the Deepin Desktop Environment (DDE) and its ecosystem of applications.

@kt286
kt286 force-pushed the add/dtkcommon branch 6 times, most recently from 7581cec to 2377b29 Compare July 23, 2026 09:19
@dragon-archer

Copy link
Copy Markdown
Collaborator

What's the use of this package on Windows? IMHO this package should be specific to linux desktop (or maybe more specificially, Deepin Distribution).

Also, this package now only contains some CMake files and a JSON config, is it intended?

BTW, NEVER add provides without ${MINGW_PACKAGE_PREFIX}

@kt286

kt286 commented Aug 2, 2026

Copy link
Copy Markdown
Contributor Author

What's the use of this package on Windows? IMHO this package should be specific to linux desktop (or maybe more specificially, Deepin Distribution).

DTK is a cross-platform framework. The purpose of adding this package is to develop Deepin-style programs on Windows or to port Deepin's native programs to Windows.

like deepin-music

Also, this package now only contains some CMake files and a JSON config, is it intended?

DTK includes components such as dtkcommon, dtklog, dtkcore, dtkgui, dtkwidget, and dtkdeclarative. These components have dependency relationships with each other, so I need to submit one PR at a time—merging it before submitting the next. dtkcommon is the most basic package and it is expected to contain only a few files.

BTW, NEVER add provides without ${MINGW_PACKAGE_PREFIX}

remove it.

@striezel striezel added the new-package Pull request which adds new package(s) label Aug 4, 2026
@kt286 kt286 changed the title add package: dtkcommon add package: dtkcommon\dtklog\dtkcore\dtkgui\dtkwidget\dtkdeclarative Aug 7, 2026
@kt286
kt286 force-pushed the add/dtkcommon branch 6 times, most recently from 5a74dad to c0862ae Compare August 7, 2026 04:18
@kt286
kt286 marked this pull request as draft August 18, 2026 03:28
@kt286
kt286 marked this pull request as ready for review August 18, 2026 03:29
@BLumia

BLumia commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

@dragon-archer Hi, deepin developer (and employee) here.

What's the use of this package on Windows? IMHO this package should be specific to linux desktop (or maybe more specificially, Deepin Distribution).

While a lot of deepin application is not really portable, some of them are actually cross-platform. DTK is something somewhat similar to KDE Framework, which is a cross-platform toolkit, and it depends on the developer to decide if the DTK-based application will be linux-only or cross-platform.

@kt286 is a wonderful community contributor who already succeed porting deepin-music to Windows, and I believe some other deepin application can be ported as well. I can also offer help addressing porting issues if/when needed.

Hope such information helps, and feel free to let me know if you need additional information :)

Comment thread mingw-w64-dtkcommon/PKGBUILD Outdated
Comment thread mingw-w64-dtkcommon/PKGBUILD Outdated
Comment thread mingw-w64-dtkcommon/PKGBUILD Outdated
@kt286
kt286 force-pushed the add/dtkcommon branch 2 times, most recently from 4c2a57a to a58e85a Compare August 18, 2026 13:47
@kt286
kt286 requested a review from mmuetzel August 19, 2026 01:11
Comment thread mingw-w64-dtkcommon/PKGBUILD Outdated
Comment thread mingw-w64-dtkcommon/PKGBUILD Outdated
Comment thread mingw-w64-dtkcommon/PKGBUILD Outdated
Comment thread mingw-w64-dtkgui/PKGBUILD Outdated
@kt286
kt286 force-pushed the add/dtkcommon branch 2 times, most recently from cf4f233 to 4051fb9 Compare August 19, 2026 07:38
@kt286
kt286 requested a review from mmuetzel August 19, 2026 08:07
@kt286

kt286 commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

The package for clangarm64 compiled successfully before, but it failed after I only modified the sha256sums and the license. Should we try rerunning it?

@mmuetzel

mmuetzel commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

It failed with the following error:

  FAILED: [code=3221225785] qt6/src/qml/private/.rcc/qmlcache/dtkdeclarativeprivatesplugin_qmlcache_loader.cpp C:/_/B/src/build-CLANGARM64/qt6/src/qml/private/.rcc/qmlcache/dtkdeclarativeprivatesplugin_qmlcache_loader.cpp 
  C:\Windows\system32\cmd.exe /C "cd /D C:\_\B\src\build-CLANGARM64\qt6\src\qml\private && C:\_\B\src\build-CLANGARM64\.qt\bin\qt_setup_tool_path.bat C:/M/msys64/clangarm64/share/qt6/bin/qmlcachegen.exe --resource-name qmlcache_dtkdeclarativeprivatesplugin -o C:/_/B/src/build-CLANGARM64/qt6/src/qml/private/.rcc/qmlcache/dtkdeclarativeprivatesplugin_qmlcache_loader.cpp @C:/_/B/src/build-CLANGARM64/qt6/src/qml/private/.rcc/qmlcache/dtkdeclarativeprivatesplugin_qml_loader_file_list.rsp"
  [28/496] Running moc --collect-json for target dtkdeclarativeprivatesplugin
  [29/496] Running rcc for resource qmake_Chameleon
  [30/496] Running moc --collect-json for target qtquickcontrolschameleonstyleplugin
  [31/496] Building CXX object examples/qml-inspect/CMakeFiles/qml-inspect.dir/main.cpp.obj
  [32/496] Automatic MOC for target dtk6declarative
  ninja: build stopped: subcommand failed.
  Exit code 0xc0000139
  CMake Error: Generator: build tool execution failed, command was: C:/M/msys64/clangarm64/bin/ninja.exe
  ==> ERROR: A failure occurred in build().

Qt6 is currently in the process of being upgraded. Not all packages have been built yet after the version bump:
https://packages.msys2.org/queue

Maybe, the error is caused by installing packages with "mixed" versions of Qt6 from the staging repository.
It might make sense to wait a couple of minutes/hours for the Qt6 packages to be built consistently for staging.
I'll trigger the CI again when that is completed.

@mmuetzel

mmuetzel commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

The CLANGARM64 environment has passed building now.

I'm seeing the following warning in the CI logs:

  CMake Warning at C:/M/msys64/clangarm64/lib/cmake/Qt6/QtPublicDependencyHelpers.cmake:339 (message):
    This project is using headers of the CorePrivate module and will therefore
    be tied to this specific Qt module build version.  Running this project
    against other versions of the Qt modules may crash at any arbitrary point.
    This is not a bug, but a result of using Qt internals.  You have been
    warned!

Does that mean that the package needs to be rebuilt on each Qt6 update?
If so, that should at least be documented somewhere.

More importantly, there are issues like the following:

  /clangarm64/libexec/dtk6/DGui/bin/dci-iconfinder.exe:
  	libdtk6gui.dll => not found

That might be because the .dll libraries are installed in the lib folder. They need to be installed in the bin folder on Windows.
A typical pattern in CMake that should be working correctly cross-platform is something like the following:

install(TARGETS library_target
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
  RUNTIME DESTINATION bin)

Or $CMAKE_INSTALL_LIBDIR and $CMAKE_INSTALL_BINDIR (instead of lib and bin) if you are using GNUInstallDirs.

@BLumia

BLumia commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Does that mean that the package needs to be rebuilt on each Qt6 update?

Yes, since some DTK components indeed used Qt's private API.

If so, that should at least be documented somewhere.

Do you mean in PKGBUILD or in DTK's own documentation?

That might be because the .dll libraries are installed in the lib folder. They need to be installed in the bin folder on Windows.

Agree, indeed a problem. Will look into this issue later, patches/PRs are also welcome btw :)

@mmuetzel

Copy link
Copy Markdown
Collaborator

Does that mean that the package needs to be rebuilt on each Qt6 update?

Yes, since some DTK components indeed used Qt's private API.

Thanks for the confirmation.
Does that apply to all DTK packages? Or only to some?

If so, that should at least be documented somewhere.

Do you mean in PKGBUILD or in DTK's own documentation?

I guess it would help to have a comment about that in the PKGBUILD files of the package(s) that need to be rebuilt. And maybe also in the PKGBUILD file of the Qt6 package to which this dependency exists.

That might be because the .dll libraries are installed in the lib folder. They need to be installed in the bin folder on Windows.

Agree, indeed a problem. Will look into this issue later, patches/PRs are also welcome btw :)

I don't know the internals of DTKs build system. So, you'll probably be faster in adjusting it in a way that keeps the "spirit" of it than I'll be.

I left a couple of comments at linuxdeepin/dtkgui#400 (after it was already merged). I hope those hints are still helpful.

@BLumia

BLumia commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Associated PRs by @kt286 :

Edit: All 5 PRs merged from linuxdeepin upstream repo. Thanks for the PRs! The WINDOWS_EXPORT_ALL_SYMBOLS change might needs to be used together with GenerateExportHeader, it can be made in follow up PRs if you still would like to working on improving Windows support :)

DTK includes components such as dtkcommon, dtklog, dtkcore, dtkgui, dtkwidget, and dtkdeclarative
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-package Pull request which adds new package(s)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants