pull in upstream support for new -n option, re-enable fsync default on (#1052173)
This commit is contained in:
parent
7ecbd4c206
commit
bcb66269ca
105
0013-Skip-mime-database-update-if-packages-are-older-than.patch
Normal file
105
0013-Skip-mime-database-update-if-packages-are-older-than.patch
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
From 4b3f9f774da8859d4f1f7e991b12832d6c09b63e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Bastien Nocera <hadess@hadess.net>
|
||||||
|
Date: Fri, 27 Jun 2014 16:57:08 +0200
|
||||||
|
Subject: [PATCH 13/14] Skip mime database update if packages are older than
|
||||||
|
cache
|
||||||
|
|
||||||
|
Check for the mtime of the version file, the last one to be created when
|
||||||
|
updating the database to see against the mtime of the newest packages
|
||||||
|
file.
|
||||||
|
|
||||||
|
If one of the files inside the packages directory is newer than the
|
||||||
|
version file, really update the database.
|
||||||
|
---
|
||||||
|
update-mime-database.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 61 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/update-mime-database.c b/update-mime-database.c
|
||||||
|
index 894ac97..d1849a3 100644
|
||||||
|
--- a/update-mime-database.c
|
||||||
|
+++ b/update-mime-database.c
|
||||||
|
@@ -10,6 +10,7 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <glib.h>
|
||||||
|
#include <glib/gprintf.h>
|
||||||
|
+#include <glib/gstdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <libxml/parser.h>
|
||||||
|
@@ -3538,6 +3539,61 @@ fclose_gerror(FILE *f, GError **error)
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static gint64
|
||||||
|
+newest_mtime(const char *packagedir)
|
||||||
|
+{
|
||||||
|
+ GDir *dir;
|
||||||
|
+ GStatBuf statbuf;
|
||||||
|
+ gint64 mtime = G_MININT64;
|
||||||
|
+ const char *name;
|
||||||
|
+ int retval;
|
||||||
|
+
|
||||||
|
+ retval = g_stat(packagedir, &statbuf);
|
||||||
|
+ if (retval < 0)
|
||||||
|
+ return mtime;
|
||||||
|
+ mtime = statbuf.st_mtime;
|
||||||
|
+
|
||||||
|
+ dir = g_dir_open(packagedir, 0, NULL);
|
||||||
|
+ if (!dir)
|
||||||
|
+ return mtime;
|
||||||
|
+
|
||||||
|
+ while ((name = g_dir_read_name(dir))) {
|
||||||
|
+ char *path;
|
||||||
|
+
|
||||||
|
+ path = g_build_filename(packagedir, name, NULL);
|
||||||
|
+ retval = g_stat(path, &statbuf);
|
||||||
|
+ g_free(path);
|
||||||
|
+ if (retval < 0)
|
||||||
|
+ continue;
|
||||||
|
+ if (statbuf.st_mtime > mtime)
|
||||||
|
+ mtime = statbuf.st_mtime;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ g_dir_close(dir);
|
||||||
|
+ return mtime;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static gboolean
|
||||||
|
+is_cache_up_to_date (const char *mimedir, const char *packagedir)
|
||||||
|
+{
|
||||||
|
+ GStatBuf version_stat;
|
||||||
|
+ gint64 package_mtime;
|
||||||
|
+ char *mimeversion;
|
||||||
|
+ int retval;
|
||||||
|
+
|
||||||
|
+ mimeversion = g_build_filename(mimedir, "/version", NULL);
|
||||||
|
+ retval = g_stat(mimeversion, &version_stat);
|
||||||
|
+ g_free(mimeversion);
|
||||||
|
+ if (retval < 0)
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
+ package_mtime = newest_mtime(packagedir);
|
||||||
|
+ if (package_mtime < 0)
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
+ return version_stat.st_mtime >= package_mtime;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
char *mime_dir = NULL;
|
||||||
|
@@ -3610,6 +3666,11 @@ int main(int argc, char **argv)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (is_cache_up_to_date(mime_dir, package_dir)) {
|
||||||
|
+ g_message ("Skipping mime update as the cache is up-to-date");
|
||||||
|
+ return EXIT_SUCCESS;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
types = g_hash_table_new_full(g_str_hash, g_str_equal,
|
||||||
|
g_free, free_type);
|
||||||
|
globs_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
|
||||||
|
--
|
||||||
|
1.9.3
|
||||||
|
|
89
0014-Add-n-option-to-update-mime-database.patch
Normal file
89
0014-Add-n-option-to-update-mime-database.patch
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
From 29a04be6c9cbaf0865c8b57428b7b7c37fbda4c3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Bastien Nocera <hadess@hadess.net>
|
||||||
|
Date: Fri, 27 Jun 2014 18:25:57 +0200
|
||||||
|
Subject: [PATCH 14/14] Add "-n" option to update-mime-database
|
||||||
|
|
||||||
|
When "-n" is passed, the cache will only be updated if
|
||||||
|
$MIME_DIR/packages or one of the files in that directory is newer
|
||||||
|
than $MIME_DIR/version.
|
||||||
|
|
||||||
|
This is useful for package pre- and post-installation scripts.
|
||||||
|
---
|
||||||
|
update-mime-database.1 | 7 +++++++
|
||||||
|
update-mime-database.c | 10 +++++++---
|
||||||
|
2 files changed, 14 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/update-mime-database.1 b/update-mime-database.1
|
||||||
|
index c9164e1..b18eac3 100644
|
||||||
|
--- a/update-mime-database.1
|
||||||
|
+++ b/update-mime-database.1
|
||||||
|
@@ -16,6 +16,8 @@ update-mime-database \- a program to build the Shared MIME-Info database cache
|
||||||
|
.B \-v
|
||||||
|
| [
|
||||||
|
.B \-V
|
||||||
|
+|
|
||||||
|
+.B \-n
|
||||||
|
]
|
||||||
|
.I MIME-DIR
|
||||||
|
|
||||||
|
@@ -38,6 +40,11 @@ Print out the version information.
|
||||||
|
.TP
|
||||||
|
\fB\-V\fR
|
||||||
|
Be verbose.
|
||||||
|
+.TP
|
||||||
|
+\fB\-n\fR
|
||||||
|
+Only update if \fBMIME-DIR\fR/packages/ or a file in that directory
|
||||||
|
+is newer than \fBMIME-DIR\fR/version. This is useful for package pre-
|
||||||
|
+and post-installation scripts.
|
||||||
|
|
||||||
|
.SH ARGUMENTS
|
||||||
|
.TP
|
||||||
|
diff --git a/update-mime-database.c b/update-mime-database.c
|
||||||
|
index d1849a3..be4aba2 100644
|
||||||
|
--- a/update-mime-database.c
|
||||||
|
+++ b/update-mime-database.c
|
||||||
|
@@ -194,7 +194,7 @@ fatal_gerror (GError *error)
|
||||||
|
|
||||||
|
static void usage(const char *name)
|
||||||
|
{
|
||||||
|
- g_fprintf(stderr, _("Usage: %s [-hvV] MIME-DIR\n"), name);
|
||||||
|
+ g_fprintf(stderr, _("Usage: %s [-hvVn] MIME-DIR\n"), name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_type(gpointer data)
|
||||||
|
@@ -3601,11 +3601,12 @@ int main(int argc, char **argv)
|
||||||
|
int opt;
|
||||||
|
GError *local_error = NULL;
|
||||||
|
GError **error = &local_error;
|
||||||
|
+ gboolean if_newer = FALSE;
|
||||||
|
|
||||||
|
/* Install the filtering log handler */
|
||||||
|
g_log_set_default_handler(g_log_handler, NULL);
|
||||||
|
|
||||||
|
- while ((opt = getopt(argc, argv, "hvV")) != -1)
|
||||||
|
+ while ((opt = getopt(argc, argv, "hvVn")) != -1)
|
||||||
|
{
|
||||||
|
switch (opt)
|
||||||
|
{
|
||||||
|
@@ -3624,6 +3625,9 @@ int main(int argc, char **argv)
|
||||||
|
enabled_log_levels |= G_LOG_LEVEL_MESSAGE
|
||||||
|
| G_LOG_LEVEL_INFO;
|
||||||
|
break;
|
||||||
|
+ case 'n':
|
||||||
|
+ if_newer = TRUE;
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
@@ -3666,7 +3670,7 @@ int main(int argc, char **argv)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (is_cache_up_to_date(mime_dir, package_dir)) {
|
||||||
|
+ if (if_newer && is_cache_up_to_date(mime_dir, package_dir)) {
|
||||||
|
g_message ("Skipping mime update as the cache is up-to-date");
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.9.3
|
||||||
|
|
@ -1,13 +0,0 @@
|
|||||||
diff --git a/update-mime-database.c b/update-mime-database.c
|
|
||||||
index 894ac97..8626702 100644
|
|
||||||
--- a/update-mime-database.c
|
|
||||||
+++ b/update-mime-database.c
|
|
||||||
@@ -943,7 +943,7 @@ sync_enabled(void)
|
|
||||||
|
|
||||||
env = g_getenv("PKGSYSTEM_ENABLE_FSYNC");
|
|
||||||
if (!env)
|
|
||||||
- return TRUE;
|
|
||||||
+ return FALSE;
|
|
||||||
return atoi(env);
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
Summary: Shared MIME information database
|
Summary: Shared MIME information database
|
||||||
Name: shared-mime-info
|
Name: shared-mime-info
|
||||||
Version: 1.3
|
Version: 1.3
|
||||||
Release: 5%{?dist}
|
Release: 6%{?dist}
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
URL: http://freedesktop.org/Software/shared-mime-info
|
URL: http://freedesktop.org/Software/shared-mime-info
|
||||||
@ -24,9 +24,9 @@ Patch0: 0001-Remove-sub-classing-from-OO.o-mime-types.patch
|
|||||||
# https://bugs.freedesktop.org/show_bug.cgi?id=70366#c30
|
# https://bugs.freedesktop.org/show_bug.cgi?id=70366#c30
|
||||||
Patch1: 0007-Split-out-fdatasync-usage.patch
|
Patch1: 0007-Split-out-fdatasync-usage.patch
|
||||||
Patch2: 0008-Disable-fdatasync-usage-if-PKGSYSTEM_ENABLE_FSYNC-is.patch
|
Patch2: 0008-Disable-fdatasync-usage-if-PKGSYSTEM_ENABLE_FSYNC-is.patch
|
||||||
# set PKGSYSTEM_ENABLE_FSYNC default off
|
Patch3: 0013-Skip-mime-database-update-if-packages-are-older-than.patch
|
||||||
#https://bugzilla.redhat.com/show_bug.cgi?id=1052173#c14
|
Patch4: 0014-Add-n-option-to-update-mime-database.patch
|
||||||
Patch3: PKGSYSTEM_ENABLE_FSYNC-default_off.patch
|
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
BuildRequires: libxml2-devel
|
BuildRequires: libxml2-devel
|
||||||
@ -46,19 +46,16 @@ a file. This is generally done by examining the file's name or contents,
|
|||||||
and looking up the correct MIME type in a database.
|
and looking up the correct MIME type in a database.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%autosetup
|
||||||
%patch0 -p1 -b .ooo-zip
|
|
||||||
%patch1 -p1 -b .0007
|
|
||||||
%patch2 -p1 -b .0008
|
|
||||||
%patch3 -p1 -b .PKGSYSTEM_ENABLE_FSYNC-default_off
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
|
||||||
%configure --disable-silent-rules
|
%configure --disable-silent-rules
|
||||||
# make %{?_smp_mflags}
|
# not smp safe, pretty small package anyway
|
||||||
make
|
make
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
# speed build a bit
|
||||||
|
PKGSYSTEM_ENABLE_FSYNC=0 \
|
||||||
make install DESTDIR=$RPM_BUILD_ROOT
|
make install DESTDIR=$RPM_BUILD_ROOT
|
||||||
|
|
||||||
find $RPM_BUILD_ROOT%{_datadir}/mime -type d \
|
find $RPM_BUILD_ROOT%{_datadir}/mime -type d \
|
||||||
@ -76,15 +73,12 @@ cat %SOURCE4 >> $RPM_BUILD_ROOT/%{_datadir}/applications/defaults.list
|
|||||||
## translations are already in the xml file installed
|
## translations are already in the xml file installed
|
||||||
rm -rf $RPM_BUILD_ROOT%{_datadir}/locale/*
|
rm -rf $RPM_BUILD_ROOT%{_datadir}/locale/*
|
||||||
|
|
||||||
%if 0%{?fedora} < 17
|
|
||||||
# f17+ mozilla-firefox.desktop renamed to firefox.desktop (#736558)
|
|
||||||
# defaults.list fixed, handle this exceptional case separately, if at all
|
|
||||||
%endif
|
|
||||||
|
|
||||||
|
|
||||||
%post
|
%post
|
||||||
# Should fail, as it would mean a problem in the mime database
|
touch --no-create %{_datadir}/mime/packages ||:
|
||||||
%{_bindir}/update-mime-database %{_datadir}/mime &> /dev/null
|
|
||||||
|
%posttrans
|
||||||
|
%{_bindir}/update-mime-database -n %{_datadir}/mime &> /dev/null ||:
|
||||||
|
|
||||||
%files -f %{name}.files
|
%files -f %{name}.files
|
||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
@ -98,6 +92,9 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/locale/*
|
|||||||
%{_mandir}/man*/*
|
%{_mandir}/man*/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jun 27 2014 Rex Dieter <rdieter@fedoraproject.org> 1.3-6
|
||||||
|
- pull in upstream support for new -n option, re-enable fsync default on (#1052173)
|
||||||
|
|
||||||
* Thu Jun 26 2014 Rex Dieter <rdieter@fedoraproject.org> 1.3-5
|
* Thu Jun 26 2014 Rex Dieter <rdieter@fedoraproject.org> 1.3-5
|
||||||
- include PKGSYSTEM_ENABLE_FSYNC upstream implementation, except default off (#1052173)
|
- include PKGSYSTEM_ENABLE_FSYNC upstream implementation, except default off (#1052173)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user