Blob Blame History Raw
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