From b20b7bae6e25948226ff30efb7a320f62d109f03 Mon Sep 17 00:00:00 2001 From: Evan Paterakis Date: Mon, 10 Feb 2025 03:24:23 +0200 Subject: [PATCH] feat(meson): build without admin dashboard --- build-aux/dev.geopjr.Tuba.Devel.json | 252 +++++++++++++-------------- data/dev.geopjr.Tuba.gschema.xml | 16 +- data/ui/dialogs/new_account.ui | 2 +- meson.build | 5 + meson_options.txt | 3 + src/API/Notification.vala | 16 +- src/Application.vala | 13 +- src/Dialogs/NewAccount.vala | 11 +- src/Dialogs/meson.build | 7 +- src/Views/Sidebar.vala | 8 +- src/Views/meson.build | 4 +- 11 files changed, 185 insertions(+), 152 deletions(-) diff --git a/build-aux/dev.geopjr.Tuba.Devel.json b/build-aux/dev.geopjr.Tuba.Devel.json index 4124cacfe..3bb51a7ab 100644 --- a/build-aux/dev.geopjr.Tuba.Devel.json +++ b/build-aux/dev.geopjr.Tuba.Devel.json @@ -1,54 +1,54 @@ { - "app-id": "dev.geopjr.Tuba", - "runtime": "org.gnome.Platform", - "runtime-version": "47", - "sdk": "org.gnome.Sdk", - "add-extensions": { - "org.freedesktop.Platform.ffmpeg-full": { - "version": "24.08", - "directory": "lib/ffmpeg", - "add-ld-path": ".", - "no-autodownload": false, - "autodelete": false - }, + "app-id": "dev.geopjr.Tuba", + "runtime": "org.gnome.Platform", + "runtime-version": "47", + "sdk": "org.gnome.Sdk", + "add-extensions": { + "org.freedesktop.Platform.ffmpeg-full": { + "version": "24.08", + "directory": "lib/ffmpeg", + "add-ld-path": ".", + "no-autodownload": false, + "autodelete": false + }, "com.github.rafostar.Clapper.Enhancers": { - "version": "stable", - "directory": "extensions/clapper/enhancers", - "add-ld-path": "lib", - "no-autodownload": false, - "autodelete": false - } - }, - "sdk-extensions": [ "org.freedesktop.Sdk.Extension.llvm19" ], - "command": "dev.geopjr.Tuba", - "finish-args": [ - "--device=dri", - "--share=ipc", - "--share=network", - "--socket=fallback-x11", - "--socket=wayland", - "--socket=pulseaudio", - "--own-name=org.mpris.MediaPlayer2.Tuba.*", + "version": "stable", + "directory": "extensions/clapper/enhancers", + "add-ld-path": "lib", + "no-autodownload": false, + "autodelete": false + } + }, + "sdk-extensions": [ "org.freedesktop.Sdk.Extension.llvm19" ], + "command": "dev.geopjr.Tuba", + "finish-args": [ + "--device=dri", + "--share=ipc", + "--share=network", + "--socket=fallback-x11", + "--socket=wayland", + "--socket=pulseaudio", + "--own-name=org.mpris.MediaPlayer2.Tuba.*", "--env=CLAPPER_ENHANCERS_PATH=/app/extensions/clapper/enhancers/plugins", - "--env=PYTHONPATH=/app/extensions/clapper/enhancers/python/site-packages" - ], - "cleanup": [ - "/include", - "/lib/pkgconfig", - "/man", - "/share/doc", - "/share/gtk-doc", - "/share/man", - "/share/pkgconfig", - "/share/vala", - "*.la", - "*.a" - ], - "cleanup-commands": [ - "mkdir -p /app/lib/ffmpeg", + "--env=PYTHONPATH=/app/extensions/clapper/enhancers/python/site-packages" + ], + "cleanup": [ + "/include", + "/lib/pkgconfig", + "/man", + "/share/doc", + "/share/gtk-doc", + "/share/man", + "/share/pkgconfig", + "/share/vala", + "*.la", + "*.a" + ], + "cleanup-commands": [ + "mkdir -p /app/lib/ffmpeg", "mkdir -p /app/extensions/clapper/enhancers" - ], - "modules": [ + ], + "modules": [ { "name": "libpeas", "buildsystem": "meson", @@ -70,85 +70,85 @@ } ] }, - { - "name": "clapper", - "buildsystem": "meson", - "config-opts": [ - "-Dclapper=enabled", - "-Dclapper-gtk=enabled", - "-Dclapper-app=disabled", - "-Dintrospection=enabled", - "-Dvapi=enabled" - ], + { + "name": "clapper", + "buildsystem": "meson", + "config-opts": [ + "-Dclapper=enabled", + "-Dclapper-gtk=enabled", + "-Dclapper-app=disabled", + "-Dintrospection=enabled", + "-Dvapi=enabled" + ], + "build-options": { + "arch": { + "aarch64": { + "append-path": "/usr/lib/sdk/llvm19/bin", + "prepend-ld-library-path": "/usr/lib/sdk/llvm19/lib", + "env": { + "CC": "clang" + } + } + } + }, + "sources": [ + { + "type": "git", + "url": "https://github.com/Rafostar/clapper.git", + "tag": "0.8.0" + } + ] + }, + { + "name": "libspelling", + "buildsystem": "meson", + "config-opts": [ + "-Ddocs=false" + ], "build-options": { - "arch": { - "aarch64": { - "append-path": "/usr/lib/sdk/llvm19/bin", - "prepend-ld-library-path": "/usr/lib/sdk/llvm19/lib", - "env": { - "CC": "clang" - } - } - } - }, - "sources": [ - { - "type": "git", - "url": "https://github.com/Rafostar/clapper.git", - "tag": "0.8.0" - } - ] - }, - { - "name": "libspelling", - "buildsystem": "meson", - "config-opts": [ - "-Ddocs=false" - ], + "arch": { + "aarch64": { + "append-path": "/usr/lib/sdk/llvm19/bin", + "prepend-ld-library-path": "/usr/lib/sdk/llvm19/lib", + "env": { + "CC": "clang" + } + } + } + }, + "sources": [ + { + "type": "git", + "url": "https://gitlab.gnome.org/GNOME/libspelling.git", + "tag": "0.4.5" + } + ] + }, + { + "name": "tuba", + "builddir": true, + "buildsystem": "meson", + "config-opts": [ + "-Ddevel=true", + "-Dclapper=true" + ], "build-options": { - "arch": { - "aarch64": { - "append-path": "/usr/lib/sdk/llvm19/bin", - "prepend-ld-library-path": "/usr/lib/sdk/llvm19/lib", - "env": { - "CC": "clang" - } - } - } - }, - "sources": [ - { - "type": "git", - "url": "https://gitlab.gnome.org/GNOME/libspelling.git", - "tag": "0.4.5" - } - ] - }, - { - "name": "tuba", - "builddir": true, - "buildsystem": "meson", - "config-opts": [ - "-Ddevel=true", - "-Dclapper=true" - ], - "build-options": { - "arch": { - "aarch64": { - "append-path": "/usr/lib/sdk/llvm19/bin", - "prepend-ld-library-path": "/usr/lib/sdk/llvm19/lib", - "env": { - "CC": "clang" - } - } - } - }, - "sources": [ - { - "type": "dir", - "path": "../" - } - ] - } - ] + "arch": { + "aarch64": { + "append-path": "/usr/lib/sdk/llvm19/bin", + "prepend-ld-library-path": "/usr/lib/sdk/llvm19/lib", + "env": { + "CC": "clang" + } + } + } + }, + "sources": [ + { + "type": "dir", + "path": "../" + } + ] + } + ] } diff --git a/data/dev.geopjr.Tuba.gschema.xml b/data/dev.geopjr.Tuba.gschema.xml index 4afa72a9b..372ceca89 100644 --- a/data/dev.geopjr.Tuba.gschema.xml +++ b/data/dev.geopjr.Tuba.gschema.xml @@ -91,7 +91,7 @@ true - + true @@ -112,25 +112,25 @@ '' - + false - + false - + '' - + '' - + ['1021928818','2964685538','2486375860','3456423266','1352322503','445941323','3177176442','2813905310','2386917030','987913018','1837154139','4173902237','4223975552','3163563143','3320460562','4233664772','136476033','4041964504','3998595277','580879396'] - + 3 - + true diff --git a/data/ui/dialogs/new_account.ui b/data/ui/dialogs/new_account.ui index 659405202..a3c3d0c68 100644 --- a/data/ui/dialogs/new_account.ui +++ b/data/ui/dialogs/new_account.ui @@ -72,7 +72,7 @@ - + tuba-settings-symbolic center diff --git a/meson.build b/meson.build index 9b77125ae..9625ab395 100644 --- a/meson.build +++ b/meson.build @@ -18,6 +18,7 @@ endif devel = get_option('devel') distro = get_option('distro') +without_admin_dashboard = get_option('without-admin-dashboard') # Setup configuration file config = configuration_data() @@ -53,6 +54,10 @@ if devmode add_project_arguments(['--define=DEV_MODE'], language: 'vala') endif +if not without_admin_dashboard + add_project_arguments(['--define=ADMIN_DASHBOARD'], language: 'vala') +endif + if host_machine.system() == 'windows' add_project_arguments(['--define=WINDOWS'], language: 'vala') elif host_machine.system() == 'darwin' diff --git a/meson_options.txt b/meson_options.txt index 13e1c6da9..5b6355bd6 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -2,3 +2,6 @@ option('devel', type: 'boolean', value: false) option('distro', type: 'boolean', value: false) option('clapper', type: 'boolean', value: true) option('in-app-browser', type: 'boolean', value: true) + +# Distros shouldn't enable this. +option('without-admin-dashboard', type: 'boolean', value: false) diff --git a/src/API/Notification.vala b/src/API/Notification.vala index 73e2a90ae..342850040 100644 --- a/src/API/Notification.vala +++ b/src/API/Notification.vala @@ -69,13 +69,17 @@ public class Tuba.API.Notification : Entity, Widgetizable { break; case InstanceAccount.KIND_ADMIN_REPORT: if (report != null) { - if (accounts.active.admin_mode) { - var admin_window = new Dialogs.Admin.Window (); - admin_window.present (); - admin_window.open_reports (); - } else { + #if ADMIN_DASHBOARD + if (accounts.active.admin_mode) { + var admin_window = new Dialogs.Admin.Window (); + admin_window.present (); + admin_window.open_reports (); + } else { + #endif Host.open_url.begin (@"$(accounts.active.instance)/admin/reports/$(report.id)"); - } + #if ADMIN_DASHBOARD + } + #endif } break; case InstanceAccount.KIND_ANNUAL_REPORT: diff --git a/src/Application.vala b/src/Application.vala index 41908c8da..146e5c6bb 100644 --- a/src/Application.vala +++ b/src/Application.vala @@ -91,7 +91,10 @@ namespace Tuba { { "open-mutes-blocks", open_mutes_blocks }, { "open-scheduled-posts", open_scheduled_posts }, { "open-draft-posts", open_draft_posts }, - { "open-admin-dashboard", open_admin_dashboard }, + #if ADMIN_DASHBOARD + // vala-lint=block-opening-brace-space-before + { "open-admin-dashboard", open_admin_dashboard }, + #endif // vala-lint=block-opening-brace-space-before { "open-last-fediwrapped", open_last_fediwrapped } }; @@ -543,9 +546,11 @@ namespace Tuba { close_sidebar (); } - public void open_admin_dashboard () { - new Dialogs.Admin.Window ().present (); - } + #if ADMIN_DASHBOARD + public void open_admin_dashboard () { + new Dialogs.Admin.Window ().present (); + } + #endif public void open_last_fediwrapped () { accounts.active.open_latest_wrapped (); diff --git a/src/Dialogs/NewAccount.vala b/src/Dialogs/NewAccount.vala index 10dd85efb..530938fe3 100644 --- a/src/Dialogs/NewAccount.vala +++ b/src/Dialogs/NewAccount.vala @@ -36,6 +36,10 @@ public class Tuba.Dialogs.NewAccount: Adw.Window { [GtkChild] unowned Gtk.Label manual_auth_label; + #if !ADMIN_DASHBOARD + [GtkChild] unowned Gtk.Button settings_button; + #endif + public string get_full_scopes () { if (this.admin_mode) return @"$SCOPES $ADMIN_SCOPES"; @@ -57,6 +61,9 @@ public class Tuba.Dialogs.NewAccount: Adw.Window { app.toast.connect (add_toast); } else { add_binding_action (Gdk.Key.Escape, 0, "window.close", null); + #if !ADMIN_DASHBOARD + settings_button.visible = false; + #endif } manual_auth_label.activate_link.connect (on_manual_auth); @@ -340,7 +347,9 @@ public class Tuba.Dialogs.NewAccount: Adw.Window { // translators: Switch description in the new account window subtitle = _("Enables the Admin Dashboard and requests the needed permissions to use the Admin API") }; - group.add (admin_row); + #if ADMIN_DASHBOARD + group.add (admin_row); + #endif page.add (group); this.child = toolbar_view; diff --git a/src/Dialogs/meson.build b/src/Dialogs/meson.build index 8259d6421..ceb7e07b1 100644 --- a/src/Dialogs/meson.build +++ b/src/Dialogs/meson.build @@ -1,5 +1,4 @@ sources += files( - 'Admin.vala', 'AnnualReport.vala', 'FilterEdit.vala', 'ListEdit.vala', @@ -16,5 +15,9 @@ if devmode sources += files ('DevConsole.vala') endif -subdir('Admin') +if not without_admin_dashboard + sources += files ('Admin.vala') + subdir('Admin') +endif + subdir('Composer') diff --git a/src/Views/Sidebar.vala b/src/Views/Sidebar.vala index c9f7ad866..de74e5f06 100644 --- a/src/Views/Sidebar.vala +++ b/src/Views/Sidebar.vala @@ -82,9 +82,11 @@ public class Tuba.Views.Sidebar : Gtk.Widget, AccountHolder { wrapped_menu_item.set_attribute_value ("hidden-when", "action-disabled"); misc_submenu_model.append_item (wrapped_menu_item); - var admin_dahsboard_menu_item = new MenuItem (_("Admin Dashboard"), "app.open-admin-dashboard"); - admin_dahsboard_menu_item.set_attribute_value ("hidden-when", "action-disabled"); - misc_submenu_model.append_item (admin_dahsboard_menu_item); + #if ADMIN_DASHBOARD + var admin_dahsboard_menu_item = new MenuItem (_("Admin Dashboard"), "app.open-admin-dashboard"); + admin_dahsboard_menu_item.set_attribute_value ("hidden-when", "action-disabled"); + misc_submenu_model.append_item (admin_dahsboard_menu_item); + #endif menu_model.append_section (null, misc_submenu_model); diff --git a/src/Views/meson.build b/src/Views/meson.build index 02e7cbada..78d58057a 100644 --- a/src/Views/meson.build +++ b/src/Views/meson.build @@ -39,4 +39,6 @@ if webkit sources += files ('Browser.vala') endif -subdir('Admin') +if not without_admin_dashboard + subdir('Admin') +endif