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

Packaging the Deepin Desktop Environment #59023

Closed
57 of 76 tasks
romildo opened this issue Apr 5, 2019 · 22 comments
Closed
57 of 76 tasks

Packaging the Deepin Desktop Environment #59023

romildo opened this issue Apr 5, 2019 · 22 comments

Comments

@romildo
Copy link
Contributor

romildo commented Apr 5, 2019

The Deepin Desktop Environment (DDE) is an elegant and easy to use desktop environment of the Chinese Deepin Linux distribution.

The purpose of this issue is to list the packages needed to have DDE in NixOS, as well as to discuss ideas on the process of packaging them.

Some of them have already been packaged.

Packages:

  • dbus-factory
  • dde-api
  • dde-calendar
  • dde-control-center
  • dde-daemon
  • dde-dock
  • dde-file-manager
  • dde-launcher
  • dde-network-utils
  • dde-polkit-agent
  • dde-qt-dbus-factory
  • dde-session-ui
  • deepin-account-faces
  • deepin-anything
  • deepin-desktop-base
  • deepin-desktop-schemas
  • deepin-gettext-tools
  • deepin-gtk-theme
  • deepin-icon-theme
  • deepin-image-viewer
  • deepin-manual
  • deepin-menu
  • deepin-metacity
  • deepin-mutter
  • deepin-screensaver
  • deepin-screenshot
  • deepin-shortcut-viewer
  • deepin-sound-theme
  • deepin-system-monitor
  • deepin-turbo
  • deepin-wallpapers
  • deepin-wm
  • dpa-ext-gnomekeyring
  • dtkcore
  • dtkwidget
  • dtkwm
  • go-dbus-factory
  • go-dbus-generator
  • go-gir-generator
  • go-lib
  • qcef
  • qt5dxcb-plugin
  • qt5integration
  • udisks2-qt5
  • startdde

Extra packages:

  • deepin-calculator
  • deepin-editor
  • deepin-movie-reborn
  • deepin-screenshot (dbus)
  • deepin-terminal

Services;

  • dde-api (dbus, systemd, user)
  • dde-calendar (dbus)
  • dde-control-center (dbus)
  • dde-daemon (dbus, systemd, user)
  • dde-dock (dbus)
  • dde-file-manager (dbus, systemd)
  • dde-launcher (dbus)
  • dde-session-ui (dbus)
  • deepin-anything (dbus, systemd, kernel module, user)
  • deepin-image-viewer (dbus)
  • deepin-manual (dbus)
  • deepin-menu (dbus)
  • deepin desktop environment
  • deepin-screensaver (dbus)
  • deepin-turbo (user systemd)

Debugging:

