diff --git a/.gitignore b/.gitignore index f38be52..f396585 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -src/config.rs .flatpak/ _build/ .vscode diff --git a/data/icons/meson.build b/data/icons/meson.build index f966b43..63c7267 100644 --- a/data/icons/meson.build +++ b/data/icons/meson.build @@ -1,19 +1,14 @@ scalable_dir = 'hicolor' / 'scalable' / 'apps' install_data( - scalable_dir / 'org.gnome.Loupe.svg', - install_dir: iv_datadir / 'icons' / scalable_dir, -) - -install_data( - scalable_dir / 'org.gnome.Loupe.Devel.svg', - install_dir: iv_datadir / 'icons' / scalable_dir, + scalable_dir / '@0@.svg'.format(app_id), + install_dir: datadir / 'icons' / scalable_dir, ) symbolic_dir = 'hicolor' / 'symbolic' / 'apps' install_data( symbolic_dir / 'org.gnome.Loupe-symbolic.svg', - install_dir: iv_datadir / 'icons' / symbolic_dir, - rename: '@0@-symbolic.svg'.format(app_id) -) + install_dir: datadir / 'icons' / symbolic_dir, + rename: '@0@-symbolic.svg'.format(app_id), +) \ No newline at end of file diff --git a/data/meson.build b/data/meson.build index 95a8f2d..29da3b4 100644 --- a/data/meson.build +++ b/data/meson.build @@ -46,6 +46,10 @@ mime_types += [ 'image/jxl', ] +conf = configuration_data() +conf.set('APP_ID', app_id) +conf.set('BIN_NAME', meson.project_name()) +conf.set('BINDIR', bindir) conf.set('MIME_TYPES', ';'.join(mime_types) + ';') desktop_file = i18n.merge_file( @@ -58,22 +62,20 @@ desktop_file = i18n.merge_file( type: 'desktop', po_dir: '../po', install: true, - install_dir: iv_datadir / 'applications' + install_dir: datadir / 'applications', ) configure_file( - input: 'org.gnome.Loupe.service.in', - output: '@0@.service'.format(app_id), - configuration: conf, - install: true, - install_dir: iv_datadir / 'dbus-1' / 'services' + input: 'org.gnome.Loupe.service.in', + output: '@0@.service'.format(app_id), + configuration: conf, + install: true, + install_dir: datadir / 'dbus-1' / 'services', ) desktop_utils = find_program('desktop-file-validate', required: false) if desktop_utils.found() - test('Validate desktop file', desktop_utils, - args: [desktop_file] - ) + test('Validate desktop file', desktop_utils, args: [desktop_file]) endif appstream_file = i18n.merge_file( @@ -85,16 +87,17 @@ appstream_file = i18n.merge_file( output: '@0@.metainfo.xml'.format(app_id), po_dir: '../po', install: true, - install_dir: iv_datadir / 'metainfo' + install_dir: datadir / 'metainfo', ) # Validate Appdata appstreamcli = find_program('appstreamcli', required: false) if (appstreamcli.found()) - test('Validate metainfo file', + test( + 'Validate metainfo file', appstreamcli, args: ['validate', '--no-net', appstream_file], - workdir: meson.current_build_dir() + workdir: meson.current_build_dir(), ) endif @@ -109,17 +112,12 @@ configure_file( output: '@0@.gschema.xml'.format(app_id), configuration: gschema_conf, install: true, - install_dir: iv_datadir / 'glib-2.0' / 'schemas' + install_dir: datadir / 'glib-2.0' / 'schemas', ) # Validate GSchema test( - 'validate-gschema', glib_compile_schemas, - args: [ - '--strict', '--dry-run', meson.current_source_dir() - ] -) - -# Post install - -gnome.post_install() + 'validate-gschema', + glib_compile_schemas, + args: ['--strict', '--dry-run', meson.current_source_dir()], +) \ No newline at end of file diff --git a/data/org.gnome.Loupe.desktop.in.in b/data/org.gnome.Loupe.desktop.in.in index f36a8b6..fd0f2df 100644 --- a/data/org.gnome.Loupe.desktop.in.in +++ b/data/org.gnome.Loupe.desktop.in.in @@ -1,6 +1,6 @@ [Desktop Entry] Name=Image Viewer -Exec=loupe %U +Exec=@BIN_NAME@ %U Icon=@APP_ID@ DBusActivatable=true Terminal=false diff --git a/data/org.gnome.Loupe.service.in b/data/org.gnome.Loupe.service.in index 5d980b5..52e9d6a 100644 --- a/data/org.gnome.Loupe.service.in +++ b/data/org.gnome.Loupe.service.in @@ -1,3 +1,3 @@ [D-BUS Service] Name=@APP_ID@ -Exec=@bindir@/loupe --gapplication-service +Exec=@BINDIR@/@BIN_NAME@ --gapplication-service diff --git a/meson.build b/meson.build index 3142908..f2f3683 100644 --- a/meson.build +++ b/meson.build @@ -24,12 +24,6 @@ gtk4_x11 = dependency('gtk4-x11', required: get_option('x11')) cargo = find_program('cargo', required: true) glib_compile_schemas = find_program('glib-compile-schemas', required: true) -iv_prefix = get_option('prefix') -iv_bindir = iv_prefix / get_option('bindir') -iv_localedir = iv_prefix / get_option('localedir') -iv_datadir = iv_prefix / get_option('datadir') -iv_pkgdatadir = iv_datadir / meson.project_name() - profile = '' version_suffix = '' @@ -43,18 +37,15 @@ if get_option('profile') != 'release' endif endif +prefix = get_option('prefix') + base_id = 'org.gnome.Loupe' app_id = 'org.gnome.Loupe@0@'.format(profile) -iv_version = meson.project_version() + version_suffix - -conf = configuration_data() -conf.set('APP_ID', app_id) -conf.set('PROFILE', profile) -conf.set('VERSION', iv_version) -conf.set('BIN_NAME', meson.project_name()) -conf.set('bindir', iv_bindir) -conf.set('localedir', iv_localedir) -conf.set('pkgdatadir', iv_pkgdatadir) +version = meson.project_version() + version_suffix +localedir = prefix / get_option('localedir') +bindir = prefix / get_option('bindir') +datadir = prefix / get_option('datadir') +pkgdatadir = datadir / meson.project_name() subdir('data') subdir('help') diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..53056ea --- /dev/null +++ b/src/config.rs @@ -0,0 +1,28 @@ +// Copyright (c) 2024 Sophie Herold +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// SPDX-License-Identifier: GPL-3.0-or-later + +pub const APP_ID: &str = default_env(option_env!("APP_ID"), "org.gnome.Loupe.Devel"); +pub const PROFILE: &str = default_env(option_env!("PROFILE"), ".Devel"); +pub const VERSION: &str = default_env(option_env!("VERSION"), "unknown"); +pub const LOCALEDIR: &str = default_env(option_env!("LOCALEDIR"), "/usr/share/locale/"); + +const fn default_env(v: Option<&'static str>, default: &'static str) -> &'static str { + match v { + Some(v) => v, + None => default, + } +} diff --git a/src/config.rs.in b/src/config.rs.in deleted file mode 100644 index cc3815e..0000000 --- a/src/config.rs.in +++ /dev/null @@ -1,4 +0,0 @@ -pub const APP_ID: &str = "@APP_ID@"; -pub const PROFILE: &str = "@PROFILE@"; -pub const VERSION: &str = "@VERSION@"; -pub const LOCALEDIR: &str = "@localedir@"; diff --git a/src/meson.build b/src/meson.build index e21639c..536190d 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,16 +1,6 @@ -configure_file(input: 'config.rs.in', output: 'config.rs', configuration: conf) - build_root = meson.project_build_root() source_root = meson.project_source_root() -# Copy the config.rs output to the source directory. -run_command( - 'cp', - build_root / 'src' / 'config.rs', - source_root / 'src' / 'config.rs', - check: true, -) - cargo_options = ['--manifest-path', source_root / 'Cargo.toml'] cargo_options += ['--target-dir', build_root / 'src'] @@ -27,7 +17,13 @@ if gtk4_x11.found() cargo_options += ['--features', 'x11'] endif -cargo_env = {'CARGO_HOME': build_root / 'cargo-home'} +cargo_env = { + 'CARGO_HOME': build_root / 'cargo-home', + 'APP_ID': app_id, + 'PROFILE': profile, + 'VERSION': version, + 'LOCALEDIR': localedir, +} cargo_build = custom_target( 'cargo-build',