From 51265618cd6c187ee93cb3674d4e5a04045a1429 Mon Sep 17 00:00:00 2001
From: Robin Lee <cheeselee@fedoraproject.org>
Date: Tue, 10 Nov 2020 14:23:10 +0800
Subject: [PATCH 4/6] feat: Initial packit setup
This commit contains the specfile for building the official package for Fedora
with a Packit setup.
Ultimately, a unified specfile is targeted for Fedora and any other rpm-based
distributions, e.g. openEuler.
And Packit(https://packit.dev/) is a tool for maintaining specfile within
upstream source. It requires a simple config file(.packit.yaml).
Log: Initial packit setup
Signed-off-by: Robin Lee <cheeselee@fedoraproject.org>
---
rpm/dde-daemon.spec | 154 ++++++++++++++++++++++++++++----------------
rpm/fontconfig.json | 26 ++++++++
rpm/locale.go.patch | 81 +++++++++++++++++++++++
3 files changed, 204 insertions(+), 57 deletions(-)
create mode 100644 rpm/fontconfig.json
create mode 100644 rpm/locale.go.patch
diff --git a/rpm/dde-daemon.spec b/rpm/dde-daemon.spec
index 437bd9b2..e81ea7ed 100644
--- a/rpm/dde-daemon.spec
+++ b/rpm/dde-daemon.spec
@@ -1,80 +1,94 @@
%global _smp_mflags -j1
+%if 0%{?fedora} == 0
%global debug_package %{nil}
%global _unpackaged_files_terminate_build 0
%global _missing_build_ids_terminate_build 0
%define __debug_install_post \
%{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}
+%endif
%global sname deepin-daemon
+%global repo dde-daemon
%global release_name server-industry
-Name: dde-daemon
-Version: 5.10.0.23
-Release: 5
+%if 0%{?fedora}
+Name: %{sname}
+%else
+Name: %{repo}
+%endif
+Version: 5.11.0.36
+Release: 1%{?fedora:%dist}
Summary: Daemon handling the DDE session settings
License: GPLv3
+%if 0%{?fedora}
+URL: https://github.com/linuxdeepin/dde-daemon
+Source0: %{url}/archive/%{version}/%{repo}-%{version}.tar.gz
+# upstream default mono font set to 'Noto Mono', which is not yet available in
+# Fedora. We change to 'Noto Sans Mono'
+Source1: fontconfig.json
+%else
URL: http://shuttle.corp.deepin.com/cache/tasks/18802/unstable-amd64/
-Source0: %{name}-%{version}-%{release_name}.orig.tar.xz
-Patch0: 0001-fix-building-error.patch
-
-BuildRequires: python37
+Source0: %{repo}-%{version}.orig.tar.xz
+%endif
+
+BuildRequires: python3
+%if 0%{?fedora}
+ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
+BuildRequires: golang(pkg.deepin.io/dde/api/dxinput) >= 3.1.26
+BuildRequires: golang(github.com/linuxdeepin/go-dbus-factory/org.bluez)
+BuildRequires: golang(github.com/linuxdeepin/go-x11-client)
+BuildRequires: golang(github.com/BurntSushi/xgb)
+BuildRequires: golang(github.com/BurntSushi/xgbutil)
+BuildRequires: golang(github.com/axgle/mahonia)
+BuildRequires: golang(github.com/msteinert/pam)
+BuildRequires: golang(github.com/nfnt/resize)
+BuildRequires: golang(github.com/cryptix/wav)
+BuildRequires: golang(gopkg.in/alecthomas/kingpin.v2)
+BuildRequires: golang(gopkg.in/yaml.v2)
+BuildRequires: golang(github.com/gosexy/gettext)
+BuildRequires: golang(github.com/jinzhu/gorm)
+BuildRequires: golang(github.com/jinzhu/gorm/dialects/sqlite)
+BuildRequires: golang(github.com/kelvins/sunrisesunset)
+BuildRequires: golang(github.com/rickb777/date)
+BuildRequires: golang(github.com/teambition/rrule-go)
+BuildRequires: golang(github.com/davecgh/go-spew/spew)
+%else
+BuildRequires: gocode
+BuildRequires: ddcutil-devel
+BuildRequires: resize-devel
+BuildRequires: gorm-devel
+BuildRequires: inflection-devel
+%endif
BuildRequires: compiler(go-compiler)
BuildRequires: deepin-gettext-tools
BuildRequires: fontpackages-devel
BuildRequires: librsvg2-tools
BuildRequires: pam-devel >= 1.3.1
-BuildRequires: pam >= 1.3.1
-BuildRequires: golang-github-linuxdeepin-go-x11-client-devel
-BuildRequires: golang-golang-org-net-devel
BuildRequires: glib2-devel
BuildRequires: gtk3-devel
BuildRequires: systemd-devel
-BuildRequires: golang-github-axgle-mahonia-devel
-BuildRequires: golang-golang-x-xerrors-devel
-BuildRequires: golang-gopkg-alecthomas-kingpin-devel
-BuildRequires: dde-api-devel
-BuildRequires: golang.org-x-image-devel
-BuildRequires: text-devel
-BuildRequires: resize-devel
-BuildRequires: golang-github-teambition-rrule-go-devel
-BuildRequires: golang-github-rickb777-date-devel
-BuildRequires: golang-github-mozillazg-go-pinyin-devel
-BuildRequires: golang-github-kelvins-sunrisesunset-devel
-BuildRequires: gorm-devel
-BuildRequires: golang-github-cryptix-wav-devel
-BuildRequires: golang-github-mattn-go-sqlite3-devel
-BuildRequires: golang-github-alecthomas-template-devel
-BuildRequires: inflection-devel
-BuildRequires: golang-github-rickb777-plural-devel
-BuildRequires: golang-github-alecthomas-units-devel
BuildRequires: alsa-lib-devel
-BuildRequires: alsa-lib
BuildRequires: pulseaudio-libs-devel
BuildRequires: gdk-pixbuf2-xlib-devel
-BuildRequires: gdk-pixbuf2-xlib
BuildRequires: libnl3-devel
-BuildRequires: libnl3
BuildRequires: libgudev-devel
-BuildRequires: libgudev
-BuildRequires: golang-github-davecgh-go-spew-devel
BuildRequires: libinput-devel
-BuildRequires: libinput
-BuildRequires: golang-github-gosexy-gettext-devel
BuildRequires: librsvg2-devel
-BuildRequires: librsvg2
-BuildRequires: golang-github-msteinert-pam-devel
-BuildRequires: go-lib-devel
-BuildRequires: golang-github-linuxdeepin-go-dbus-factory-devel
-BuildRequires: deepin-gir-generator
BuildRequires: libXcursor-devel
+BuildRequires: pkgconfig(sqlite3)
-Requires: bluez-libs
+Requires: bluez-libs%{?_isa}
Requires: deepin-desktop-base
Requires: deepin-desktop-schemas
+%if 0%{?fedora}
+Requires: deepin-session-ui
+Requires: deepin-polkit-agent
+%else
Requires: dde-session-ui
Requires: dde-polkit-agent
+%endif
Requires: rfkill
Requires: gvfs
Requires: iw
@@ -84,16 +98,22 @@ Recommends: imwheel
Recommends: mobile-broadband-provider-info
Recommends: google-noto-mono-fonts
Recommends: google-noto-sans-fonts
+%if 0%{?fedora}
+Recommends: google-noto-sans-mono-fonts
+%endif
%description
Daemon handling the DDE session settings
%prep
-%setup -q -n %{name}-%{version}-%{release_name}
-%patch0 -p1
+%autosetup -p1 -n %{repo}-%{version}
+#patch langselector/locale.go < rpm/locale.go.patch
+#install -m 644 %{SOURCE2} misc/etc/pam.d/deepin-auth
# Fix library exec path
sed -i '/deepin/s|lib|libexec|' Makefile
+sed -i '/systemd/s|lib|usr/lib|' Makefile
+sed -i 's:/lib/udev/rules.d:%{_udevrulesdir}:' Makefile
sed -i '/${DESTDIR}\/usr\/lib\/deepin-daemon\/service-trigger/s|${DESTDIR}/usr/lib/deepin-daemon/service-trigger|${DESTDIR}/usr/libexec/deepin-daemon/service-trigger|g' Makefile
sed -i '/${DESTDIR}${PREFIX}\/lib\/deepin-daemon/s|${DESTDIR}${PREFIX}/lib/deepin-daemon|${DESTDIR}${PREFIX}/usr/libexec/deepin-daemon|g' Makefile
sed -i 's|lib/NetworkManager|libexec|' network/utils_test.go
@@ -135,13 +155,24 @@ sed -i 's/google-chrome/chromium-browser/g' misc/dde-daemon/mime/data.json
%build
BUILDID="0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n')"
+%if 0%{?fedora}
+export GOPATH="$(pwd)/build:%{gopath}"
+%else
export GOPATH=/usr/share/gocode
-%make_build GOBUILD="go build -compiler gc -ldflags \"-B $BUILDID\""
-#make GOPATH=/usr/share/gocode
+%endif
+%make_build GO_BUILD_FLAGS=-trimpath GOBUILD="go build -compiler gc -ldflags \"-B $BUILDID\""
%install
+BUILDID="0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n')"
+%if 0%{?fedora}
+export GOPATH="$(pwd)/build:%{gopath}"
+%else
export GOPATH=/usr/share/gocode
-%make_install
+%endif
+%make_install PAM_MODULE_DIR=%{_libdir}/security GOBUILD="go build -compiler gc -ldflags \"-B $BUILDID\""
+
+# don't install pam module
+rm %{buildroot}%{_libdir}/security/pam_deepin_auth.so %{buildroot}%{_datadir}/pam-configs/deepin-auth
# fix systemd/logind config
install -d %{buildroot}/usr/lib/systemd/logind.conf.d/
@@ -151,10 +182,13 @@ HandlePowerKey=ignore
HandleSuspendKey=ignore
EOF
-install -d %{buildroot}/%{_libdir}/security/
-install -Dm755 %{buildroot}/pam_deepin_auth.so %{buildroot}/%{_libdir}/security/pam_deepin_auth.so
+%if 0%{?fedora}
+# install default settings
+install -Dm644 %{SOURCE1} \
+ %{buildroot}%{_datadir}/deepin-default-settings/fontconfig.json
+%endif
-%find_lang %{name}
+%find_lang %{repo}
%post
if [ $1 -ge 1 ]; then
@@ -175,19 +209,21 @@ if [ $1 -eq 0 ]; then
rm -f /var/log/deepin.log
fi
-%files -f %{name}.lang
+%files -f %{repo}.lang
%doc README.md
%license LICENSE
%{_sysconfdir}/default/grub.d/10_deepin.cfg
%{_sysconfdir}/grub.d/35_deepin_gfxmode
%{_sysconfdir}/pam.d/deepin-auth-keyboard
+%{_sysconfdir}/NetworkManager/conf.d/deepin.dde.daemon.conf
+%{_sysconfdir}/modules-load.d/i2c_dev.conf
%{_libexecdir}/%{sname}/
%{_prefix}/lib/systemd/logind.conf.d/10-%{sname}.conf
%{_datadir}/dbus-1/services/*.service
%{_datadir}/dbus-1/system-services/*.service
%{_datadir}/dbus-1/system.d/*.conf
%{_datadir}/icons/hicolor/*/status/*
-%{_datadir}/%{name}/
+%{_datadir}/%{repo}/
%{_datadir}/dde/
%{_datadir}/polkit-1/actions/*.policy
%{_var}/cache/appearance/
@@ -195,13 +231,17 @@ fi
%{_var}/lib/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Grub2.pkla
%{_sysconfdir}/acpi/actions/deepin_lid.sh
%{_sysconfdir}/acpi/events/deepin_lid
+# This directory is not provided by any other package.
+%dir %{_sysconfdir}/pulse/daemon.conf.d
%{_sysconfdir}/pulse/daemon.conf.d/10-deepin.conf
-/lib/udev/rules.d/80-deepin-fprintd.rules
-%{_datadir}/pam-configs/deepin-auth
-/var/lib/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Fprintd.pkla
-%{_libdir}/security/pam_deepin_auth.so
-/lib/systemd/system/dbus-com.deepin.dde.lockservice.service
-/lib/systemd/system/deepin-accounts-daemon.service
+%{_udevrulesdir}/80-deepin-fprintd.rules
+%{_var}/lib/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Fprintd.pkla
+%{_unitdir}/dbus-com.deepin.dde.lockservice.service
+%{_unitdir}/deepin-accounts-daemon.service
+%{_unitdir}/hwclock_stop.service
+%if 0%{?fedora}
+%{_datadir}/deepin-default-settings/
+%endif
%changelog
* Thu May 28 2020 uoser <uoser@uniontech.com> - 5.9.4-2
diff --git a/rpm/fontconfig.json b/rpm/fontconfig.json
new file mode 100644
index 00000000..0ca993a7
--- /dev/null
+++ b/rpm/fontconfig.json
@@ -0,0 +1,26 @@
+{
+ "zh_CN":{
+ "Standard":"Noto Sans CJK SC",
+ "Mono":"Noto Sans Mono"
+ },
+ "zh_TW":{
+ "Standard":"Noto Sans CJK TC",
+ "Mono":"Noto Sans Mono"
+ },
+ "zh_HK":{
+ "Standard":"Noto Sans CJK TC",
+ "Mono":"Noto Sans Mono"
+ },
+ "ja":{
+ "Standard":"Noto Sans CJK JP",
+ "Mono":"Noto Sans Mono"
+ },
+ "ko":{
+ "Standard":"Noto Sans CJK KR",
+ "Mono":"Noto Sans Mono"
+ },
+ "en_US":{
+ "Standard":"Noto Sans",
+ "Mono":"Noto Sans Mono"
+ }
+}
diff --git a/rpm/locale.go.patch b/rpm/locale.go.patch
new file mode 100644
index 00000000..34ad22fc
--- /dev/null
+++ b/rpm/locale.go.patch
@@ -0,0 +1,81 @@
+--- langselector/locale.go.orig 2020-09-18 10:39:04.213018350 +0800
++++ langselector/locale.go 2020-09-18 10:43:56.901011981 +0800
+@@ -33,15 +33,15 @@
+
+ "github.com/godbus/dbus"
+ // dbus services:
+- "github.com/linuxdeepin/go-dbus-factory/com.deepin.api.localehelper"
++ localehelper "github.com/linuxdeepin/go-dbus-factory/com.deepin.api.localehelper"
+ libnetwork "github.com/linuxdeepin/go-dbus-factory/com.deepin.daemon.network"
+- "github.com/linuxdeepin/go-dbus-factory/com.deepin.lastore"
+- "github.com/linuxdeepin/go-dbus-factory/org.freedesktop.notifications"
++ lastore "github.com/linuxdeepin/go-dbus-factory/com.deepin.lastore"
++ notifications "github.com/linuxdeepin/go-dbus-factory/org.freedesktop.notifications"
+ "pkg.deepin.io/dde/api/lang_info"
+ "pkg.deepin.io/dde/api/language_support"
+ "pkg.deepin.io/dde/api/userenv"
+ ddbus "pkg.deepin.io/dde/daemon/dbus"
+- "pkg.deepin.io/gir/gio-2.0"
++ gio "pkg.deepin.io/gir/gio-2.0"
+ "pkg.deepin.io/lib/dbusutil"
+ . "pkg.deepin.io/lib/gettext"
+ "pkg.deepin.io/lib/gsettings"
+@@ -94,8 +94,8 @@
+ var (
+ //save old language notifycation data
+ notifyTxtStartWithInstall string
+- notifyTxtStart string
+- notifyTxtDone string
++ notifyTxtStart string
++ notifyTxtDone string
+ )
+
+ //go:generate dbusutil-gen -type LangSelector locale.go
+@@ -415,29 +415,7 @@
+ lang.setPropCurrentLocale(locale)
+ lang.PropsMu.Unlock()
+
+- // send notification
+- networkEnabled, err := isNetworkEnable()
+- if err != nil {
+- logger.Warning(err)
+- }
+-
+- if networkEnabled {
+- sendNotify(localeIconStart, "", notifyTxtStartWithInstall)
+- } else {
+- sendNotify(localeIconStart, "", notifyTxtStart)
+- }
+-
+- // generate locale
+- err = lang.generateLocale(locale)
+- if err != nil {
+- logger.Warning("failed to generate locale:", err)
+- lang.setLocaleFailed(oldLocale)
+- return
+- } else {
+- logger.Debug("generate locale success")
+- }
+-
+- err = writeUserLocale(locale)
++ err := writeUserLocale(locale)
+ if err != nil {
+ logger.Warning("failed to write user locale:", err)
+ lang.setLocaleFailed(oldLocale)
+@@ -461,16 +439,6 @@
+ }
+ }
+
+- // install language support packages
+- if networkEnabled {
+- err = lang.installLangSupportPackages(locale)
+- if err != nil {
+- logger.Warning("failed to install packages:", err)
+- } else {
+- logger.Debug("install packages success")
+- }
+- }
+-
+ sendNotify(localeIconFinished, "", notifyTxtDone)
+
+ // end
--
2.26.2