x11-misc/shared-mime-info: Sync with Gentoo

It's from Gentoo commit 6d7a8c0d18b2df918f4f775fde283c49b008011c.
This commit is contained in:
Krzesimir Nowak 2024-08-08 13:51:29 +02:00
parent 654a20ea7a
commit dc8d3869e7
11 changed files with 694 additions and 134 deletions

View File

@ -1 +1,5 @@
DIST shared-mime-info-2.1.tar.xz 5202496 BLAKE2B e8dfc7efe78feb5a38c8115a2b332f46c3dac2f89dffad0834fa7b77560b3ef528e779ab9e42822288f85d8c434fd590859db682f3f99494aa6a4387c985e912 SHA512 87e308281e83c4cf889594f7c2e8dcb4d0d0d3910124c3816fdb886ba7d6113b2581711adcb17032b47f9b8d8b7001fab58daa52b7da7c0ef87915e341d6f1b0 DIST shared-mime-info-2.2.tar.gz 7064139 BLAKE2B 5e791893a60d64a8a1d421c1fabb5e214c6e34ae975d232a9d695b998e8e9aafb6449e858fd845feb120e170bf7c77f70c1fc23e3d4cf8e7c49c6e92418cab96 SHA512 490d96daf4214ab6ac537761b67f3ff4716b95d7ea3fedd2e2ab7b0b02d946acad49790a25efcb5e949551dc4c39ba08911e59f06b198b61dcb1bc44799a2b2e
DIST shared-mime-info-2.3.tar.bz2 6643480 BLAKE2B 2a3adc0568d1be5a17e5a1533f3c4620c6f9d97069ad9e0a0b26ac241c7b14f7d3b9200534df7e1c2295a561d5e049ce8edf8a1e96d2f4e2040508545172a351 SHA512 f1959933e93373ee6939b289d0c3c35d527ce6803865558e4a8bcb5a0183df2fc1148bbf58bfe9a97342e7125f2e0e39ac5dd3bae998510396d9b6c96a330762
DIST shared-mime-info-2.4.tar.bz2 7096347 BLAKE2B 25ff086e4962f5ab0cb2b7155df02be4af7af63dd0267500b2b12b802680bbae04b9ed252ef5a004d0175f6b48956c5e4b9738af9ab5d2fa76a7a0b6eac067ad SHA512 712f414e80919bf2a0f5083ced44c54a350948a526850466a6e9f35365dcfd97fad8bcdbb29945de2715a8f9b70a108e931c8500209a4d6e3dddf97af02771cb
DIST xdgmime-179296748e92bd91bf531656632a1056307fb7b7.tar.bz2 28123 BLAKE2B ea107dba0819027e4a0a486db00e76f50a4e32e8e84f366b81490e213456e2c7e1c4a92cc4f92173dd6f94f257455bdcb77e3eb7d0ce8fb699c948d2d5b01f0d SHA512 efccff2672efb3ff0e44e83cfbaf6e2b926146e4a9d6132b14e2d7a88d602af340b3948793306ce5f720ac8b09e5d37d3b356a0cc269e8240b382558c9a3cf10
DIST xdgmime-92f6a09fda2b23c2ab95cede8eb0612ca96bd0f7.tar.gz 32703 BLAKE2B 865ff57c566b60fb2bd6cb37e259800ee72fb4b9f2d135db46e9a40206946677a7b50bfb8f13d9ce1493bac972e8a5230d7caa833733f3a8d8631e844a648436 SHA512 90abe20483d5ae2131d18740fffbc57c94470be99e9ea1b04e13bffaf3dda4aa9145cb92bb4defe0a655c0bdbd630aaa325e7a9095b9599faebb751699b9cdd8

View File