Issues:

  • dde-daemon: nixos/dde-daemon: init #59520 (review)
    • install image files at /var/cache/appearance/thumbnail/backgrounds/. This is not allowed because it is outside of the Nix store. FHS says that /var/cache is intended for cached data from applications. Such data is locally generated as a result of time-consuming I/O or calculation. The application must be able to regenerate or restore the data. Unlike /var/spool, the cached files can be deleted without data loss. Maybe they are generated by lib/deepin-daemon/theme-thumb-tool and can be omitted from the installation. Let's see when testing DDE...
    • /var/lib/polkit-1/localauthority/10-vendor.d/
    • configuration for dde-authority-pam: share/pam-configs etc/pam.d. pam-configs seems to be documented at https://wiki.ubuntu.com/PAMConfigFrameworkSpec
  • dde-dock: investigate share/polkit-1/actions/com.deepin.dde.dock.overlay.policy (see deepin.dde-dock: init at 4.9.8 #59244 (comment))
  • dde-dock: wrapper for plugins (dde-file-manager, ...)
  • deepin-anything: wrapper for plugins (dde-file-manager, ...) (see deepin.deepin-anything: init at 0.0.7 #59378 (comment))
  • deepin-mutter: wrapper for plugins
  • deepin-wm: wrapper for plugins (currently no other DDE component installs a plugin)
  • dde-polkit-agent: wrapper for plugins (dpa-ext-gnomekeyring)
  • dde-file-manager: wrapper for plugins (, ...)
  • Deepin settings schemas (provided by deepin-desktop-schemas) are used by dtkwidget and its dependencies, so it may need wrapping (see deepin.dde-file-manager: init at 4.8.6.2 #61366 (comment)).

cc @worldofpeace

@romildo
Copy link
Contributor Author

romildo commented Apr 5, 2019

#59038 adds dde-network-utils.

@romildo
Copy link
Contributor Author

romildo commented Apr 7, 2019

#59092 adds deepin.qcef (Qt5 binding of Chromium Embedded Framework), a dependency for the forthcoming deepin manual.

@worldofpeace
Copy link
Contributor

@romildo Do you have an expression for deepin-screenshot?

Just checking so I don't duplicate one if you have it and just haven't pr'd it.

@romildo
Copy link
Contributor Author

romildo commented Apr 10, 2019

Yes, I have. I will open a PR for it.

@romildo
Copy link
Contributor Author

romildo commented Apr 15, 2019

@worldofpeace When a package has associated dbus services, systemd services, kernel modules, and/or specific groups and users, it deserves a NixOS module, like I have been doing, right?

The alternative would be having a unique module for the entire DDE, which would enable those services and kernel modules, and create groups and users for all deepin packages in a single place.

It seems that GNOME is going from something like this second alternative to the first one alternative.

@worldofpeace
Copy link
Contributor

worldofpeace commented Apr 15, 2019

The alternative would be having a unique module for the entire DDE, which would enable those services and kernel modules, and create groups and users for all deepin packages in a single place.

It seems that GNOME is going from something like this second alternative to the first one alternative.

So with GNOME, lots of the pieces need to be shared. For example, gnome-settings-daemon has many forks so it has a package option. Plus lots of optional services. That's why we're planing on having #54415

Now with deepin I think there should be individual modules for applications if needed (deepin-screenshot, etc.).
But for the really lower level services, (dde-api, dde-daemon), they only make sense to be enabled if you're using the DE. It's just not flexible like that. And if someone would disable them it would just break, so having an individual options isn't useful.

So having

The alternative would be having a unique module for the entire DDE, which would enable those services and kernel modules, and create groups and users for all deepin packages in a single place.

for the tightly coupled stuff makes sense to me.

@worldofpeace
Copy link
Contributor

Note: discussion on IRC is convenient to me for further discussion

@worldofpeace
Copy link
Contributor

I've drafted a dde-control-center expression

but haven't had time to make it build.

perhaps it has to do with this https://src.fedoraproject.org/rpms/deepin-control-center/blob/master/f/deepin-control-center.spec#_49 ?

@romildo
Copy link
Contributor Author

romildo commented Jun 26, 2019

I've drafted a dde-control-center expression [...] but haven't had time to make it build.

I have tried your expression, and it fails to build for me too.

perhaps it has to do with this https://src.fedoraproject.org/rpms/deepin-control-center/blob/master/f/deepin-control-center.spec#_49 ?

I think this is not related. This is just Fedora fixing the lib dir to fit its file system layout.

I have found that somehow dtkcore is installing a older version of the library:

$ grep VERSION /nix/store/8kpivw2m04mx1p7ja1b8fgr3bxbw0lmv-dtkcore-2.0.14/include/libdtk-2.0.6/DCore/dtkcore_config.h
#define DTK_VERSION_MAJOR 2
#define DTK_VERSION_MINOR 0
#define DTK_VERSION_PATCH 6
#define DTK_VERSION_BUILD 0
#define DTK_VERSION_STR "2.0.6"

and as a consequence the test at https://github.com/linuxdeepin/dde-control-center/blob/master/src/frame/modules/sound/soundworker.h#L121 is evaluating to true, and an aditional header file is included, exactly where an error is being reported:

In file included from /nix/store/bzh7jppvdzbqscw7zl40w467ljik5ivk-qtbase-5.12.0-dev/include/QtCore/qobject.h:54:0,
                 from /nix/store/bzh7jppvdzbqscw7zl40w467ljik5ivk-qtbase-5.12.0-dev/include/QtWidgets/qwidget.h:45,
                 from /nix/store/bzh7jppvdzbqscw7zl40w467ljik5ivk-qtbase-5.12.0-dev/include/QtWidgets/QWidget:1,
                 from /build/source/src/frame/widgets/contentwidget.h:29,
                 from /build/source/src/frame/settingswidget.h:29,
                 from /build/source/src/frame/settingswidget.cpp:26:
/build/source/src/frame/modules/sound/soundworker.h:122:5: error: redefinition of 'struct QMetaTypeId<Dtk::Widget::DDesktopServices::SystemSoundEffect>'

@romildo
Copy link
Contributor Author

romildo commented Jun 26, 2019

With #63795 dde-control-center building succeeds locally.

@worldofpeace
Copy link
Contributor

With #63795 dde-control-center building succeeds locally.

Cool, I should be able to pr that properly now 👍

@romildo
Copy link
Contributor Author

romildo commented Jun 26, 2019

With #63795 dde-control-center building succeeds locally.

Cool, I should be able to pr that properly now +1

Remeber to add the dbus service to the nixos module:

 nixos/modules/services/desktops/deepin/deepin.nix | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/nixos/modules/services/desktops/deepin/deepin.nix b/nixos/modules/services/desktops/deepin/deepin.nix
index d9d5d539e42..d45fa638ef4 100644
--- a/nixos/modules/services/desktops/deepin/deepin.nix
+++ b/nixos/modules/services/desktops/deepin/deepin.nix
@@ -33,6 +33,7 @@
       environment.systemPackages = [
         pkgs.deepin.dde-api
         pkgs.deepin.dde-calendar
+        pkgs.deepin.dde-control-center
         pkgs.deepin.dde-daemon
         pkgs.deepin.dde-dock
         pkgs.deepin.dde-file-manager
@@ -45,6 +46,7 @@
       services.dbus.packages = [
         pkgs.deepin.dde-api
         pkgs.deepin.dde-calendar
+        pkgs.deepin.dde-control-center
         pkgs.deepin.dde-daemon
         pkgs.deepin.dde-dock
         pkgs.deepin.dde-file-manager
-- 
2.22.0

@worldofpeace
Copy link
Contributor

worldofpeace commented Jun 26, 2019

@romildo I think this could be a very informative read for us linuxdeepin/developer-center#1093 (particularly on there frequent releases)

They seem to move at a very fast rate and I'm wondering how we can align this in our release process to get the best experience for the end user.

@romildo
Copy link
Contributor Author

romildo commented Jun 28, 2019

@romildo I think this could be a very informative read for us linuxdeepin/developer-center#1093 (particularly on there frequent releases)

They seem to move at a very fast rate and I'm wondering how we can align this in our release process to get the best experience for the end user.

Summarizing: they release new versions of packages very fast, without any indication of stability. Sometimes the released code is unstable. That is making packagers (mainly of archlinux derivative distributions) unhappy.

If there was a way of telling which releases are stable, it would be simpler. For now we can complete the packaging of DDE so that we can use it ourselves for testing, and fixing packaging issues. We can try to update frequently and test the desktop environment to check that it mostly works.

@romildo
Copy link
Contributor Author

romildo commented Jun 28, 2019

@worldofpeace Any idea on how to handle a package that originally install files at /var?

All files installed by dde-account-faces are placed at /var/lib/AccountsService/icons/.

Other packages look for them at that location:

$ grep --color -r '/var/lib/AccountsService'
dde-daemon/accounts/manager.go:	actConfigDir       = "/var/lib/AccountsService"
dde-daemon/accounts/user.go:	defaultUserIcon          = "file:///var/lib/AccountsService/icons/default.png"
dde-control-center/src/frame/modules/accounts/modifyavatarpage.cpp:        if (avatar.startsWith("file:///var/lib/AccountsService/icons/local"))
dde-session-ui/global_util/constants.h:static const QString CONFIG_FILE("/var/lib/AccountsService/users/");

@worldofpeace
Copy link
Contributor

So I'm half guessing that they want you to be able to modify the user icon in dde-control-center using the icons there. And dde-daemon wants to set their default icon.

I don't think any of these things would require them to install files to /var/lib/AccountsService/icons because the dbus api has SetIconFile.

@worldofpeace
Copy link
Contributor

It looks like wrappers for qt have been merged #54525.
When that hits master we should probably wrap the qt applications in deepin.

@Ninlives
Copy link
Contributor

Ninlives commented Dec 1, 2019

Is this still under development?

@worldofpeace
Copy link
Contributor

The final piece should be here #63813, through since the switch to kwin it's no longer working.

@worldofpeace worldofpeace mentioned this issue Dec 4, 2019
10 tasks
@stale
Copy link

stale bot commented Jun 1, 2020

Thank you for your contributions.
This has been automatically marked as stale because it has had no activity for 180 days.
If this is still important to you, we ask that you leave a comment below. Your comment can be as simple as "still important to me". This lets people see that at least one person still cares about this. Someone will have to do this at most twice a year if there is no other activity.
Here are suggestions that might help resolve this more quickly:

  1. Search for maintainers and people that previously touched the
    related code and @ mention them in a comment.
  2. Ask on the NixOS Discourse. 3. Ask on the #nixos channel on
    irc.freenode.net.

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Jun 1, 2020
@romildo
Copy link
Contributor Author

romildo commented Jun 1, 2020

Still in progress.

@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Jun 1, 2020
@romildo
Copy link
Contributor Author

romildo commented Sep 3, 2020

Packaging of the Deepin Desktop Environment has been cancelled (#94870).
Closing.

@romildo romildo closed this as completed Sep 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants