[gnome-maps/wip/mlundblad/dual-installation] Set up dual installation support
- From: Marcus Lundblad <mlundblad src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-maps/wip/mlundblad/dual-installation] Set up dual installation support
- Date: Wed, 20 Oct 2021 21:30:42 +0000 (UTC)
commit d72759c7665327502d8e415b1027f685d224a223
Author: Marcus Lundblad <ml update uu se>
Date: Mon Oct 18 23:04:25 2021 +0200
Set up dual installation support
Add support for building dual-installable .Devel packages.
Based on an original WIP merge request by Bilal Elmoussaoui.
.gitignore | 2 ++
.gitlab-ci.yml | 2 +-
data/icons/meson.build | 14 ++++++++---
data/meson.build | 28 +++++++++++++++-------
...ata.xml.in => org.gnome.Maps.appdata.xml.in.in} | 4 ++--
...aps.desktop.in => org.gnome.Maps.desktop.in.in} | 4 ++--
data/org.gnome.Maps.service.in | 4 ++--
meson.build | 8 ++++++-
meson_options.txt | 1 +
meson_post_install.py | 4 +++-
org.gnome.Maps.json | 5 +++-
po/POTFILES.in | 6 ++---
src/application.js | 2 +-
src/geoclue.js | 2 +-
src/mainWindow.js | 5 +++-
src/meson.build | 14 +++++++++--
...rce.xml => org.gnome.Maps.src.gresource.xml.in} | 2 +-
17 files changed, 77 insertions(+), 30 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index b7aecf88..80640f6c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,7 @@ missing
data/org.gnome.Maps.appdata.xml
data/org.gnome.Maps.desktop
+data/org.gnome.Maps.gschema.xml.in
data/org.gnome.Maps.gschema.valid
m4/*.m4
@@ -40,6 +41,7 @@ po/*.header
src/gnome-maps
src/*.gresource
+src/*.gresource.xml
src/org.gnome.Maps.service
/lib/GnomeMaps-1.0.gir
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 387a98ec..96a624a8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,7 +10,7 @@ flatpak:
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
# Replace with your application name, as written in the manifest
FLATPAK_MODULE: "gnome-maps"
- APP_ID: "org.gnome.Maps"
+ APP_ID: "org.gnome.Maps.Devel"
BUNDLE: "gnome-maps-git.flatpak"
nightly:
diff --git a/data/icons/meson.build b/data/icons/meson.build
index f741a0b7..924d12de 100644
--- a/data/icons/meson.build
+++ b/data/icons/meson.build
@@ -1,6 +1,14 @@
-install_subdir(
- join_paths('public', 'hicolor'),
- install_dir: join_paths(datadir, 'icons')
+# install the app icon (the regular or .Devel one)
+install_data(
+ join_paths('public', 'hicolor', 'scalable', 'apps', app_id + '.svg'),
+ install_dir: join_paths(datadir, 'icons', 'hicolor', 'scalable', 'apps')
+)
+
+# install the symbolic app icon with the current name (optionally with .Devel suffix)
+install_data(
+ join_paths('public', 'hicolor', 'symbolic', 'apps', 'org.gnome.Maps-symbolic.svg'),
+ install_dir: join_paths(datadir, 'icons', 'hicolor', 'symbolic', 'apps'),
+ rename: '@0 -symbolic svg'.format(app_id)
)
install_subdir(
diff --git a/data/meson.build b/data/meson.build
index 2be4ee73..30d45db1 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -1,6 +1,6 @@
gnome.compile_resources(
app_id + '.data',
- app_id + '.data.gresource.xml',
+ 'org.gnome.Maps.data.gresource.xml',
gresource_bundle: true,
install: true,
install_dir: pkgdatadir
@@ -12,9 +12,14 @@ install_data(
)
desktop = app_id + '.desktop'
-
+desktop_config = configuration_data()
+desktop_config.set('app-id', app_id)
desktop_file = custom_target('desktop-file',
- input: desktop + '.in',
+ input: configure_file(
+ input: 'org.gnome.Maps.desktop.in.in',
+ output: 'org.gnome.Maps.desktop.in',
+ configuration: desktop_config
+ ),
output: desktop,
install: true,
install_dir: join_paths(datadir, 'applications'),
@@ -26,15 +31,21 @@ desktop_file = custom_target('desktop-file',
)
install_data(
- app_id + '.gschema.xml',
+ 'org.gnome.Maps.gschema.xml',
install_dir: join_paths(datadir, 'glib-2.0', 'schemas')
)
appdata = app_id + '.appdata.xml'
-
+appdata_config = configuration_data()
+appdata_config.set('app-id', app_id)
+appdata_config.set('gettext-package', 'gnome-maps')
appdata_file = i18n.merge_file(
appdata,
- input: appdata + '.in',
+ input: configure_file(
+ input: 'org.gnome.Maps.appdata.xml.in.in',
+ output: 'org.gnome.Maps.appdata.xml.in',
+ configuration: appdata_config
+ ),
output: appdata,
po_dir: po_dir,
install: true,
@@ -44,9 +55,10 @@ appdata_file = i18n.merge_file(
service_conf = configuration_data()
service_conf.set('PACKAGE_NAME', meson.project_name())
service_conf.set('pkgdatadir', pkgdatadir)
+service_conf.set('app-id', app_id)
configure_file(
- input: app_id + '.service.in',
+ input: 'org.gnome.Maps.service.in',
output: app_id + '.service',
configuration: service_conf,
install: true,
@@ -77,4 +89,4 @@ if appstream_util.found()
)
endif
-subdir('icons')
\ No newline at end of file
+subdir('icons')
diff --git a/data/org.gnome.Maps.appdata.xml.in b/data/org.gnome.Maps.appdata.xml.in.in
similarity index 99%
rename from data/org.gnome.Maps.appdata.xml.in
rename to data/org.gnome.Maps.appdata.xml.in.in
index ffa40792..630b2d55 100644
--- a/data/org.gnome.Maps.appdata.xml.in
+++ b/data/org.gnome.Maps.appdata.xml.in.in
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
- <id>org.gnome.Maps.desktop</id>
+ <id>@app-id@</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0-or-later</project_license>
<name>Maps</name>
@@ -17,7 +17,7 @@
</p>
</description>
- <launchable type="desktop-id">org.gnome.Maps.desktop</launchable>
+ <launchable type="desktop-id">@app-id@.desktop</launchable>
<screenshots>
<screenshot type="default">
diff --git a/data/org.gnome.Maps.desktop.in b/data/org.gnome.Maps.desktop.in.in
similarity index 91%
rename from data/org.gnome.Maps.desktop.in
rename to data/org.gnome.Maps.desktop.in.in
index 85a58a9b..da57c3fe 100644
--- a/data/org.gnome.Maps.desktop.in
+++ b/data/org.gnome.Maps.desktop.in.in
@@ -2,9 +2,9 @@
Version=1.0
Name=Maps
Comment=A simple maps application
-Exec=gapplication launch org.gnome.Maps %U
+Exec=gapplication launch @app-id@ %U
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
-Icon=org.gnome.Maps
+Icon=@app-id@
Terminal=false
Type=Application
StartupNotify=true
diff --git a/data/org.gnome.Maps.service.in b/data/org.gnome.Maps.service.in
index f8a854f6..df2f1888 100644
--- a/data/org.gnome.Maps.service.in
+++ b/data/org.gnome.Maps.service.in
@@ -1,3 +1,3 @@
[D-BUS Service]
-Name=org.gnome.Maps
-Exec=@pkgdatadir@/org.gnome.Maps --gapplication-service
+Name=@app-id@
+Exec=@pkgdatadir@/@app-id@ --gapplication-service
diff --git a/meson.build b/meson.build
index 611289dd..74852167 100644
--- a/meson.build
+++ b/meson.build
@@ -4,6 +4,11 @@ project('gnome-maps', 'c',
)
app_id = 'org.gnome.Maps'
+
+if get_option('profile') == 'development'
+ app_id = 'org.gnome.Maps.Devel'
+endif
+
gnome = import('gnome')
i18n = import('i18n')
@@ -60,5 +65,6 @@ subdir('tests')
meson.add_install_script(
'meson_post_install.py',
datadir,
- bindir
+ bindir,
+ app_id
)
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 00000000..e5648028
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1 @@
+option('profile', type: 'combo', choices: ['default', 'development'], value: 'default')
diff --git a/meson_post_install.py b/meson_post_install.py
index bb6b67c9..d804b3b8 100644
--- a/meson_post_install.py
+++ b/meson_post_install.py
@@ -11,12 +11,14 @@ datadir = sys.argv[1]
destdir = os.environ.get('DESTDIR', '')
bindir = os.path.normpath(destdir + os.sep + sys.argv[2])
+appid = sys.argv[3];
+
# FIXME: meson will not track the creation of these files
# https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39
if not os.path.exists(bindir):
os.makedirs(bindir)
-src = os.path.join(datadir, 'gnome-maps', 'org.gnome.Maps')
+src = os.path.join(datadir, 'gnome-maps', appid)
dest = os.path.join(bindir, 'gnome-maps')
subprocess.call(['ln', '-s', '-f', src, dest])
diff --git a/org.gnome.Maps.json b/org.gnome.Maps.json
index a6c3358c..5d99ada9 100644
--- a/org.gnome.Maps.json
+++ b/org.gnome.Maps.json
@@ -1,5 +1,5 @@
{
- "app-id" : "org.gnome.Maps",
+ "app-id" : "org.gnome.Maps.Devel",
"runtime" : "org.gnome.Platform",
"runtime-version" : "master",
"sdk" : "org.gnome.Sdk",
@@ -235,6 +235,9 @@
"name" : "gnome-maps",
"buildsystem" : "meson",
"builddir" : true,
+ "config-opts": [
+ "-Dprofile=development"
+ ],
"sources" : [
{
"type" : "git",
diff --git a/po/POTFILES.in b/po/POTFILES.in
index dd6119c4..cd5628f7 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,8 +1,8 @@
# List of source files containing translatable strings.
# Please keep this file sorted alphabetically.
-data/org.gnome.Maps.appdata.xml.in
-data/org.gnome.Maps.desktop.in
-data/org.gnome.Maps.gschema.xml
+data/org.gnome.Maps.appdata.xml.in.in
+data/org.gnome.Maps.desktop.in.in
+data/org.gnome.Maps.gschema.xml.in
data/ui/check-in-dialog.ui
data/ui/context-menu.ui
data/ui/export-view-dialog.ui
diff --git a/src/application.js b/src/application.js
index 32d309b0..5985c87c 100644
--- a/src/application.js
+++ b/src/application.js
@@ -96,7 +96,7 @@ var Application = GObject.registerClass({
/* Needed to be able to use in UI files */
_ensuredTypes.forEach((type) => GObject.type_ensure(type));
- super._init({ application_id: 'org.gnome.Maps',
+ super._init({ application_id: pkg.name,
flags: Gio.ApplicationFlags.HANDLES_OPEN |
Gio.ApplicationFlags.HANDLES_COMMAND_LINE });
this._connected = false;
diff --git a/src/geoclue.js b/src/geoclue.js
index 14f60ecb..864d9897 100644
--- a/src/geoclue.js
+++ b/src/geoclue.js
@@ -70,7 +70,7 @@ var Geoclue = GObject.registerClass({
}
start(callback) {
- let id = 'org.gnome.Maps';
+ let id = pkg.name;
let level = GClue.AccuracyLevel.EXACT;
GClue.Simple.new(id, level, null, (object, result) => {
diff --git a/src/mainWindow.js b/src/mainWindow.js
index 08446e36..8c63faf3 100644
--- a/src/mainWindow.js
+++ b/src/mainWindow.js
@@ -112,6 +112,9 @@ var MainWindow = GObject.registerClass({
this._contextMenu = new ContextMenu.ContextMenu({ mapView: this._mapView,
mainWindow: this });
+ if (pkg.name.endsWith('.Devel'))
+ this.get_style_context().add_class('devel');
+
this._initActions();
this._initHeaderbar();
this._initSignals();
@@ -592,7 +595,7 @@ var MainWindow = GObject.registerClass({
program_name: _("Maps"),
comments: _("A map application for GNOME"),
license_type: Gtk.License.GPL_2_0,
- logo_icon_name: 'org.gnome.Maps',
+ logo_icon_name: pkg.name,
version: pkg.version,
website: 'https://live.gnome.org/Apps/Maps',
wrap_license: true,
diff --git a/src/meson.build b/src/meson.build
index 49706a85..be7e6636 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -5,16 +5,26 @@ script_conf.set('libdir', libdir)
script_conf.set('prefix', prefix)
configure_file(
- input: app_id + '.in',
+ input: 'org.gnome.Maps.in',
output: app_id,
configuration: script_conf,
install: true,
install_dir: pkgdatadir
)
+sources_conf = configuration_data()
+if (get_option('profile') == 'development')
+ sources_conf.set('suffix', '/Devel')
+else
+ sources_conf.set('suffix', '')
+endif
gnome.compile_resources(
app_id + '.src',
- app_id + '.src.gresource.xml',
+ configure_file(
+ input: 'org.gnome.Maps.src.gresource.xml.in',
+ output: 'org.gnome.Maps.src.gresource.xml',
+ configuration: sources_conf
+ ),
gresource_bundle: true,
install: true,
install_dir: pkgdatadir,
diff --git a/src/org.gnome.Maps.src.gresource.xml b/src/org.gnome.Maps.src.gresource.xml.in
similarity index 98%
rename from src/org.gnome.Maps.src.gresource.xml
rename to src/org.gnome.Maps.src.gresource.xml.in
index 70877dee..c4f10655 100644
--- a/src/org.gnome.Maps.src.gresource.xml
+++ b/src/org.gnome.Maps.src.gresource.xml.in
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
- <gresource prefix="/org/gnome/Maps/js">
+ <gresource prefix="/org/gnome/Maps@suffix@/js">
<file>accountListBox.js</file>
<file>address.js</file>
<file>application.js</file>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]