diff options
Diffstat (limited to 'app-arch/createrepo_c')
-rw-r--r-- | app-arch/createrepo_c/Manifest | 5 | ||||
-rw-r--r-- | app-arch/createrepo_c/createrepo_c-0.20.1-r1.ebuild | 70 | ||||
-rw-r--r-- | app-arch/createrepo_c/createrepo_c-9999.ebuild | 65 | ||||
-rw-r--r-- | app-arch/createrepo_c/files/createrepo_c-0.20.1-use-gio-instead-of-cp.patch | 229 | ||||
-rw-r--r-- | app-arch/createrepo_c/metadata.xml | 11 |
5 files changed, 379 insertions, 1 deletions
diff --git a/app-arch/createrepo_c/Manifest b/app-arch/createrepo_c/Manifest index a7b7f29efcf7..29cd4f369829 100644 --- a/app-arch/createrepo_c/Manifest +++ b/app-arch/createrepo_c/Manifest @@ -1,4 +1,7 @@ AUX createrepo_c-0.20.1-Include-rpm-rpmstring.h-for-rasprintf.patch 547 BLAKE2B 5d7379d00759d693a1fca50c060b619a4d9c7696c00c8512fc06f52b1c9af34408106954d9dadfd6b88ac6f94e4de6c23cdba4b4a4c97952859ed32b024f315c SHA512 d9b6c315ac6591077b11574699196c7b1c671140f3278c075db6c5c4c46e2fc4b40ca33ced258e7439d0ce7039f422a0b528ba0d490cd04f9312324b001dd6c0 +AUX createrepo_c-0.20.1-use-gio-instead-of-cp.patch 7174 BLAKE2B 0c9c70cb137e749f15cc9b3ed905c09234c29ed6f5062278c542382be34fadec6430c3efe9d5baa0d0f76d9a004167a72caf388281fff621a0639ebf215786e8 SHA512 94e82ff327030ae72eb4f07010ef52b03cb0ac1830b176ce438adfec9c2bbacc94c9661ac362e758489e799dbd9b467799933cb77f1fbf6a7823798c7bbf2311 DIST createrepo_c-0.20.1.tar.gz 614968 BLAKE2B 8eb35c121e1beaa960310d10bfe616799b3a6b13d99f1e8c9d4077975cc929c9f786dec7d26a17d7efbd1859e2e7d8a614147c36a0a82c87f1c1c1a652afa6f3 SHA512 54a2cc7c7cd3f3b9a0c23cd8c136ae1331e7fa7cc995189088e7e6f2276c78b2b84e21c2a2b93f4528b5e9e4018dd6525262c8aaba3bc8a1412a51dfafd101f7 +EBUILD createrepo_c-0.20.1-r1.ebuild 1561 BLAKE2B e54b99c0e37586814d5e140acc121d31cc81c429c15160670b59d731a6d554ae9cb20c0dc8a037dea632a7bd663d230a835ddf9d058b3d7dbbc8931854d6838e SHA512 5c2a53a91d36912eb21cf7822b85fb9256949bb58c5969290ab5e59f71e8226758b58f4cc75ffd41614a329ef57d2949bb45a19e50ecd392ed6d7f3e95a54ae1 EBUILD createrepo_c-0.20.1.ebuild 978 BLAKE2B 0206efeb167f932d0565005e5d8e274d4251adf4dd8d46672a9652906b2f901d459103b3beac7eecf7f79a50d4c81afa19c27b3a989b4f45612f76a281bb7ddd SHA512 18e5a7aab9240fcb8026d0a25709dcccb57fe1c4781895e1e649b673a913b11f8dd7d3d2ff9c8347644707f0a4147bf47d7d99a8ad1a9af36ad3e3e4fe489c26 -MISC metadata.xml 456 BLAKE2B 3a11a7c27b90c9b0fbefa878722da0c6d79a63c6e2f0a913a7ab1b409746cd7ab6c35631d9d19c3b0ed76e20bf02e63d4bff77ae46da0663cd096334bdc7f92b SHA512 65bc8020ece881e15fb1a0c9da195033bc0cdd780508500688ba500eab54359a9aa6f21bb071613c6cf240977ed52f94472c18869df538ac04caa2732fbd1e08 +EBUILD createrepo_c-9999.ebuild 1436 BLAKE2B 4383e35a05f083c7796646afb032d3c77e67aa002941c144ed86727a65f84cafbbc2d999d794220a41eb170b6f29f622f3c8aad2f16e5ad26ba36b5b515d76f8 SHA512 4076a55fa4c0a1fdc5f641453840a6255880f85323c322677ce781648713d586f8e694a5d75d061f57c4e3beb49185c9b98189cc399ab79073976ef658e153b5 +MISC metadata.xml 828 BLAKE2B 13ea8960341f448e8abb558701208a46dd0150ec12080efc456a51949120c46bf7621adb8591d6ed52be7ccee7572d924dfa764209ed442be74eb5b6a9f153db SHA512 9c6dbdad0aff7e4f2d309f1352848f75a4d59f7069bc7b46bc3d013e72d56bad6411051b2763e6dc644e6041ac291422de8afa6a2d4fcb49847f31267cb9f78d diff --git a/app-arch/createrepo_c/createrepo_c-0.20.1-r1.ebuild b/app-arch/createrepo_c/createrepo_c-0.20.1-r1.ebuild new file mode 100644 index 000000000000..9bd81ca8f784 --- /dev/null +++ b/app-arch/createrepo_c/createrepo_c-0.20.1-r1.ebuild @@ -0,0 +1,70 @@ +# Copyright 2020-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="C implementation of createrepo" +HOMEPAGE="https://github.com/rpm-software-management/createrepo_c" +if [[ ${PV} = 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/rpm-software-management/createrepo_c.git" +else + SRC_URI="https://github.com/rpm-software-management/createrepo_c/archive/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" +fi + +LICENSE="GPL-2" +SLOT="0" + +IUSE="legacy test" +RESTRICT="!test? ( test )" + +DEPEND=" + app-arch/bzip2:= + app-arch/drpm + app-arch/rpm + app-arch/xz-utils + app-arch/zchunk + dev-db/sqlite:3 + dev-libs/glib:2 + dev-libs/libxml2 + dev-libs/openssl:= + net-misc/curl + sys-apps/file + sys-libs/libmodulemd + sys-libs/zlib:= +" + +RDEPEND="${DEPEND}" + +PATCHES=( + "${FILESDIR}/${P}-Include-rpm-rpmstring.h-for-rasprintf.patch" + "${FILESDIR}/${P}-use-gio-instead-of-cp.patch" +) + +src_configure() { + local mycmakeargs=( + -DENABLE_DRPM=ON + # As best I can tell, this enables distribution as a wheel. No need for this on gentoo! + -DENABLE_PYTHON=OFF + # Upstream enables some 'Legacy' stuff by default, let's put that behind a USE flag + -DENABLE_LEGACY_WEAKDEPS=$(usex legacy ON OFF) + -DWITH_LEGACY_HASHES=$(usex legacy ON OFF) + -DWITH_LIBMODULEMD=ON + -DWITH_ZCHUNK=ON + ) + + cmake_src_configure +} + +src_compile() { + cmake_src_compile + # Tests have a magic target! + use test && cmake_src_compile tests +} + +src_test() { + "${S}"_build/tests/run_tests.sh || die "Failed to run C library tests" +} diff --git a/app-arch/createrepo_c/createrepo_c-9999.ebuild b/app-arch/createrepo_c/createrepo_c-9999.ebuild new file mode 100644 index 000000000000..da19ee9ac2f3 --- /dev/null +++ b/app-arch/createrepo_c/createrepo_c-9999.ebuild @@ -0,0 +1,65 @@ +# Copyright 2020-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="C implementation of createrepo" +HOMEPAGE="https://github.com/rpm-software-management/createrepo_c" +if [[ ${PV} = 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/rpm-software-management/createrepo_c.git" +else + SRC_URI="https://github.com/rpm-software-management/createrepo_c/archive/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" +fi + +LICENSE="GPL-2" +SLOT="0" + +IUSE="legacy test" +RESTRICT="!test? ( test )" + +DEPEND=" + app-arch/bzip2:= + app-arch/drpm + app-arch/rpm + app-arch/xz-utils + app-arch/zchunk + dev-db/sqlite:3 + dev-libs/glib:2 + dev-libs/libxml2 + dev-libs/openssl:= + net-misc/curl + sys-apps/file + sys-libs/libmodulemd + sys-libs/zlib:= +" + +RDEPEND="${DEPEND}" + +src_configure() { + local mycmakeargs=( + -DENABLE_DRPM=ON + # As best I can tell, this enables distribution as a wheel. No need for this on gentoo! + -DENABLE_PYTHON=OFF + # Upstream enables some 'Legacy' stuff by default, let's put that behind a USE flag + -DENABLE_LEGACY_WEAKDEPS=$(usex legacy ON OFF) + -DWITH_LEGACY_HASHES=$(usex legacy ON OFF) + -DWITH_LIBMODULEMD=ON + -DWITH_ZCHUNK=ON + ) + + cmake_src_configure +} + +src_compile() { + cmake_src_compile + # Tests have a magic target! + use test && cmake_src_compile tests +} + +src_test() { + "${S}"_build/tests/run_tests.sh || die "Failed to run C library tests" +} diff --git a/app-arch/createrepo_c/files/createrepo_c-0.20.1-use-gio-instead-of-cp.patch b/app-arch/createrepo_c/files/createrepo_c-0.20.1-use-gio-instead-of-cp.patch new file mode 100644 index 000000000000..c0b92d6b9994 --- /dev/null +++ b/app-arch/createrepo_c/files/createrepo_c-0.20.1-use-gio-instead-of-cp.patch @@ -0,0 +1,229 @@ +https://github.com/rpm-software-management/createrepo_c/pull/341 +From: Matt Jolly <Matt.Jolly@footclan.ninja> +Date: Thu, 26 Jan 2023 01:48:16 +1100 +Subject: [PATCH 1/3] Add `cr_gio_cp` and deprecate `cr_cp` + +It's preferable to use glib gio to copy files rather than +rely on the behaviour of the system cp binary. +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -32,7 +32,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") + SET(G_LOG_DOMAIN "C_CREATEREPOLIB") + + # Find necessary libraries +- ++find_package(PkgConfig) + find_package(BZip2 REQUIRED) + find_package(CURL REQUIRED) + find_package(LibXml2 REQUIRED) +@@ -40,6 +40,7 @@ find_package(OpenSSL REQUIRED) + find_package(ZLIB REQUIRED) + + pkg_check_modules(GLIB2 REQUIRED glib-2.0) ++pkg_check_modules(GIO REQUIRED gio-2.0) + pkg_check_modules(GTHREAD2 REQUIRED gthread-2.0) + pkg_check_modules(LZMA REQUIRED liblzma) + pkg_check_modules(SQLITE3 REQUIRED sqlite3) +@@ -57,6 +58,7 @@ ENDIF() + include_directories(${BZIP2_INCLUDE_DIRS}) + include_directories(${CURL_INCLUDE_DIRS}) + include_directories(${GLIB2_INCLUDE_DIRS}) ++include_directories(${GIO_INCLUDE_DIRS}) + include_directories(${LIBXML2_INCLUDE_DIR}) + include_directories(${OPENSSL_INCLUDE_DIR}) + include_directories(${ZLIB_INCLUDE_DIR}) +@@ -154,4 +156,3 @@ ADD_SUBDIRECTORY (src) + ADD_SUBDIRECTORY (doc) + ENABLE_TESTING() + ADD_SUBDIRECTORY (tests EXCLUDE_FROM_ALL) +- +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -70,6 +70,7 @@ ADD_LIBRARY(libcreaterepo_c ${createrepo_c_library_type} ${createrepo_c_SRCS}) + TARGET_LINK_LIBRARIES(libcreaterepo_c ${BZIP2_LIBRARIES}) + TARGET_LINK_LIBRARIES(libcreaterepo_c ${CURL_LIBRARY}) + TARGET_LINK_LIBRARIES(libcreaterepo_c ${GLIB2_LIBRARIES}) ++TARGET_LINK_LIBRARIES(libcreaterepo_c ${GIO_LIBRARIES}) + TARGET_LINK_LIBRARIES(libcreaterepo_c ${LIBMAGIC_LIBRARIES}) + TARGET_LINK_LIBRARIES(libcreaterepo_c ${LIBMODULEMD_LIBRARIES}) + TARGET_LINK_LIBRARIES(libcreaterepo_c ${LIBXML2_LIBRARIES}) +--- a/src/helpers.c ++++ b/src/helpers.c +@@ -19,6 +19,7 @@ + + #include <glib.h> + #include <glib/gstdio.h> ++#include <gio/gio.h> + #include <errno.h> + #include <string.h> + #include <time.h> +@@ -448,10 +449,9 @@ cr_old_metadata_retention(const char *old_repo, + continue; + } + +- // COPY! +- cr_cp(full_path, +- new_full_path, +- CR_CP_RECURSIVE|CR_CP_PRESERVE_ALL, ++ cr_gio_cp(g_file_new_for_path(full_path), ++ g_file_new_for_path(new_full_path), ++ G_FILE_COPY_ALL_METADATA, + NULL, + &tmp_err); + +@@ -476,5 +476,3 @@ cr_old_metadata_retention(const char *old_repo, + + return ret; + } +- +- +--- a/src/misc.c ++++ b/src/misc.c +@@ -21,6 +21,7 @@ + + #include <glib/gstdio.h> + #include <glib.h> ++#include <gio/gio.h> + #include <arpa/inet.h> + #include <assert.h> + #include <curl/curl.h> +@@ -794,8 +795,6 @@ cr_download(CURL *in_handle, + return CRE_OK; + } + +- +- + gboolean + cr_better_copy_file(const char *src, const char *in_dst, GError **err) + { +@@ -820,7 +819,6 @@ cr_better_copy_file(const char *src, const char *in_dst, GError **err) + return TRUE; + } + +- + int + cr_remove_dir_cb(const char *fpath, + G_GNUC_UNUSED const struct stat *sb, +@@ -856,7 +854,7 @@ gboolean + cr_move_recursive(const char *srcDir, const char *dstDir, GError **err) + { + if (rename(srcDir, dstDir) == -1) { +- if (!cr_cp(srcDir, dstDir, CR_CP_RECURSIVE, NULL, err)) ++ if (!cr_gio_cp(g_file_new_for_path(srcDir), g_file_new_for_path(dstDir), G_FILE_COPY_ALL_METADATA, NULL, err)) + return FALSE; + return (cr_remove_dir(srcDir, err) == CRE_OK); + } +@@ -1425,6 +1423,44 @@ cr_cp(const char *src, + return ret; + } + ++gboolean ++cr_gio_cp(GFile *src, ++ GFile *dst, ++ GFileCopyFlags flags, ++ GCancellable *cancellable, ++ GError **err) ++{ ++ assert(src); ++ assert(dst); ++ assert(!err || *err == NULL); ++ ++ GFileType type = g_file_query_file_type(src, G_FILE_QUERY_INFO_NONE, NULL); ++ ++ if (type == G_FILE_TYPE_DIRECTORY) { ++ g_file_make_directory(dst, cancellable, err); ++ g_file_copy_attributes(src, dst, flags, cancellable, err); ++ ++ GFileEnumerator *enumerator = g_file_enumerate_children(src, G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NONE, cancellable, err); ++ for (GFileInfo *info = g_file_enumerator_next_file(enumerator, cancellable, err); info != NULL; info = g_file_enumerator_next_file(enumerator, cancellable, err)) { ++ const char *relative_path = g_file_info_get_name(info); ++ cr_gio_cp( ++ g_file_resolve_relative_path(src, relative_path), ++ g_file_resolve_relative_path(dst, relative_path), ++ flags, cancellable, err); ++ } ++ } else if (type == G_FILE_TYPE_REGULAR) { ++ g_file_copy(src, dst, flags, cancellable, NULL, NULL, err); ++ } ++ ++ if (err != NULL) { ++ return TRUE; ++ } ++ else { ++ return FALSE; ++ } ++ ++} ++ + gboolean + cr_rm(const char *path, + cr_RmFlags flags, +--- a/src/misc.h ++++ b/src/misc.h +@@ -26,6 +26,7 @@ extern "C" { + + #include <glib.h> + #include <string.h> ++#include <gio/gio.h> + #include <curl/curl.h> + #include "compression_wrapper.h" + #include "xml_parser.h" +@@ -449,7 +450,7 @@ typedef enum { + preserve the all attributes (if possible) */ + } cr_CpFlags; + +-/** Recursive copy of directory (works on files as well) ++/** Wrapper for cp + * @param src Source (supports wildcards) + * @param dst Destination (supports wildcards) + * @param flags Flags +@@ -461,6 +462,20 @@ cr_cp(const char *src, + const char *dst, + cr_CpFlags flags, + const char *working_directory, ++ GError **err) __attribute__ ((deprecated ("please use `cr_gio_cp` instead"))); ++ ++/** Recursive copy of directory (works on files as well) ++ * @param src Source (supports wildcards) ++ * @param dst Destination (supports wildcards) ++ * @param flags Flags ++ * @param cancellable Can this be cancelled by another thread? ++ * @param err GError ** ++ */ ++gboolean ++cr_gio_cp(GFile *src, ++ GFile *dst, ++ GFileCopyFlags flags, ++ GCancellable *cancellable, + GError **err); + + typedef enum { + +From 9fa5809150d2021186d4a822c38d5488cd4986dc Mon Sep 17 00:00:00 2001 +From: Matt Jolly <Matt.Jolly@footclan.ninja> +Date: Fri, 27 Jan 2023 18:17:23 +1100 +Subject: [PATCH 2/3] Add to AUTHORS + +--- a/AUTHORS ++++ b/AUTHORS +@@ -10,3 +10,4 @@ Neal Gompa <ngompa13@gmail.com> + Ralph Bean <rbean@redhat.com> + Frank Schreiner <schreiner@suse.de> + Daniel Alley <dalley@redhat.com> ++Matt Jolly <matt.jolly@footclan.ninja> + +From e6769f0e343cbeea1beee703b984307634691677 Mon Sep 17 00:00:00 2001 +From: Matt Jolly <Matt.Jolly@footclan.ninja> +Date: Fri, 27 Jan 2023 20:06:21 +1100 +Subject: [PATCH 3/3] Update minimum CMake version + +Modern CMake warns of deprecation of <2.8.12, let's use that instead +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,5 +1,5 @@ + PROJECT (createrepo_c C) +-CMAKE_MINIMUM_REQUIRED (VERSION 2.8.10) ++CMAKE_MINIMUM_REQUIRED (VERSION 2.8.12) + + include(GNUInstallDirs) + diff --git a/app-arch/createrepo_c/metadata.xml b/app-arch/createrepo_c/metadata.xml index 142bf59db6a8..d3f01feb9062 100644 --- a/app-arch/createrepo_c/metadata.xml +++ b/app-arch/createrepo_c/metadata.xml @@ -5,10 +5,21 @@ <email>jaco@uls.co.za</email> <name>Jaco Kroon</name> </maintainer> + <maintainer type="person" proxied="yes"> + <email>Matt.Jolly@footclan.ninja</email> + <name>Matt Jolly</name> + </maintainer> <maintainer type="person"> <email>sam@gentoo.org</email> <name>Sam James</name> </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <use> + <flag name="legacy">Build with support for legacy weakdeps and hashes (not recommended!)</flag> + </use> <upstream> <remote-id type="github">rpm-software-management/createrepo_c</remote-id> </upstream> |