@ -1,82 +0,0 @@
From 5a406b06792e26a83c7346b3c2443c0bd8d4cdb2 Mon Sep 17 00:00:00 2001
From: Eli Schwartz <eschwartz@archlinux.org>
Date: Mon, 8 Nov 2021 18:22:47 -0500
Subject: [PATCH] migrate from custom itstool to builtin msgfmt for creating
translated XML
gettext upstream has supported this for a very long time (since 0.19.7
via commit b3c2a5a242c36fbbaa0c5b17f975d6c638598a23, released in 2015),
and itstool is (mostly) a legacy of the time before gettext had proper
support for these sorts of use cases.
This is similar to the state of intltool, which is described at
https://wiki.gnome.org/MigratingFromIntltoolToGettext
During the port from autotools to meson, the legacy use of itstool was
faithfully translated to meson in the only way possible: by jumping
through hoops to run ninja inside ninja in order to generate the .mo
files for itstool, because meson's i18n module used a flawed design and
there was no "real" target to create those files, only a .PHONY
run_target which other rules cannot depend on.
Although meson 0.60.0 added support for real targets for the built .mo
files, this changed the rules for output filenames, breaking the script.
But msgfmt does not care, and anyways comes with builtin meson functions
for convenient use with XML files. So let's take this opportunity to
drop legacy dependencies and use the modern, builtin tooling, which
fixes this bug as a side effect.
Fixes #170
---
.gitlab-ci.yml | 2 --
README.md | 2 +-
data/freedesktop_generate.sh | 12 ------------
data/meson.build | 16 +++++-----------
meson.build | 1 -
5 files changed, 6 insertions(+), 27 deletions(-)
delete mode 100755 data/freedesktop_generate.sh
diff --git a/data/meson.build b/data/meson.build
index 24361c9..09ed7a9 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -1,18 +1,12 @@
install_man('update-mime-database.1')
-freedesktop_org_xml = custom_target('freedesktop.org.xml',
- input : files(
- 'freedesktop.org.xml.in',
- 'its/shared-mime-info.its',
- 'its/shared-mime-info.loc',
- ),
+freedesktop_org_xml = i18n.merge_file(
+ input: 'freedesktop.org.xml.in',
output: 'freedesktop.org.xml',
- command: [
- find_program('freedesktop_generate.sh'),
- meson.source_root(),
- meson.build_root()
- ],
+ data_dirs: '.',
+ po_dir: '../po',
+ type: 'xml',
install: true,
install_dir: get_option('datadir') / 'mime' / 'packages',
)
diff --git a/meson.build b/meson.build
index 0d08c8a..60f17ae 100644
--- a/meson.build
+++ b/meson.build
@@ -20,7 +20,6 @@
###############################################################################
# Find tools
-itstool = find_program('itstool')
xmllint = find_program('xmllint')
xmlto = find_program('xmlto')
--
GitLab

View File

@ -0,0 +1,38 @@
https://bugs.gentoo.org/915859
https://gitlab.freedesktop.org/xdg/shared-mime-info/-/commit/12a3a6b1141c704fc594379af1808bb9008d588c
From 12a3a6b1141c704fc594379af1808bb9008d588c Mon Sep 17 00:00:00 2001
From: Tobias Mayer <tobim@fastmail.fm>
Date: Sun, 8 Oct 2023 00:11:49 +0200
Subject: [PATCH] Fix string literal concatenation
Clang is not able to disambiguate between multiple string literatals
and C++11 user defined literals. Spaces help.
---
src/update-mime-database.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/update-mime-database.cpp b/src/update-mime-database.cpp
index 733ba063..29d82a9d 100644
--- a/src/update-mime-database.cpp
+++ b/src/update-mime-database.cpp
@@ -2158,7 +2158,7 @@ static void check_in_path_xdg_data(const char *mime_path)
env = getenv("XDG_DATA_DIRS");
if (!env)
- env = "/usr/local/share/"PATH_SEPARATOR"/usr/share/";
+ env = "/usr/local/share/" PATH_SEPARATOR "/usr/share/";
dirs = g_strsplit(env, PATH_SEPARATOR, 0);
g_return_if_fail(dirs != NULL);
for (n = 0; dirs[n]; n++)
@@ -2170,7 +2170,7 @@ static void check_in_path_xdg_data(const char *mime_path)
dirs[n] = g_build_filename(g_get_home_dir(), ".local",
"share", NULL);
n++;
-
+
for (i = 0; i < n; i++)
{
if (stat(dirs[i], &dir_info) == 0 &&
--
GitLab

View File

@ -0,0 +1,55 @@
https://gitlab.freedesktop.org/xdg/shared-mime-info/-/commit/7499ac1a85b2487b94e315e6b55c34bcf220295f
From 7499ac1a85b2487b94e315e6b55c34bcf220295f Mon Sep 17 00:00:00 2001
From: Tobias Mayer <tobim@fastmail.fm>
Date: Sat, 7 Oct 2023 23:45:47 +0200
Subject: [PATCH] Fix false positive fdatasync detection on darwin
The `has_function` feature in meson uses different detection methods
depending on the contents of the `prefix` kwarg [1]:
* if it contains `#include` directives it will copy the prefix into
the test code and check if it compiles
* if it doesn't contain an include or isn't specified, `has_function`
will forward declare the function and test for it's existence by
trying to link it to the default libraries
The latter approach wrongly succeeds for `fdatasync` on darwin because
the linker binds the function to a system call of the same name. Note
that this result really is wrong because that system call has not
the expected semantics of `fdatasync`.
By adding an include for `unistd.h` we can get meson to use the
first approach and the detection fails.
Note that this has gone unnoticed so far because only recent versions
of clang (the default compiler on darwin) started to treat implicit
function declarations as an error.
[1] https://github.com/mesonbuild/meson/blob/583d2815d1a130227f0f4db47e4ab2e80ebb6a61/mesonbuild/compilers/mixins/clike.py#L839-L846
Fixes #211
---
meson.build | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/meson.build b/meson.build
index 1780c443..7998a51b 100644
--- a/meson.build
+++ b/meson.build
@@ -49,12 +49,7 @@ endif
###############################################################################
# Dependencies
-check_functions = [
- 'fdatasync',
-]
-foreach function : check_functions
- config.set('HAVE_'+function.to_upper(), cc.has_function(function))
-endforeach
+config.set('HAVE_FDATASYNC', cc.has_function('fdatasync', prefix: '#include <unistd.h>'))
if get_option('build-translations')
--
GitLab

View File

@ -0,0 +1,282 @@
https://gitlab.freedesktop.org/xdg/shared-mime-info/-/commit/157c16b09f54741aefbc4be6a3507455f0378389
From 157c16b09f54741aefbc4be6a3507455f0378389 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbappai@gmail.com>
Date: Sun, 8 Oct 2023 13:26:43 +0000
Subject: [PATCH] Fix missing sentinel warning with clang
This fixes the compiler warnings similar as following.
../src/update-mime-database.cpp:393:50: warning: missing sentinel in function call [-Wsentinel]
393 | g_strconcat(namespaceURI, " ", localName, NULL),
| ^
| , nullptr
---
src/update-mime-database.cpp | 58 ++++++++++++++++++------------------
1 file changed, 29 insertions(+), 29 deletions(-)
diff --git a/src/update-mime-database.cpp b/src/update-mime-database.cpp
index 29d82a9d..7838a0eb 100644
--- a/src/update-mime-database.cpp
+++ b/src/update-mime-database.cpp
@@ -390,7 +390,7 @@ static void add_namespace(Type *type, const char *namespaceURI,
}
g_hash_table_insert(namespace_hash,
- g_strconcat(namespaceURI, " ", localName, NULL),
+ g_strconcat(namespaceURI, " ", localName, nullptr),
type);
}
@@ -1023,7 +1023,7 @@ static void write_out_type(gpointer key, gpointer value, gpointer data)
char *lower;
lower = g_ascii_strdown(type->media, -1);
- media = g_strconcat(mime_dir, "/", lower, NULL);
+ media = g_strconcat(mime_dir, "/", lower, nullptr);
g_free(lower);
#ifdef _WIN32
fs::create_directory(media);
@@ -1032,7 +1032,7 @@ static void write_out_type(gpointer key, gpointer value, gpointer data)
#endif
lower = g_ascii_strdown(type->subtype, -1);
- filename = g_strconcat(media, "/", lower, ".xml.new", NULL);
+ filename = g_strconcat(media, "/", lower, ".xml.new", nullptr);
g_free(lower);
g_free(media);
media = NULL;
@@ -1622,7 +1622,7 @@ static Magic *magic_new(xmlNode *node, Type *type, GError **error)
magic_free(magic);
magic = NULL;
(*error)->message = g_strconcat(
- _("Error in <match> element: "), old, NULL);
+ _("Error in <match> element: "), old, nullptr);
g_free(old);
} else if (magic->matches == NULL) {
magic_free(magic);
@@ -1843,7 +1843,7 @@ static TreeMagic *tree_magic_new(xmlNode *node, Type *type, GError **error)
tree_magic_free(magic);
magic = NULL;
(*error)->message = g_strconcat(
- _("Error in <treematch> element: "), old, NULL);
+ _("Error in <treematch> element: "), old, nullptr);
g_free(old);
}
}
@@ -1960,7 +1960,7 @@ static void delete_old_types(const gchar *mime_dir)
for (i = 0; i < G_N_ELEMENTS(media_types); i++)
{
- const fs::path media_dir = g_strconcat(mime_dir, "/", media_types[i], NULL);
+ const fs::path media_dir = g_strconcat(mime_dir, "/", media_types[i], nullptr);
if (!fs::is_directory(fs::status(media_dir)))
continue;
@@ -1973,13 +1973,13 @@ static void delete_old_types(const gchar *mime_dir)
continue;
char *type_name = g_strconcat(media_types[i], "/",
- dir_entry.path().filename().string().c_str(), NULL);
+ dir_entry.path().filename().string().c_str(), nullptr);
type_name[strlen(type_name) - 4] = '\0';
if (!g_hash_table_lookup(types, type_name))
{
char *path;
path = g_strconcat(mime_dir, "/",
- type_name, ".xml", NULL);
+ type_name, ".xml", nullptr);
#if 0
g_warning("Removing old info for type %s",
path);
@@ -2002,7 +2002,7 @@ static void add_ns(gpointer key, gpointer value, gpointer data)
Type *type = (Type *) value;
g_ptr_array_add(lines, g_strconcat(ns, " ", type->media,
- "/", type->subtype, "\n", NULL));
+ "/", type->subtype, "\n", nullptr));
}
/* Write all the collected namespace rules to 'XMLnamespaces' */
@@ -2038,7 +2038,7 @@ static void write_subclass(gpointer key, gpointer value, gpointer data)
for (l = list; l; l = l->next)
{
- line = g_strconcat (static_cast<const gchar *>(key), " ", l->data, "\n", NULL);
+ line = g_strconcat (static_cast<const gchar *>(key), " ", l->data, "\n", nullptr);
fwrite(line, 1, strlen(line), stream);
g_free (line);
}
@@ -2061,7 +2061,7 @@ static void add_alias(gpointer key, gpointer value, gpointer data)
g_ptr_array_add(lines, g_strconcat(alias, " ", type->media,
"/", type->subtype, "\n",
- NULL));
+ nullptr));
}
/* Write all the collected aliases */
@@ -2092,7 +2092,7 @@ static void add_type(gpointer key, gpointer value, gpointer data)
{
GPtrArray *lines = (GPtrArray *) data;
- g_ptr_array_add(lines, g_strconcat((char *)key, "\n", NULL));
+ g_ptr_array_add(lines, g_strconcat((char *)key, "\n", nullptr));
}
/* Write all the collected types */
@@ -2127,7 +2127,7 @@ static void write_one_icon(gpointer key, gpointer value, gpointer data)
FILE *stream = (FILE *)data;
char *line;
- line = g_strconcat (mimetype, ":", iconname, "\n", NULL);
+ line = g_strconcat (mimetype, ":", iconname, "\n", nullptr);
fwrite(line, 1, strlen(line), stream);
g_free (line);
}
@@ -2168,7 +2168,7 @@ static void check_in_path_xdg_data(const char *mime_path)
dirs[n] = g_strdup(env);
else
dirs[n] = g_build_filename(g_get_home_dir(), ".local",
- "share", NULL);
+ "share", nullptr);
n++;
for (i = 0; i < n; i++)
@@ -3588,7 +3588,7 @@ newest_mtime(const char *packagedir)
while ((name = g_dir_read_name(dir))) {
char *path;
- path = g_build_filename(packagedir, name, NULL);
+ path = g_build_filename(packagedir, name, nullptr);
retval = g_stat(path, &statbuf);
g_free(path);
if (retval < 0)
@@ -3609,7 +3609,7 @@ is_cache_up_to_date (const char *mimedir, const char *packagedir)
char *mimeversion;
int retval;
- mimeversion = g_build_filename(mimedir, "/version", NULL);
+ mimeversion = g_build_filename(mimedir, "/version", nullptr);
retval = g_stat(mimeversion, &version_stat);
g_free(mimeversion);
if (retval < 0)
@@ -3694,7 +3694,7 @@ int main(int argc, char **argv)
}
}
- package_dir = g_strconcat(mime_dir, "/packages", NULL);
+ package_dir = g_strconcat(mime_dir, "/packages", nullptr);
if (!fs::exists(mime_dir) && !fs::is_directory(fs::status(mime_dir)))
{
@@ -3747,7 +3747,7 @@ int main(int argc, char **argv)
g_hash_table_foreach(globs_hash, collect_glob2, &glob_list);
glob_list = g_list_sort(glob_list, (GCompareFunc)compare_glob_by_weight);
- globs_path = g_strconcat(mime_dir, "/globs.new", NULL);
+ globs_path = g_strconcat(mime_dir, "/globs.new", nullptr);
globs = fopen_gerror(globs_path, error);
if (!globs)
goto out;
@@ -3761,7 +3761,7 @@ int main(int argc, char **argv)
goto out;
g_free(globs_path);
- globs_path = g_strconcat(mime_dir, "/globs2.new", NULL);
+ globs_path = g_strconcat(mime_dir, "/globs2.new", nullptr);
globs = fopen_gerror(globs_path, error);
if (!globs)
goto out;
@@ -3782,7 +3782,7 @@ int main(int argc, char **argv)
FILE *stream;
char *magic_path;
int i;
- magic_path = g_strconcat(mime_dir, "/magic.new", NULL);
+ magic_path = g_strconcat(mime_dir, "/magic.new", nullptr);
stream = fopen_gerror(magic_path, error);
if (!stream)
goto out;
@@ -3807,7 +3807,7 @@ int main(int argc, char **argv)
FILE *stream;
char *ns_path;
- ns_path = g_strconcat(mime_dir, "/XMLnamespaces.new", NULL);
+ ns_path = g_strconcat(mime_dir, "/XMLnamespaces.new", nullptr);
stream = fopen_gerror(ns_path, error);
if (!stream)
goto out;
@@ -3823,7 +3823,7 @@ int main(int argc, char **argv)
FILE *stream;
char *path;
- path = g_strconcat(mime_dir, "/subclasses.new", NULL);
+ path = g_strconcat(mime_dir, "/subclasses.new", nullptr);
stream = fopen_gerror(path, error);
if (!stream)
goto out;
@@ -3839,7 +3839,7 @@ int main(int argc, char **argv)
FILE *stream;
char *path;
- path = g_strconcat(mime_dir, "/aliases.new", NULL);
+ path = g_strconcat(mime_dir, "/aliases.new", nullptr);
stream = fopen_gerror(path, error);
if (!stream)
goto out;
@@ -3855,7 +3855,7 @@ int main(int argc, char **argv)
FILE *stream;
char *path;
- path = g_strconcat(mime_dir, "/types.new", NULL);
+ path = g_strconcat(mime_dir, "/types.new", nullptr);
stream = fopen_gerror(path, error);
if (!stream)
goto out;
@@ -3871,7 +3871,7 @@ int main(int argc, char **argv)
FILE *stream;
char *icon_path;
- icon_path = g_strconcat(mime_dir, "/generic-icons.new", NULL);
+ icon_path = g_strconcat(mime_dir, "/generic-icons.new", nullptr);
stream = fopen_gerror(icon_path, error);
if (!stream)
goto out;
@@ -3887,7 +3887,7 @@ int main(int argc, char **argv)
FILE *stream;
char *icon_path;
- icon_path = g_strconcat(mime_dir, "/icons.new", NULL);
+ icon_path = g_strconcat(mime_dir, "/icons.new", nullptr);
stream = fopen_gerror(icon_path, error);
if (!stream)
goto out;
@@ -3903,7 +3903,7 @@ int main(int argc, char **argv)
FILE *stream;
char *path;
int i;
- path = g_strconcat(mime_dir, "/treemagic.new", NULL);
+ path = g_strconcat(mime_dir, "/treemagic.new", nullptr);
stream = fopen_gerror(path, error);
if (!stream)
goto out;
@@ -3928,7 +3928,7 @@ int main(int argc, char **argv)
FILE *stream;
char *path;
- path = g_strconcat(mime_dir, "/mime.cache.new", NULL);
+ path = g_strconcat(mime_dir, "/mime.cache.new", nullptr);
stream = fopen_gerror(path, error);
if (!stream)
goto out;
@@ -3944,7 +3944,7 @@ int main(int argc, char **argv)
FILE *stream;
char *path;
- path = g_strconcat(mime_dir, "/version.new", NULL);
+ path = g_strconcat(mime_dir, "/version.new", nullptr);
stream = fopen_gerror(path, error);
if (!stream)
goto out;
--
GitLab

View File

@ -0,0 +1,20 @@
https://bugs.gentoo.org/917561
https://gitlab.freedesktop.org/xdg/shared-mime-info/-/issues/219
https://gitlab.freedesktop.org/xdg/shared-mime-info/-/commit/c918fe77e255150938e83a6aec259f153d303573
From c918fe77e255150938e83a6aec259f153d303573 Mon Sep 17 00:00:00 2001
From: David Faure <faure@kde.org>
Date: Sun, 19 Nov 2023 11:18:11 +0100
Subject: [PATCH] Fix build with libxml2-2.12.0 and clang-17
Fixes #219
--- a/src/test-subclassing.c
+++ b/src/test-subclassing.c
@@ -1,4 +1,5 @@
#include <libxml/tree.h>
+#include <libxml/parser.h>
#include <stdio.h>
#include <string.h>
--
GitLab

View File

@ -4,4 +4,7 @@
<maintainer type="project"> <maintainer type="project">
<email>freedesktop-bugs@gentoo.org</email> <email>freedesktop-bugs@gentoo.org</email>
</maintainer> </maintainer>
<upstream>
<remote-id type="freedesktop-gitlab">xdg/shared-mime-info</remote-id>
</upstream>
</pkgmetadata> </pkgmetadata>

View File

@ -1,51 +0,0 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
HASH=0ee50652091363ab0d17e335e5e74fbe # don't forget to update on version bumps
inherit meson xdg-utils
DESCRIPTION="The Shared MIME-info Database specification"
HOMEPAGE="https://gitlab.freedesktop.org/xdg/shared-mime-info"
SRC_URI="https://gitlab.freedesktop.org/xdg/${PN}/uploads/${HASH}/${P}.tar.xz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
# requires installed xdgmime binary
RESTRICT="test"
BDEPEND="
app-text/docbook-xml-dtd:4.1.2
app-text/xmlto
sys-devel/gettext
virtual/pkgconfig
"
RDEPEND="
dev-libs/glib:2
dev-libs/libxml2
"
DEPEND="${RDEPEND}"
DOCS=( HACKING.md NEWS README.md )
PATCHES=(
"${FILESDIR}/shared-mime-info-2.1-itstool.patch"
)
src_install() {
meson_src_install
# in prefix, install an env.d entry such that prefix patch is used/added
if use prefix; then
echo "XDG_DATA_DIRS=\"${EPREFIX}/usr/share\"" > "${T}"/50mimeinfo || die
doenvd "${T}"/50mimeinfo
fi
}
pkg_postinst() {
use prefix && export XDG_DATA_DIRS="${EPREFIX}"/usr/share
xdg_mimeinfo_database_update
}

View File

@ -0,0 +1,93 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit meson toolchain-funcs xdg-utils
# Keep an eye on https://gitlab.freedesktop.org/xdg/xdgmime/-/merge_requests/25!
# xdgmime is used for tests but doesn't make releases nowadays; do what
# Fedora does and use a snapshot so we can run the test suite.
MY_XDGMIME_COMMIT="92f6a09fda2b23c2ab95cede8eb0612ca96bd0f7"
DESCRIPTION="The Shared MIME-info Database specification"
HOMEPAGE="https://gitlab.freedesktop.org/xdg/shared-mime-info"
SRC_URI="https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/${PV}/${P}.tar.gz"
SRC_URI+=" test? ( https://gitlab.freedesktop.org/xdg/xdgmime/-/archive/${MY_XDGMIME_COMMIT}/xdgmime-${MY_XDGMIME_COMMIT}.tar.gz )"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
BDEPEND="
app-text/docbook-xml-dtd:4.1.2
app-text/xmlto
sys-devel/gettext
virtual/pkgconfig
"
RDEPEND="
dev-libs/glib:2
dev-libs/libxml2
"
DEPEND="${RDEPEND}"
DOCS=( HACKING.md NEWS README.md )
src_prepare() {
default
if use test ; then
# Drop empty dir (it's a submodule in upstream git repo)
rm -r "${S}"/xdgmime || die
# Lead Meson to our snapshot
ln -s "${WORKDIR}"/xdgmime-${MY_XDGMIME_COMMIT} xdgmime || die
# Don't break parallel make
sed -i -e 's:make:$(MAKE):' xdgmime/Makefile || die
fi
}
src_configure() {
# We have to trick Meson into thinking it's there now so that
# we can run meson then emake to build xdgmime later, rather than
# building before running meson which would mean doing something
# unexpected in src_configure.
if use test ; then
# Paths from https://gitlab.freedesktop.org/xdg/shared-mime-info/-/blob/master/meson.build#L29
touch xdgmime/src/{print,test}-mime{,-data} || die
chmod +x xdgmime/src/{print,test}-mime{,-data} || die
fi
local emesonargs=(
-Dbuild-tools=true
-Dupdate-mimedb=false
)
meson_src_configure
}
src_compile() {
if use test ; then
tc-export CC
# xdgmime only has a homebrew Makefile
emake -C xdgmime
fi
meson_src_compile
}
src_install() {
meson_src_install
# in prefix, install an env.d entry such that prefix patch is used/added
if use prefix; then
echo "XDG_DATA_DIRS=\"${EPREFIX}/usr/share\"" > "${T}"/50mimeinfo || die
doenvd "${T}"/50mimeinfo
fi
}
pkg_postinst() {
use prefix && export XDG_DATA_DIRS="${EPREFIX}"/usr/share
xdg_mimeinfo_database_update
}

View File

@ -0,0 +1,100 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit meson xdg-utils
# xdgmime is used for tests but doesn't make releases nowadays; do what
# Fedora does and use a snapshot so we can run the test suite.
MY_XDGMIME_COMMIT="179296748e92bd91bf531656632a1056307fb7b7"
DESCRIPTION="The Shared MIME-info Database specification"
HOMEPAGE="https://gitlab.freedesktop.org/xdg/shared-mime-info"
SRC_URI="https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/${PV}/${P}.tar.bz2"
SRC_URI+=" test? ( https://gitlab.freedesktop.org/xdg/xdgmime/-/archive/${MY_XDGMIME_COMMIT}/xdgmime-${MY_XDGMIME_COMMIT}.tar.bz2 )"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
BDEPEND="
app-text/docbook-xml-dtd:4.1.2
app-text/xmlto
sys-devel/gettext
virtual/pkgconfig
"
RDEPEND="
dev-libs/glib:2
dev-libs/libxml2
"
DEPEND="${RDEPEND}"
DOCS=( HACKING.md NEWS README.md )
PATCHES=(
"${FILESDIR}"/${P}-clang-string-literal.patch
"${FILESDIR}"/${P}-fsync-detection.patch
"${FILESDIR}"/${P}-wformat.patch
)
src_prepare() {
default
if use test ; then
# Drop empty dir (it's a submodule in upstream git repo)
rm -r "${S}"/xdgmime || die
# Lead Meson to our snapshot
mkdir "${WORKDIR}"/xdgmime_build || die
ln -s "${WORKDIR}"/xdgmime_build xdgmime || die
# Don't break parallel make
#sed -i -e 's:make:$(MAKE):' xdgmime/Makefile || die
fi
}
src_configure() {
# We have to trick Meson into thinking it's there now so that
# we can run meson then emake to build xdgmime later, rather than
# building before running meson which would mean doing something
# unexpected in src_configure.
if use test ; then
# Paths from https://gitlab.freedesktop.org/xdg/shared-mime-info/-/blob/master/meson.build#L29
mkdir xdgmime/src || die
touch xdgmime/src/{print,test}-mime{,-data} || die
chmod +x xdgmime/src/{print,test}-mime{,-data} || die
BUILD_DIR="${WORKDIR}"/xdgmime_build EMESON_SOURCE="${WORKDIR}"/xdgmime-${MY_XDGMIME_COMMIT} meson_src_configure
fi
local emesonargs=(
-Dbuild-tools=true
-Dupdate-mimedb=false
$(meson_use test build-tests)
)
meson_src_configure
}
src_compile() {
if use test ; then
meson_src_compile -C "${WORKDIR}"/xdgmime_build
fi
meson_src_compile
}
src_install() {
meson_src_install
# in prefix, install an env.d entry such that prefix patch is used/added
if use prefix; then
echo "XDG_DATA_DIRS=\"${EPREFIX}/usr/share\"" > "${T}"/50mimeinfo || die
doenvd "${T}"/50mimeinfo
fi
}
pkg_postinst() {
use prefix && export XDG_DATA_DIRS="${EPREFIX}"/usr/share
xdg_mimeinfo_database_update
}

View File

@ -0,0 +1,98 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit meson xdg-utils
# xdgmime is used for tests but doesn't make releases nowadays; do what
# Fedora does and use a snapshot so we can run the test suite.
MY_XDGMIME_COMMIT="179296748e92bd91bf531656632a1056307fb7b7"
DESCRIPTION="The Shared MIME-info Database specification"
HOMEPAGE="https://gitlab.freedesktop.org/xdg/shared-mime-info"
SRC_URI="https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/${PV}/${P}.tar.bz2"
SRC_URI+=" test? ( https://gitlab.freedesktop.org/xdg/xdgmime/-/archive/${MY_XDGMIME_COMMIT}/xdgmime-${MY_XDGMIME_COMMIT}.tar.bz2 )"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
BDEPEND="
app-text/docbook-xml-dtd:4.1.2
app-text/xmlto
sys-devel/gettext
virtual/pkgconfig
"
RDEPEND="
dev-libs/glib:2
dev-libs/libxml2
"
DEPEND="${RDEPEND}"
DOCS=( HACKING.md NEWS README.md )
PATCHES=(
"${FILESDIR}"/${P}-libxml2.12.patch
)
src_prepare() {
default
if use test ; then
# Drop empty dir (it's a submodule in upstream git repo)
rm -r "${S}"/xdgmime || die
# Lead Meson to our snapshot
mkdir "${WORKDIR}"/xdgmime_build || die
ln -s "${WORKDIR}"/xdgmime_build xdgmime || die
# Don't break parallel make
#sed -i -e 's:make:$(MAKE):' xdgmime/Makefile || die
fi
}
src_configure() {
# We have to trick Meson into thinking it's there now so that
# we can run meson then emake to build xdgmime later, rather than
# building before running meson which would mean doing something
# unexpected in src_configure.
if use test ; then
# Paths from https://gitlab.freedesktop.org/xdg/shared-mime-info/-/blob/master/meson.build#L29
mkdir xdgmime/src || die
touch xdgmime/src/{print,test}-mime{,-data} || die
chmod +x xdgmime/src/{print,test}-mime{,-data} || die
BUILD_DIR="${WORKDIR}"/xdgmime_build EMESON_SOURCE="${WORKDIR}"/xdgmime-${MY_XDGMIME_COMMIT} meson_src_configure
fi
local emesonargs=(
-Dbuild-tools=true
-Dupdate-mimedb=false
$(meson_use test build-tests)
)
meson_src_configure
}
src_compile() {
if use test ; then
meson_src_compile -C "${WORKDIR}"/xdgmime_build
fi
meson_src_compile
}
src_install() {
meson_src_install
# in prefix, install an env.d entry such that prefix patch is used/added
if use prefix; then
echo "XDG_DATA_DIRS=\"${EPREFIX}/usr/share\"" > "${T}"/50mimeinfo || die
doenvd "${T}"/50mimeinfo
fi
}
pkg_postinst() {
use prefix && export XDG_DATA_DIRS="${EPREFIX}"/usr/share
xdg_mimeinfo_database_update
}