diff --git a/srcpkgs/extension-manager/patches/disable-backtrace.patch b/srcpkgs/extension-manager/patches/disable-backtrace.patch new file mode 100644 index 00000000000..9f67a043388 --- /dev/null +++ b/srcpkgs/extension-manager/patches/disable-backtrace.patch @@ -0,0 +1,198 @@ +diff -ru a/src/main.c b/src/main.c +--- a/src/main.c 2023-05-02 04:01:31.000000000 +0300 ++++ b/src/main.c 2023-05-25 03:19:55.506674695 +0300 +@@ -17,77 +17,21 @@ + */ + + #include +-#include + + #include "exm-config.h" + #include "exm-application.h" + +-#include "exm-backtrace.h" +-#include "exm-error-dialog.h" +- +-#define APP_URL "https://github.com/mjakeman/extension-manager" +- +-static int pipe_fd[2]; +- +-void +-handler (int sig) +-{ +- const char *backtrace; +- +- g_print ("A fatal error has occurred.\n"); +- g_print ("Please report this to '%s' and attach the following crash report:\n\n", APP_URL); +- +- g_print ("START BACKTRACE\n\n"); +- backtrace = exm_backtrace_print (); +- g_print ("%s\n", backtrace); +- g_print ("END BACKTRACE\n\n"); +- +- if (backtrace) +- { +- // Send backtrace string over pipe +- write (pipe_fd[1], backtrace, strlen (backtrace)); +- } +- +- close (pipe_fd[1]); +- +- // Terminate process +- signal (sig, SIG_DFL); +- kill (getpid (), sig); +-} +- +-static void +-run_crash_reporter (const char *error_text) +-{ +- adw_init (); +- +- // Setup CSS +- GdkDisplay *display = gdk_display_get_default (); +- GtkCssProvider *provider = gtk_css_provider_new (); +- gtk_css_provider_load_from_resource (provider, "/com/mattjakeman/ExtensionManager/style.css"); +- gtk_style_context_add_provider_for_display (display, GTK_STYLE_PROVIDER (provider), +- GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); +- +- // Show error dialog with provided string +- ExmErrorDialog *err_dialog; +- err_dialog = exm_error_dialog_new (error_text); +- +- gtk_window_present (GTK_WINDOW (err_dialog)); +- +- // Iterate main loop until closed +- while (g_list_model_get_n_items (gtk_window_get_toplevels ()) > 0) +- g_main_context_iteration (NULL, TRUE); +-} +- +-static int +-run_app (int argc, +- char *argv[]) ++int ++main (int argc, ++ char *argv[]) + { + g_autoptr(ExmApplication) app = NULL; +- int ret; ++ int ret; + +- /* Setup backtrace service */ +- exm_backtrace_init (argv[0]); +- signal (SIGSEGV, handler); ++ /* Set up gettext translations */ ++ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); ++ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); ++ textdomain (GETTEXT_PACKAGE); + + /* + * Create a new GtkApplication. The application manages our main loop, +@@ -110,74 +54,3 @@ + + return ret; + } +- +-int +-main (int argc, +- char *argv[]) +-{ +- gboolean use_crash_reporter; +- int pid; +- +- // Either side of the pipe +- +- use_crash_reporter = TRUE; +- +- // Set up gettext translations +- bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); +- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); +- textdomain (GETTEXT_PACKAGE); +- +- // Attempt to create the pipe +- if (pipe (pipe_fd) == -1) +- use_crash_reporter = FALSE; +- +- // Run app normally +- if (!use_crash_reporter) +- return run_app (argc, argv); +- +- // Run the GUI as a subprocess of the crash reporter. Depending +- // on the exit code, we can display the crash dialog. +- pid = fork(); +- +- // Child process +- if (pid == 0) +- { +- // Close reading end of pipe +- close (pipe_fd[0]); +- +- // Run app normally +- return run_app (argc, argv); +- } +- +- // Parent process +- else +- { +- char ch; +- GString *string_builder; +- char *error_text; +- +- // Close the writing end of pipe +- close (pipe_fd [1]); +- +- string_builder = g_string_new (""); +- +- while (read (pipe_fd[0], &ch, 1) != 0) +- g_string_append_c (string_builder, ch); +- +- // Wait for child to finish +- waitpid (pid, 0, 0); +- close (pipe_fd[0]); +- +- error_text = g_string_free (string_builder, FALSE); +- +- if (strlen (error_text) > 0) +- { +- // An error has occurred +- run_crash_reporter (error_text); +- g_free (error_text); +- return -1; +- } +- +- return 0; +- } +-} +diff -ru a/src/meson.build b/src/meson.build +--- a/src/meson.build 2023-05-02 04:01:31.000000000 +0300 ++++ b/src/meson.build 2023-05-25 03:13:52.478385702 +0300 +@@ -24,12 +24,12 @@ + 'exm-upgrade-assistant.c', + 'exm-upgrade-result.c', + 'exm-install-button.c', +- 'exm-backtrace.c', ++ #'exm-backtrace.c', + 'exm-utils.c' + ] + + cc = meson.get_compiler('c') +-libbacktrace_dep = cc.find_library('backtrace', required: true) ++#libbacktrace_dep = cc.find_library('backtrace', required: true) + + exm_deps = [ + dependency('gtk4'), +@@ -38,7 +38,7 @@ + dependency('json-glib-1.0'), + dependency('libsoup-3.0'), + dependency('text-engine-0.1'), +- libbacktrace_dep ++ #libbacktrace_dep + ] + + gnome = import('gnome') +@@ -78,4 +78,4 @@ + executable('extension-manager', exm_sources, + dependencies: exm_deps, + install: true, +-) +\ No newline at end of file ++) diff --git a/srcpkgs/extension-manager/template b/srcpkgs/extension-manager/template new file mode 100644 index 00000000000..34d37381994 --- /dev/null +++ b/srcpkgs/extension-manager/template @@ -0,0 +1,21 @@ +# Template file for 'extension-manager' +pkgname=extension-manager +version=0.4.2 +revision=1 +build_style=meson +hostmakedepends="pkg-config gettext blueprint-compiler desktop-file-utils + glib-devel gtk-update-icon-cache" +makedepends="libadwaita-devel text-engine-devel" +short_desc="Utility for browsing and installing GNOME Shell Extensions" +maintainer="chrysos349 " +license="GPL-3.0-or-later" +homepage="https://github.com/mjakeman/extension-manager" +changelog="https://raw.githubusercontent.com/mjakeman/extension-manager/master/NEWS" +distfiles="https://github.com/mjakeman/extension-manager/archive/v${version}.tar.gz" +checksum=c9443755aab4340b6bb31b9ab18d49fdf65d14391bce80e6262cc7ba27e5eab0 + +pre_build() { + if [ "$CROSS_BUILD" ]; then + export GI_TYPELIB_PATH="${XBPS_CROSS_BASE}/usr/lib/girepository-1.0" + fi +}