diff --git a/.gitignore b/.gitignore index b334c15..3cf4649 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,41 @@ -/libfm-*.tar.gz -/libfm-*.tar.xz +libfm-0.1.12.tar.gz +/libfm-0.1.14.tar.gz +/libfm-0.1.15-git3ec0a717adde65f262b5bb2b33ae5eb56e9aea6f.tar.gz +/libfm-0.1.15-git197c7e1b8e3e439a5e4f3f004a3447aef43b298b.tar.gz +/libfm-0.1.15-gitdebea4a90d17ec6fd5876564d28977a3c3875924.tar.gz +/libfm-0.1.15-D20110422git30d03d27e4.tar.gz +/libfm-0.1.15-D20110427gita1f63c3114.tar.gz +/libfm-0.1.15-D20110529gitcd79d6228b.tar.gz +/libfm-0.1.15-D20110807gitd22b41fd2f.tar.gz +/libfm-0.1.16.tar.gz +/libfm-0.1.17.tar.gz +/libfm-1.0.tar.gz +/libfm-1.0.1.tar.gz +/libfm-1.1.0.tar.gz +/libfm-1.1.1.tar.gz +/libfm-1.1.2.tar.gz +/libfm-1.1.2.1.tar.gz +/libfm-1.1.2.2.tar.gz +/libfm-1.1.3.tar.xz +/libfm-1.1.4.tar.xz +/libfm-1.2.0-rc1.tar.xz +/libfm-1.2.0.tar.xz +/libfm-1.2.1.tar.xz +/libfm-1.2.2.tar.xz +/libfm-1.2.3.tar.xz +/libfm-1.2.3-699810d3bd0c5d9d508fcd9aa3a65442f2afee3f.tar.gz +/libfm-1.2.3-577806e29d2ec27ce5fee9dc816566fb4e23b155.tar.gz +/libfm-1.2.3-D20150525git8f38f90e04b648637509f2fa2d4208027ae59b5c.tar.gz +/libfm-1.2.3-D20150607gite1de98ccba316605e14d8cfc06df9a55752cdcec.tar.gz +/libfm-1.2.3-D20150713gitf47c9ae7ae7e1c5ff9742b8a6ca49fdb6f55f98d.tar.gz +/libfm-1.2.3-D20150728git47d0c1dd7d59c83188f11bfd6aef4a855f4f5c39.tar.gz +/libfm-1.2.4.tar.xz +/libfm-1.2.4-D20160618gitb22c0995e76936d62e246a12e5a0cf0ccf31361e.tar.gz +/libfm-1.2.4-D20160627git2a537414def87ebd75024a74030e60582cd78c45.tar.gz +/libfm-1.2.4-D20161017git82b3a1a201aae22860f501e3f7e75b46f8bcacd7.tar.gz +/libfm-1.2.4-D20161105gitc2989af0154256c35c5def4b9f5a758c8a3878ca.tar.gz +/libfm-1.2.4-D20161204git275559f196db6340d4ae6119a10d9b0efedaf84f.tar.gz +/libfm-1.2.4-D20161206gita24389f804ae95f737bbb4239be00bc99a62180b.tar.gz +/libfm-1.2.4-D20161209gitab583d7800bbc308f2852384f87c2357f49b01cd.tar.gz +/libfm-1.2.5.tar.xz +/libfm-20171230T1949.tar.gz diff --git a/create-libfm-git-bare-tarball.sh b/create-libfm-git-bare-tarball.sh index 1095278..9af078b 100644 --- a/create-libfm-git-bare-tarball.sh +++ b/create-libfm-git-bare-tarball.sh @@ -18,10 +18,6 @@ pushd $TMPDIR git clone --mirror $GITURL tar czf ${TARNAME} ${REPONAME}.git/ -pushd ${REPONAME}.git/ -git log --format=fuller | head -n 12 -popd - cp -p ${TARNAME} $PWDDIR popd rm -rf $TMPDIR diff --git a/libfm-1.3.0.2-moduledir-gtkspecific-v03.patch b/libfm-1.2.3-moduledir-gtkspecific-v02.patch similarity index 68% rename from libfm-1.3.0.2-moduledir-gtkspecific-v03.patch rename to libfm-1.2.3-moduledir-gtkspecific-v02.patch index d240e49..3be23af 100644 --- a/libfm-1.3.0.2-moduledir-gtkspecific-v03.patch +++ b/libfm-1.2.3-moduledir-gtkspecific-v02.patch @@ -1,5 +1,5 @@ ---- libfm-1.3.0.2/configure.ac.moduledir 2018-04-29 05:06:53.000000000 +0900 -+++ libfm-1.3.0.2/configure.ac 2018-04-29 17:54:40.014818903 +0900 +--- libfm-8f38f90e04b648637509f2fa2d4208027ae59b5c/configure.ac.moduledir 2015-05-26 01:14:45.000000000 +0900 ++++ libfm-8f38f90e04b648637509f2fa2d4208027ae59b5c/configure.ac 2015-06-01 16:59:15.758431997 +0900 @@ -117,12 +117,14 @@ if test x"$ac_with_gtk" != xno; then LIBFM_GTK_LTLIBRARIES=libfm-gtk3.la LIBFM_GTK_PC=libfm-gtk3.pc @@ -22,8 +22,8 @@ + LIBFM_GTK_MODULE_DIR_SUFFIX="" LIBFM_PREF_APPS= fi - if test "$ac_with_gtk" = "3.0"; then -@@ -144,6 +147,7 @@ AC_SUBST(GTK_LIBS) + AC_SUBST(GTK_CFLAGS) +@@ -141,6 +144,7 @@ AC_SUBST(GTK_LIBS) AC_SUBST(LIBFM_GTK_LTLIBRARIES) AC_SUBST(LIBFM_PREF_APPS) AC_SUBST(LIBFM_GTK_PC) @@ -31,9 +31,9 @@ AM_CONDITIONAL([ENABLE_GTK], [test x$ac_with_gtk != xnone]) dnl pango_modules="pango >= 1.16.0" ---- libfm-1.3.0.2/src/Makefile.am.moduledir 2018-04-29 04:15:18.000000000 +0900 -+++ libfm-1.3.0.2/src/Makefile.am 2018-04-29 17:54:40.014818903 +0900 -@@ -315,6 +315,7 @@ libfm_gtk_la_CFLAGS = \ +--- libfm-8f38f90e04b648637509f2fa2d4208027ae59b5c/src/Makefile.am.moduledir 2015-05-26 01:14:45.000000000 +0900 ++++ libfm-8f38f90e04b648637509f2fa2d4208027ae59b5c/src/Makefile.am 2015-06-01 16:59:15.759431997 +0900 +@@ -313,6 +313,7 @@ libfm_gtk_la_CFLAGS = \ -I$(srcdir)/gtk \ -DPACKAGE_UI_DIR=\""$(datadir)/libfm/ui"\" \ -DPACKAGE_THEME_DIR=\""$(datadir)/libfm/images"\" \ @@ -41,8 +41,8 @@ $(GTK_CFLAGS) \ $(MENU_CACHE_CFLAGS) \ $(NULL) ---- libfm-1.3.0.2/src/fm-gtk.c.moduledir 2018-04-17 04:11:33.000000000 +0900 -+++ libfm-1.3.0.2/src/fm-gtk.c 2018-04-29 17:54:40.014818903 +0900 +--- libfm-8f38f90e04b648637509f2fa2d4208027ae59b5c/src/fm-gtk.c.moduledir 2015-06-01 17:04:33.951498868 +0900 ++++ libfm-8f38f90e04b648637509f2fa2d4208027ae59b5c/src/fm-gtk.c 2015-06-01 17:04:59.933504328 +0900 @@ -57,6 +57,7 @@ gboolean fm_gtk_init(FmConfig* config) if no theme was selected and GTK fallback isn't available then no icons are shown - we should add folder and file icons as fallbacks theme */ @@ -51,9 +51,9 @@ _fm_icon_pixbuf_init(); _fm_thumbnail_init(); _fm_file_properties_init(); ---- libfm-1.3.0.2/src/modules/Makefile.am.moduledir 2018-04-29 05:00:55.000000000 +0900 -+++ libfm-1.3.0.2/src/modules/Makefile.am 2018-04-29 17:57:06.097345230 +0900 -@@ -19,6 +19,7 @@ LIBS += $(top_builddir)/src/libfm.la +--- libfm-8f38f90e04b648637509f2fa2d4208027ae59b5c/src/modules/Makefile.am.moduledir 2015-05-26 01:14:45.000000000 +0900 ++++ libfm-8f38f90e04b648637509f2fa2d4208027ae59b5c/src/modules/Makefile.am 2015-06-01 16:59:15.759431997 +0900 +@@ -18,6 +18,7 @@ LIBS += $(top_builddir)/src/libfm.la # change default and put modules below usual place pkglibdir = $(libdir)/@PACKAGE@/modules @@ -61,7 +61,7 @@ # modules to compile pkglib_LTLIBRARIES = \ -@@ -26,8 +27,11 @@ pkglib_LTLIBRARIES = \ +@@ -25,11 +26,14 @@ pkglib_LTLIBRARIES = \ vfs-search.la \ $(NULL) @@ -69,12 +69,16 @@ + $(NULL) + if ENABLE_GTK + if HAVE_ACTIONS +-pkglib_LTLIBRARIES += gtk-menu-actions.la ++pkggtklib_LTLIBRARIES += gtk-menu-actions.la + endif -pkglib_LTLIBRARIES += \ +pkggtklib_LTLIBRARIES += \ gtk-fileprop-x-desktop.la \ gtk-fileprop-x-shortcut.la \ gtk-menu-trash.la \ -@@ -38,10 +42,14 @@ endif +@@ -39,10 +43,14 @@ endif # install only .so files, we don't need .la files install-exec-hook: rm -f $(DESTDIR)$(pkglibdir)/*.la diff --git a/libfm-1.2.4-fix-use-after-free-cfgfile.patch b/libfm-1.2.4-fix-use-after-free-cfgfile.patch new file mode 100644 index 0000000..9798229 --- /dev/null +++ b/libfm-1.2.4-fix-use-after-free-cfgfile.patch @@ -0,0 +1,27 @@ +--- libfm-2a537414def87ebd75024a74030e60582cd78c45/src/base/fm-config.c.orig 2016-06-27 17:41:36.000000000 +0900 ++++ libfm-2a537414def87ebd75024a74030e60582cd78c45/src/base/fm-config.c 2016-08-28 15:23:42.557464377 +0900 +@@ -339,14 +339,15 @@ + { + const gchar * const *dirs, * const *dir; + char *path; ++ char *old_cfg_name; + GKeyFile* kf = g_key_file_new(); ++ old_cfg_name = cfg->_cfg_name; + + g_strfreev(cfg->modules_blacklist); + g_strfreev(cfg->system_modules_blacklist); + cfg->modules_blacklist = NULL; + cfg->system_modules_blacklist = NULL; + _cfg_monitor_free(cfg); +- g_free(cfg->_cfg_name); + if(G_LIKELY(!name)) + name = "libfm/libfm.conf"; + else +@@ -391,6 +392,7 @@ + _out: + g_key_file_free(kf); + g_signal_emit(cfg, signals[CHANGED], 0); ++ g_free(old_cfg_name); + /* FIXME: compare and send individual changes instead */ + } + diff --git a/libfm-1.2.5-0103-Fix-segv-on-pasting-large-string-when-completion-mat.patch b/libfm-1.2.5-0103-Fix-segv-on-pasting-large-string-when-completion-mat.patch new file mode 100644 index 0000000..229c8e2 --- /dev/null +++ b/libfm-1.2.5-0103-Fix-segv-on-pasting-large-string-when-completion-mat.patch @@ -0,0 +1,28 @@ +From f5f3d488480495f3c4ec727dcdaef49b2295ac4e Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Sat, 8 Apr 2017 01:34:32 +0900 +Subject: [PATCH] Fix segv on pasting large string when completion matches + +On fm_path_entry_completion_render_func(), priv->typed_basename_len +can be larger than model_file_name_len when pasting string from +cripboard when completion matches. +--- + src/gtk/fm-path-entry.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gtk/fm-path-entry.c b/src/gtk/fm-path-entry.c +index 3d5905b9..661b908e 100644 +--- a/src/gtk/fm-path-entry.c ++++ b/src/gtk/fm-path-entry.c +@@ -746,7 +746,7 @@ static void fm_path_entry_completion_render_func(GtkCellLayout *cell_layout, + gtk_tree_model_get(model, iter, COL_BASENAME, &model_file_name, -1); + model_file_name_len = strlen(model_file_name); + +- if( priv->highlight_completion_match ) ++ if( priv->highlight_completion_match && (model_file_name_len >= priv->typed_basename_len) ) + { + int buf_len = model_file_name_len + 14 + 1; + gchar* markup = g_malloc(buf_len); +-- +2.12.2 + diff --git a/libfm-1.2.5-0104-Fix-build-error-with-vala-0.36.1.patch b/libfm-1.2.5-0104-Fix-build-error-with-vala-0.36.1.patch new file mode 100644 index 0000000..775d4b8 --- /dev/null +++ b/libfm-1.2.5-0104-Fix-build-error-with-vala-0.36.1.patch @@ -0,0 +1,48 @@ +From 7a93547cb4a4640e58f0182540aee091aebb3ae9 Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Sat, 8 Apr 2017 01:21:06 +0900 +Subject: [PATCH] Fix build error with vala 0.36.1 + +On Fedora 26 (using vala 0.36.1), rebuilding libfm causes +a error as: + +CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/valac --thread --vapidir=./../vapi --pkg gio-2.0 --pkg posix --pkg libfm --vapi ./../vapi/fm-actions.vapi --header fm-actions.h -C action.vala condition.vala profile.vala parameters.vala utils.vala +condition.vala:149.18-155.34: warning: unhandled error `GLib.Error' +condition.vala:192.8-193.40: warning: unhandled error `GLib.SpawnError' +action.vala:81.4-81.30: error: use `new' operator to create new objects + FileAction.from_keyfile(kf); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +action.vala:144.4-144.34: error: use `new' operator to create new objects + FileActionMenu.from_keyfile(kf); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Instead of using class name, "this" must be used here. +--- + src/actions/action.vala | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/actions/action.vala b/src/actions/action.vala +index 53b512ec..18738589 100644 +--- a/src/actions/action.vala ++++ b/src/actions/action.vala +@@ -78,7 +78,7 @@ public class FileAction : FileActionObject { + id = desktop_id; + try { + kf.load_from_file(desktop_id, 0); +- FileAction.from_keyfile(kf); ++ this.from_keyfile(kf); + } + catch(KeyFileError err) { + } +@@ -141,7 +141,7 @@ public class FileActionMenu : FileActionObject { + id = desktop_id; + try { + kf.load_from_file(desktop_id, 0); +- FileActionMenu.from_keyfile(kf); ++ this.from_keyfile(kf); + } + catch(KeyFileError err) { + } +-- +2.12.2 + diff --git a/libfm-1.3.2-0001-fm_config_load_from_key_file-don-t-replace-string-va.patch b/libfm-1.3.2-0001-fm_config_load_from_key_file-don-t-replace-string-va.patch deleted file mode 100644 index 493abf9..0000000 --- a/libfm-1.3.2-0001-fm_config_load_from_key_file-don-t-replace-string-va.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 1789c96ae73720ef001249d2085553102043aee3 Mon Sep 17 00:00:00 2001 -From: Mamoru TASAKA -Date: Thu, 28 Oct 2021 22:07:14 +0900 -Subject: [PATCH] fm_config_load_from_key_file: don't replace string value when - loaded config file does not have such key - -For example, fm_config_load_from_file() loads every key file with path -ending with "/libfm/libfm.conf" under XDG_CONFIG_DIRS using fm_config_load_from_key_file(). - -With current fm_config_load_from_key_file() implementation, every time it is called, -for key having string, firstly the old value is always free'ed, and the new value is -read and set, even if the new value is empty. -So if system wide key file contains a key with string value but user-specific key file -does not contain the key, system widely set key value is lost, which is unwilling. - -For other value types (such as bool or int), the corresponding fm_key_file_get_TYPE -function are used, and these functions replace old values when the new config file -actually has the corresponding key. - -With this patch, similar to other value types, string value is to be replaced -only when new loaded config actually has corresponding key. -Also, implement fm_key_file_get_string() to be consistent with other types. ---- - src/base/fm-config.c | 30 ++++++++++++++++++------------ - 1 file changed, 18 insertions(+), 12 deletions(-) - -diff --git a/src/base/fm-config.c b/src/base/fm-config.c -index a633857..1e3d3f7 100644 ---- a/src/base/fm-config.c -+++ b/src/base/fm-config.c -@@ -245,6 +245,19 @@ static void _parse_drop_default_action(GKeyFile *kf, gint *action) - } - } - -+static gboolean fm_key_file_get_string(GKeyFile* kf, const char* grp, const char* key, char** val) -+{ -+ char* str_key_new = g_key_file_get_string(kf, grp, key, NULL); -+ if(G_LIKELY(str_key_new)) -+ { -+ if (*val) -+ g_free(*val); -+ *val = str_key_new; -+ } -+ return str_key_new != NULL; -+} -+ -+ - /** - * fm_config_load_from_key_file - * @cfg: pointer to configuration -@@ -263,12 +276,8 @@ void fm_config_load_from_key_file(FmConfig* cfg, GKeyFile* kf) - fm_key_file_get_int(kf, "config", "auto_selection_delay", &cfg->auto_selection_delay); - fm_key_file_get_bool(kf, "config", "confirm_del", &cfg->confirm_del); - fm_key_file_get_bool(kf, "config", "confirm_trash", &cfg->confirm_trash); -- if(cfg->terminal) -- g_free(cfg->terminal); -- cfg->terminal = g_key_file_get_string(kf, "config", "terminal", NULL); -- if(cfg->archiver) -- g_free(cfg->archiver); -- cfg->archiver = g_key_file_get_string(kf, "config", "archiver", NULL); -+ fm_key_file_get_string(kf, "config", "terminal", &cfg->terminal); -+ fm_key_file_get_string(kf, "config", "archiver", &cfg->archiver); - fm_key_file_get_bool(kf, "config", "thumbnail_local", &cfg->thumbnail_local); - fm_key_file_get_int(kf, "config", "thumbnail_max", &cfg->thumbnail_max); - fm_key_file_get_bool(kf, "config", "advanced_mode", &cfg->advanced_mode); -@@ -285,8 +294,7 @@ void fm_config_load_from_key_file(FmConfig* cfg, GKeyFile* kf) - fm_key_file_get_bool(kf, "config", "defer_content_test", &cfg->defer_content_test); - fm_key_file_get_bool(kf, "config", "quick_exec", &cfg->quick_exec); - fm_key_file_get_bool(kf, "config", "smart_desktop_autodrop", &cfg->smart_desktop_autodrop); -- g_free(cfg->format_cmd); -- cfg->format_cmd = g_key_file_get_string(kf, "config", "format_cmd", NULL); -+ fm_key_file_get_string(kf, "config", "format_cmd", &cfg->format_cmd); - /* append blacklist */ - strv = g_key_file_get_string_list(kf, "config", "modules_blacklist", NULL, NULL); - fm_strcatv(&cfg->modules_blacklist, strv); -@@ -305,10 +313,8 @@ void fm_config_load_from_key_file(FmConfig* cfg, GKeyFile* kf) - fm_key_file_get_int(kf, "ui", "thumbnail_size", &cfg->thumbnail_size); - fm_key_file_get_bool(kf, "ui", "show_thumbnail", &cfg->show_thumbnail); - fm_key_file_get_bool(kf, "ui", "shadow_hidden", &cfg->shadow_hidden); -- g_free(cfg->list_view_size_units); -- cfg->list_view_size_units = g_key_file_get_string(kf, "ui", "list_view_size_units", NULL); -- g_free(cfg->saved_search); -- cfg->saved_search = g_key_file_get_string(kf, "ui", "saved_search", NULL); -+ fm_key_file_get_string(kf, "ui", "list_view_size_units", &cfg->list_view_size_units); -+ fm_key_file_get_string(kf, "ui", "saved_search", &cfg->saved_search); - - fm_key_file_get_bool(kf, "places", "places_home", &cfg->places_home); - fm_key_file_get_bool(kf, "places", "places_desktop", &cfg->places_desktop); --- -2.33.1 - diff --git a/libfm.spec b/libfm.spec index 5fc24d7..11ad48b 100644 --- a/libfm.spec +++ b/libfm.spec @@ -3,121 +3,120 @@ # Upstream git: # git://pcmanfm.git.sourceforge.net/gitroot/pcmanfm/libfm # add bootstrap, need to build menu-cache in epel7 -%global use_release 0 -%global use_gitbare 1 +%global userelease 0 +%global usegit 0 +%global usegitbare 1 -%if 0%{?use_gitbare} < 1 +%if 0%{?usegit} < 1 +%if 0%{?usegitbare} < 1 # force -%global use_release 1 +%global userelease 1 %endif - -%global git_version %{nil} -%global git_ver_rpm %{nil} -%global git_builddir %{nil} - -%if 0%{?use_gitbare} -%global gittardate 20251217 -%global gittartime 2335 -%define use_gitcommit_as_rel 0 - -%global gitbaredate 20251214 -%global git_rev 7e575d13fcf0532fc181fc26391ad6fd7717ed66 -%global git_short %(echo %{git_rev} | cut -c-8) -%global git_version %{gitbaredate}git%{git_short} - -%if 0%{?use_gitcommit_as_rel} -%global git_ver_rpm ^%{git_version} -%global git_builddir -%{git_version} -%else -%global git_ver_rpm %{nil} -%global git_builddir %{nil} %endif -%endif - - -%global main_version 1.4.1 - %global bootstrap 0 +%global mainver 1.2.5 +%undefine prever +%global prerpmver %(echo "%{?prever}" | sed -e 's|-||g') + +%global mainrel 4 + +%if 0%{?usegit} >= 1 +%global githash ab583d7800bbc308f2852384f87c2357f49b01cd +%global shorthash %(TMP=%githash ; echo ${TMP:0:10}) +%global gitdate Fri, 9 Dec 2016 01:44:54 +0200 +%global gitdate_num 20161209 +%endif + +%if 0%{?usegitbare} >= 1 +%global gitbaredate 20171230 +%global gitbaretime 1949 +%endif + +%if 0%{?userelease} >= 1 +%global fedorarel %{?prever:0.}%{mainrel}%{?prever:.%{prerpmver}} +%endif +%if 0%{?usegit} >= 1 +%global fedorarel %{mainrel}.D%{gitdate_num}git%{shorthash} +%endif +%if 0%{?usegitbare} >= 1 +%global fedorarel %{mainrel}.gitD%{gitbaredate} +%endif + %global build_doc 1 -%undefine _changelog_trimtime - Name: libfm -Version: %{main_version}%{git_ver_rpm} -Release: 1%{?dist} +Version: %{mainver} +Release: %{fedorarel}%{?dist} Summary: GIO-based library for file manager-like programs -# src/actions/ GPL-2.0-or-later -# src/base/ LGPL-2.1-or-later -# src/demo/ GPL-2.0-or-later -# src/extra/ LGPL-2.1-or-later -# src/fm-gtk.{c,h} GPL-2.0-or-later -# src/gtk-compat.c GPL-2.0-or-later -# src/*.c (rest) LGPL-2.1-or-later -# src/gio/ GPL-2.0-or-later -# src/gtk/exo/ LGPL-2.1-or-later AND GPL-2.0-or-later -# src/gtk/ GPL-2.0-or-later AND LGPL-2.1-or-later -# src/job/ LGPL-2.1-or-later -# src/modules/ GPL-2.0-or-later -# src/tests/ GPL-2.0-or-later -# src/tools/ GPL-2.0-or-later -# src/udisks/ GPL-2.0-or-later - -# SPDX confirmed -License: LGPL-2.1-or-later AND GPL-2.0-or-later +Group: System Environment/Libraries +License: GPLv2+ URL: http://pcmanfm.sourceforge.net/ -%if 0%{?use_release} >= 1 +%if 0%{?userelease} >= 1 Source0: http://downloads.sourceforge.net/pcmanfm/%{name}-%{mainver}%{?prever}.tar.xz Source1: https://raw.githubusercontent.com/lxde/libfm/master/autogen.sh %endif -%if 0%{?use_gitbare} >= 1 -Source0: libfm-%{gittardate}T%{gittartime}.tar.gz +%if 0%{?usegit} >= 1 +Source0: https://github.com/lxde/libfm/archive/%{githash}/%{name}-%{version}-D%{gitdate_num}git%{githash}.tar.gz +%endif +%if 0%{?usegitbare} >= 1 +Source0: libfm-%{gitbaredate}T%{gitbaretime}.tar.gz %endif Source10: create-libfm-git-bare-tarball.sh -# Make fm_config_load_from_key_file don't replace string key value -# when subsequent config file does not contain such key but previous key had -# (related to bug 2011471) -Patch1: libfm-1.3.2-0001-fm_config_load_from_key_file-don-t-replace-string-va.patch +# +# https://github.com/lxde/libfm/pull/11 +Patch102: libfm-1.2.4-fix-use-after-free-cfgfile.patch +# Fedora specific patches +# Firefox uses firefox.desktop for desktop name, drop +#Patch0: libfm-0.1.9-pref-apps.patch + +# Fix crash when pasting large string when completion matches (bug 1437443) +# https://github.com/lxde/libfm/pull/23 +Patch103: libfm-1.2.5-0103-Fix-segv-on-pasting-large-string-when-completion-mat.patch +# https://github.com/lxde/libfm/pull/22 +Patch104: libfm-1.2.5-0104-Fix-build-error-with-vala-0.36.1.patch + # http://sourceforge.net/p/pcmanfm/feature-requests/385/ -#Patch1000: http://sourceforge.net/p/pcmanfm/feature-requests/_discuss/thread/0a50a386/597e/attachment/libfm-1.2.3-moduledir-gtkspecific-v02.patch -Patch1000: libfm-1.3.0.2-moduledir-gtkspecific-v03.patch +Patch1000: http://sourceforge.net/p/pcmanfm/feature-requests/_discuss/thread/0a50a386/597e/attachment/libfm-1.2.3-moduledir-gtkspecific-v02.patch -BuildRequires: pkgconfig(gio-unix-2.0) >= 2.26.0 -BuildRequires: pkgconfig(glib-2.0) >= 2.27.0 -BuildRequires: pkgconfig(gtk+-2.0) -BuildRequires: pkgconfig(gtk+-3.0) -BuildRequires: pkgconfig(pango) -BuildRequires: pkgconfig(cairo) -BuildRequires: pkgconfig(dbus-glib-1) -BuildRequires: pkgconfig(libexif) - -%if ! 0%{?bootstrap} -BuildRequires: pkgconfig(libmenu-cache) >= 0.3.2 +BuildRequires: libexif-devel +BuildRequires: gtk3-devel +%if 0%{?fedora} >= 22 +BuildRequires: gtk2-devel +%endif + +%if ! 0%{?bootstrap} +BuildRequires: menu-cache-devel >= 0.3.2 %endif -BuildRequires: make -BuildRequires: gcc BuildRequires: gettext BuildRequires: intltool BuildRequires: desktop-file-utils BuildRequires: gtk-doc BuildRequires: libxslt -BuildRequires: %{_bindir}/valac + +BuildRequires: dbus-glib-devel + +BuildRequires: vala # Patch1000 needs the below anyway BuildRequires: automake BuildRequires: libtool -# Anyway use git +%if 0%{?usegitbare} >= 1 BuildRequires: git +%endif %if 0%{?build_doc} < 1 Obsoletes: %{name}-devel-docs < 0.1.15 %endif +Requires(post): /sbin/ldconfig +Requires(postun): /sbin/ldconfig + %description LibFM is a GIO-based library used to develop file manager-like programs. It is @@ -131,6 +130,7 @@ This package contains the generic non-gui functions of libfm. %package gtk Summary: File manager-related GTK+ widgets of %{name} +Group: System Environment/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} Requires: gvfs @@ -145,6 +145,7 @@ This package provides useful file manager-related GTK+ 3 widgets. %package gtk2 Summary: File manager-related GTK+ widgets of %{name} +Group: System Environment/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} Requires: gvfs @@ -159,6 +160,7 @@ This package provides useful file manager-related GTK+ 2 widgets. %package gtk-utils Summary: GTK+ related utility package for %{name} +Group: User Interface/Desktops Requires: %{name}-gtk%{?isa} = %{version}-%{release} Obsoletes: lxshortcut < 0.1.3 Provides: lxshortcut = %{version}-%{release} @@ -171,6 +173,7 @@ This package contains some GTK+ related utility files for %package devel Summary: Development files for %{name} +Group: Development/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} %description devel @@ -180,6 +183,7 @@ developing applications that use %{name}. %package gtk-devel-common Summary: Common Development files for %{name}-gtk +Group: Development/Libraries Requires: %{name}-devel = %{version}-%{release} BuildArch: noarch @@ -190,6 +194,7 @@ developing applications that use %{name}-gtk. %package gtk-devel Summary: Development files for %{name}-gtk +Group: Development/Libraries Requires: %{name}-gtk%{?_isa} = %{version}-%{release} Requires: %{name}-gtk-devel-common = %{version}-%{release} @@ -199,6 +204,7 @@ developing applications that use %{name}-gtk. %package gtk2-devel Summary: Development files for %{name}-gtk2 +Group: Development/Libraries Requires: %{name}-gtk2%{?_isa} = %{version}-%{release} Requires: %{name}-gtk-devel-common = %{version}-%{release} @@ -208,99 +214,76 @@ developing applications that use %{name}-gtk2. %package devel-docs Summary: Development documation for %{name} +Group: Development/Libraries %description devel-docs This package containg development documentation files for %{name}. %prep -%if 0%{?use_release} >= 1 -%setup -q -n %{name}-%{main_version}%{?prever} +%if 0%{?userelease} >= 1 +%setup -q -n %{name}-%{version}%{?prever} cp -a %{SOURCE1} . #%%patch0 -p1 -b .orig -git init +%endif +%if 0%{?usegit} >= 1 +%setup -q -n %{name}-%{githash} %endif -%if 0%{?use_gitbare} -%setup -q -c -T -n %{name}-%{main_version}%{git_builddir} -a 0 -git clone ./%{name}.git/ -cd %{name} - -%if !%{use_gitcommit_as_rel} -git checkout -b fedora-%{version} %{version} +%if 0%{?usegitbare} < 1 +%patch102 -p1 +%patch103 -p1 +%patch104 -p1 %endif -# Restore timestamps -set +x -echo "Restore timestamps" -git ls-tree -r --name-only HEAD | while read f -do - unixtime=$(git log -n 1 --pretty='%ct' -- $f) - touch -d "@${unixtime}" $f -done -set -x - +%if 0%{?usegitbare} >= 1 +%setup -q -c -T -a 0 +git clone ./libfm.git/ +cd libfm cp -a [A-Z]* .. -%endif git config user.name "libfm Fedora maintainer" git config user.email "libfm-maintainer@fedoraproject.org" -%if 0%{?use_release} >= 1 -# Once call autogen.sh to make git status clean -sh autogen.sh -git add . -git commit -m "Init tree" -q -%endif - -%if 0%{?use_gitbare} >= 1 -git checkout -b %{main_version}-fedora %{git_rev} +git checkout -b 1.2.5-fedora 1.2.5 cat > GITHASH <= 22 +%patch1000 -p1 +%endif +%if 0%{?usegitbare} >= 1 git commit -m "Use gtk version specific module directory" -a +%endif -# Need reporting upstream -# ref: https://github.com/lxde/libfm/commit/1af95bd8f26cab6848a74b7e02b53c6c79fb53a5 -sed -i Makefile.am \ - -e '\@docs/reference/libfm/libfm-sections.txt@d' -git commit -m "Remove files entry to be regenerated" -a || true - -# Add ACLOCAL_PATH for gettext 0.25 (ref: bug 2366708) -export ACLOCAL_PATH=%{_datadir}/gettext/m4/ +# Patch1000 needs below anyway sh autogen.sh -git commit -m "save modified files" -a || true # treak rpath sed -i.libdir_syssearch \ -e '/sys_lib_dlsearch_path_spec/s|/usr/lib |/usr/lib /usr/lib64 /lib /lib64 |' \ configure -git commit -m "Tweak library search path spec not to inject rpath" -a || true - -# Ignore po/ directory make check error -sed -i.error po/Makefile.in.in \ - -e '\@check@,\@fi@s|exit 1|exit 0|' -git commit -m "ignore po/ directory make check error" -a || true - -# Tell vala to regenerate C source -find . -name \*.vala | xargs touch - %build -%if 0%{?use_gitbare} >= 1 +%if 0%{?usegitbare} >= 1 cd libfm %endif -%if 0%{?use_gitbare} >= 1 +%if (0%{?usegitbare} >= 1) || (0%{?usegit} >= 1) # Workaround # Once generate files anyway ./configure @@ -309,7 +292,9 @@ rm -f config.status %endif for ver in \ +%if 0%{?fedora} >= 22 2 \ +%endif 3 \ %{nil} do @@ -336,14 +321,14 @@ do make -C po -j1 GMSGFMT="msgfmt --statistics" make %{?_smp_mflags} -k - make install DESTDIR=$(pwd)/../INSTDIR-gtk${ver} INSTALL="install -p" + make install DESTDIR=$(pwd)/../INSTDIR-gtk${ver} popd done %install TOPDIR=$(pwd) -%if 0%{?use_gitbare} >= 1 +%if 0%{?usegitbare} >= 1 cd libfm %endif @@ -385,10 +370,11 @@ done # GTK2 %if ! 0%{?bootstrap} +%if 0%{?fedora} >= 22 pushd INSTDIR-gtk2 find . -name '*.la' -exec rm -f {} ';' -rm -f .%{_libdir}/pkgconfig/libfm-gtk3.pc +rm -f .{_libdir}/pkgconfig/libfm-gtk3.pc diff -urNp .%{_includedir}/%{name}-1.0 $RPM_BUILD_ROOT%{_includedir}/%name-1.0 diff -urNp .%{_datadir}/%{name} $RPM_BUILD_ROOT/%{_datadir}/%{name} @@ -400,16 +386,20 @@ cp -a ./%{_libdir}/libfm/modules/gtk/ \ $RPM_BUILD_ROOT%{_libdir}/libfm/modules/ popd %endif +%endif /usr/lib/rpm/check-rpaths %check -%if 0%{?use_gitbare} >= 1 +%if 0%{?usegitbare} >= 1 cd libfm %endif +find INSTDIR-gtk* -name \*.ui >> po/POTFILES.skip for ver in \ +%if 0%{?fedora} >= 22 2 \ +%endif 3 \ %{nil} do @@ -418,12 +408,33 @@ do popd done +%post +/sbin/ldconfig +touch --no-create %{_datadir}/mime/packages &> /dev/null || : + %pre devel # Directory -> symlink if [ -d %{_includedir}/libfm ] ; then rm -rf %{_includedir}/libfm fi +%postun +/sbin/ldconfig +if [ $1 -eq 0 ] ; then +touch --no-create %{_datadir}/mime/packages &> /dev/null || : +update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : +fi + +%posttrans +update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : + +%post gtk -p /sbin/ldconfig +%postun gtk -p /sbin/ldconfig +%if 0%{?fedora} >= 22 +%post gtk2 -p /sbin/ldconfig +%postun gtk2 -p /sbin/ldconfig +%endif + %if 0%{?bootstrap} %files %else @@ -431,34 +442,33 @@ fi %endif # FIXME: Add ChangeLog if not empty %doc AUTHORS -%license COPYING +%doc COPYING %doc NEWS %doc README - %if ! 0%{?bootstrap} %dir %{_sysconfdir}/xdg/libfm/ %config(noreplace) %{_sysconfdir}/xdg/libfm/libfm.conf - %{_datadir}/%{name}/ %{_libdir}/%{name}.so.4* - %dir %{_libdir}/libfm %dir %{_libdir}/libfm/modules %{_libdir}/libfm/modules/vfs-*.so %{_datadir}/mime/packages/libfm.xml %endif - %{_libdir}/%{name}-extra.so.4* %if ! 0%{?bootstrap} %files gtk %{_libdir}/%{name}-gtk3.so.4* +%if 0%{?fedora} < 22 +%{_libdir}/libfm/modules/gtk-*.so +%else %{_libdir}/libfm/modules/gtk3/ +%endif %files gtk-utils %{_mandir}/man1/libfm-pref-apps.1.* %{_mandir}/man1/lxshortcut.1.* - %{_bindir}/libfm-pref-apps %{_bindir}/lxshortcut %{_datadir}/applications/libfm-pref-apps.desktop @@ -469,7 +479,6 @@ fi %doc TODO %{_includedir}/libfm %dir %{_includedir}/libfm-1.0/ - %if ! 0%{?bootstrap} %{_libdir}/%{name}.so %{_libdir}/pkgconfig/libfm.pc @@ -485,6 +494,7 @@ fi %{_libdir}/%{name}-gtk3.so %{_libdir}/pkgconfig/libfm-gtk3.pc +%if 0%{?fedora} >= 22 %files gtk2 %{_libdir}/%{name}-gtk.so.4* %{_libdir}/libfm/modules/gtk/ @@ -492,6 +502,7 @@ fi %files gtk2-devel %{_libdir}/%{name}-gtk.so %{_libdir}/pkgconfig/libfm-gtk.pc +%endif %if 0%{?build_doc} %files devel-docs @@ -502,147 +513,6 @@ fi %endif %changelog -* Wed Dec 17 2025 Mamoru TASAKA - 1.4.1-1 -- 1.4.1 - -* Thu Jul 24 2025 Fedora Release Engineering - 1.4.0^20250316git3289abf5-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Mon May 26 2025 Mamoru TASAKA - 1.4.0^20250316git3289abf5-2 -- Add ACLOCAL_PATH for gettext 0.25 (ref: bug 2366708) - -* Sat Mar 22 2025 Mamoru TASAKA - 1.4.0^20250316git3289abf5-1 -- Update to the latest git - -* Wed Feb 19 2025 Mamoru TASAKA - 1.4.0-1 -- 1.4.0 - -* Sun Feb 16 2025 Mamoru TASAKA - 1.3.2^20250215git9ea11dca-1 -- Update to the latest git - -* Fri Feb 07 2025 Mamoru TASAKA - 1.3.2^20250114git493571d1-1 -- Update to the latest git - -* Fri Jan 17 2025 Fedora Release Engineering - 1.3.2^20250109git2d94c3c8-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Tue Jan 14 2025 Mamoru TASAKA - 1.3.2^20250109git2d94c3c8-2 -- Apply upstream PR for C23 with function prototype strictness - -* Tue Jan 14 2025 Mamoru TASAKA - 1.3.2^20250109git2d94c3c8-1 -- Update to the latest git - -* Wed Dec 25 2024 Mamoru TASAKA - 1.3.2^20241221git37456d7d-1 -- Update to the latest git -- Restore libfm.so ABI (bug 2333955) - -* Thu Dec 19 2024 Mamoru TASAKA - 1.3.2^20241216gitfb651b87-1 -- Update to the latest git - -* Fri Dec 06 2024 Mamoru TASAKA - 1.3.2^20241203gitcea66071-1 -- Update to the latest git - -* Sun Nov 10 2024 Mamoru TASAKA - 1.3.2^20241107gitd9935ec1-1 -- Update to the latest git - -* Sun Aug 25 2024 Mamoru TASAKA - 1.3.2^20240823git4d2f7b41-1 -- Update to the latest git - -* Tue Aug 13 2024 Mamoru TASAKA - 1.3.2^20240812gitfbcd1833-1 -- Update to the latest git - -* Thu Jul 18 2024 Mamoru TASAKA - 1.3.2^20240714gitee33947e-1 -- Update to the latest git (20240714gitee33947e) - -* Tue Jun 04 2024 Mamoru TASAKA - 1.3.2^20230916git5346a539-3 -- Ignore po/ directory make check error with autoconf 2.72 - -* Tue May 14 2024 Mamoru TASAKA - 1.3.2^20230916git5346a539-2 -- Restore timestamps for git ls files - -* Tue Feb 27 2024 Mamoru TASAKA - 1.3.2^20230916git5346a539-1 -- Update to the latest git (20230916git5346a539) - -* Fri Feb 23 2024 Mamoru TASAKA - 1.3.2-8 -- Handle gcc14 -Werror=incompatible-pointer-types -- Make vala regenerate C source related to -Werror=incompatible-pointer-types - workaround for vala source - -* Thu Jan 25 2024 Fedora Release Engineering - 1.3.2-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 1.3.2-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Mamoru TASAKA - 1.3.2-5 -- Change -Wincompatible-pointer-types from error to warning - -* Mon Dec 11 2023 Mamoru TASAKA - 1.3.2-4 -- SPDX migration - -* Thu Jul 20 2023 Fedora Release Engineering - 1.3.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Thu Jan 19 2023 Fedora Release Engineering - 1.3.2-2.3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Jul 21 2022 Fedora Release Engineering - 1.3.2-2.2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jan 20 2022 Fedora Release Engineering - 1.3.2-2.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Thu Oct 28 2021 Mamoru TASAKA - 1.3.2-2 -- Make fm_config_load_from_key_file don't replace string key value - when subsequent config file does not contain such key but previous key had - (related to bug 2011471) - -* Thu Jul 22 2021 Fedora Release Engineering - 1.3.2-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Sun Feb 7 2021 Mamoru TASAKA - 1.3.2-1 -- 1.3.2 release - -* Thu Feb 4 2021 Mamoru TASAKA - 1.3.1-4.D20210202git54cd5fc -- Update to the latest git - -* Mon Feb 1 2021 Mamoru TASAKA - 1.3.1-3.D20210129git1d79967 -- Update to the latest git - -* Tue Jan 26 2021 Fedora Release Engineering - 1.3.1-2.D20200401git8914a52.2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Tue Jul 28 2020 Fedora Release Engineering - 1.3.1-2.D20200401git8914a52.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Apr 8 2020 Mamoru TASAKA - 1.3.1-2.D20200401git8914a52 -- Update to the latest git - -* Wed Jan 29 2020 Fedora Release Engineering - 1.3.1-1.3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Thu Jul 25 2019 Fedora Release Engineering - 1.3.1-1.2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Fri Feb 01 2019 Fedora Release Engineering - 1.3.1-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Wed Dec 19 2018 Mamoru TASAKA - 1.3.1-1 -- 1.3.1 release - -* Fri Jul 13 2018 Fedora Release Engineering - 1.3.0.2-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Sun Apr 29 2018 Mamoru TASAKA - 1.3.0.2-1 -- 1.3.0.2 release - -* Wed Feb 07 2018 Fedora Release Engineering - 1.2.5-5.gitD20171230.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Tue Jan 2 2018 Mamoru TASAKA - 1.2.5-5.gitD20171230 -- Better cherry-pick description -- Backport one more fixes - * Sat Dec 30 2017 Mamoru TASAKA - 1.2.5-4.gitD20171230 - Backport various fixes from master to 1.2.5 - Use bare repository directly diff --git a/sources b/sources index 6e2ccab..14d381d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libfm-20251217T2335.tar.gz) = 22310c122892588d23196b21e4e8e251fb83a49a6e8d0bd86abdc93e20d427d6f81f738f3fb8500c0aaf7d6ff7be5752329435b80ce36f5aa5c42353ab0e1864 +SHA512 (libfm-20171230T1949.tar.gz) = bd642e621093f9c29aaf5c535f83ed728d45c2f81c0e05ccaea15478044fcafc64e25e5949dd6dbab2406705629afef52f851f866d4bd97fd8d7a0e7da9e16dd