commit:     d9348359b2180d3a08f7f0e15ee5b702213dd0ab
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Sep  2 16:21:00 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Sep  2 16:21:00 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d9348359

sys-fs/btrfs-progs: add 6.5

Signed-off-by: Sam James <sam <AT> gentoo.org>

 sys-fs/btrfs-progs/Manifest                        |   1 +
 sys-fs/btrfs-progs/btrfs-progs-6.5.ebuild          | 167 +++++++++++++++++++++
 ...6.5-avoid-textrel-crc32c-pcl-intel-asm_64.patch |  44 ++++++
 3 files changed, 212 insertions(+)

diff --git a/sys-fs/btrfs-progs/Manifest b/sys-fs/btrfs-progs/Manifest
index daec932d880d..9a38f44eb96a 100644
--- a/sys-fs/btrfs-progs/Manifest
+++ b/sys-fs/btrfs-progs/Manifest
@@ -1,3 +1,4 @@
 DIST btrfs-progs-v6.3.1.tar.xz 3155540 BLAKE2B 
5f8ec51f11d705bb4ada2e000143933484bae2f3a5dedb5c1abac37950de44fa0fa762cc09012ca6702b96591264027b28c17392303db414a5651657cb086c7c
 SHA512 
a567a02f565a44dd06f54b3fd03187d259235eedf8033457368add217c87b2304e8c80ca5e2a35bdffc14e43b6889361183c6dcd5e2f4ad6fe7bfc5eb4127e65
 DIST btrfs-progs-v6.3.2.tar.xz 3160148 BLAKE2B 
e6815eeb90c1dbf9a6c4a5aa72262c18b2031a9305efc9024b1fe7b770a256e1d4cb3b01646a0a523f0e26af2d499382bf42420385c56593ace515a6c225f54d
 SHA512 
d8580250994b3e399babec4478515686f1e3cc2e4fc01ccbc7b00a51b6131452d209cb7f43dbbac5375286546d182fcdf7884bbc1a8ad6889c3f15d85ba8f8d5
 DIST btrfs-progs-v6.3.3.tar.xz 3163112 BLAKE2B 
76714da94e1cd733df4198b736c31b32d4cfb6779985036610651a267fcf92299c140f99f2372278cafcb02f651413c069314195b7bd44d56ddf60eb60e5532d
 SHA512 
e72791fd91cc9a93aaab72bf8c36f9d7e2608315ccb3b0474ca0c1e1893465b2c7145ce523216accb0d02c4dd0fd13597702ce6a8b9c2ac137cd9bce3c5a4347
+DIST btrfs-progs-v6.5.tar.xz 3178048 BLAKE2B 
502d8cebab1d35d8d69eb76212476e323d9f19a9d32eb304acaeb1fc27bfff3ca801fcebc4c19ce7db16ed0114b3c794814157075872c2fd1d8b1d32d740e346
 SHA512 
7e1578b1f82549f77b55341c20a973da52018b1539da46f92e4a9d9804906ce5e00312c8a02a6047373e4435e661b2e5fc18f5dfbf2d0563cdf62c40de6a4436

diff --git a/sys-fs/btrfs-progs/btrfs-progs-6.5.ebuild 
b/sys-fs/btrfs-progs/btrfs-progs-6.5.ebuild
new file mode 100644
index 000000000000..483d5e5b5feb
--- /dev/null
+++ b/sys-fs/btrfs-progs/btrfs-progs-6.5.ebuild
@@ -0,0 +1,167 @@
+# Copyright 2008-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..11} )
+inherit bash-completion-r1 python-single-r1 udev
+
+libbtrfs_soname=0
+
+if [[ ${PV} != 9999 ]]; then
+       MY_PV="v${PV/_/-}"
+       
SRC_URI="https://www.kernel.org/pub/linux/kernel/people/kdave/${PN}/${PN}-${MY_PV}.tar.xz";
+
+       if [[ ${PV} != *_rc* ]] ; then
+               KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~mips ~ppc 
~ppc64 ~riscv ~sparc ~x86"
+       fi
+
+       S="${WORKDIR}"/${PN}-${MY_PV}
+else
+       EGIT_REPO_URI="https://github.com/kdave/btrfs-progs.git";
+       EGIT_BRANCH="devel"
+       WANT_LIBTOOL="none"
+       inherit autotools git-r3
+fi
+
+DESCRIPTION="Btrfs filesystem utilities"
+HOMEPAGE="https://btrfs.readthedocs.io/en/latest/";
+
+LICENSE="GPL-2"
+SLOT="0/${libbtrfs_soname}"
+IUSE="+convert python +man reiserfs static static-libs udev +zstd"
+# Could support it with just !systemd => eudev, see mdadm, but let's
+# see if someone asks for it first.
+REQUIRED_USE="static? ( !udev )"
+
+# Tries to mount repaired filesystems
+RESTRICT="test"
+
+RDEPEND="
+       dev-libs/lzo:2=
+       sys-apps/util-linux:=[static-libs(+)?]
+       sys-libs/zlib:=
+       convert? (
+               sys-fs/e2fsprogs:=
+               reiserfs? (
+                       >=sys-fs/reiserfsprogs-3.6.27
+               )
+       )
+       python? ( ${PYTHON_DEPS} )
+       udev? ( virtual/libudev:= )
+       zstd? ( app-arch/zstd:= )
+"
+DEPEND="
+       ${RDEPEND}
+       >=sys-kernel/linux-headers-5.10
+       convert? ( sys-apps/acl )
+       python? (
+               $(python_gen_cond_dep '
+                       dev-python/setuptools[${PYTHON_USEDEP}]
+               ')
+       )
+       static? (
+               dev-libs/lzo:2[static-libs(+)]
+               sys-apps/util-linux:0[static-libs(+)]
+               sys-libs/zlib:0[static-libs(+)]
+               convert? (
+                       sys-fs/e2fsprogs[static-libs(+)]
+                       reiserfs? (
+                               >=sys-fs/reiserfsprogs-3.6.27[static-libs(+)]
+                       )
+               )
+               zstd? ( app-arch/zstd[static-libs(+)] )
+       )
+"
+BDEPEND="
+       virtual/pkgconfig
+       man? ( dev-python/sphinx )
+"
+
+if [[ ${PV} == 9999 ]]; then
+       BDEPEND+=" sys-devel/gnuconfig"
+fi
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-6.5-avoid-textrel-crc32c-pcl-intel-asm_64.patch
+)
+
+pkg_setup() {
+       use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+       default
+
+       if [[ ${PV} == 9999 ]]; then
+               AT_M4DIR="m4" eautoreconf
+
+               mkdir config || die
+               local automakedir="$(autotools_run_tool --at-output automake 
--print-libdir)"
+               [[ -e ${automakedir} ]] || die "Could not locate automake 
directory"
+
+               ln -s "${automakedir}"/install-sh config/install-sh || die
+               ln -s "${BROOT}"/usr/share/gnuconfig/config.guess 
config/config.guess || die
+               ln -s "${BROOT}"/usr/share/gnuconfig/config.sub 
config/config.sub || die
+       fi
+}
+
+src_configure() {
+       local myeconfargs=(
+               --bindir="${EPREFIX}"/sbin
+
+               --enable-lzo
+               --disable-experimental
+               $(use_enable convert)
+               $(use_enable man documentation)
+               $(use_enable elibc_glibc backtrace)
+               $(use_enable python)
+               $(use_enable static-libs static)
+               $(use_enable udev libudev)
+               $(use_enable zstd)
+
+               # Could support libgcrypt, libsodium, libkcapi
+               --with-crypto=builtin
+               --with-convert=ext2$(usex reiserfs ',reiserfs' '')
+       )
+
+       econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+       emake V=1 all $(usev static)
+}
+
+src_test() {
+       emake -j1 -C tests V=1 test
+
+       if use python ; then
+               cd libbtrfsutil/python || die
+
+               local -x 
LD_LIBRARY_PATH="${S}:libbtrfsutil/python:${LD_LIBRARY_PATH}"
+               ${EPYTHON} -m unittest tests/test_*.py || die "Tests failed 
with ${EPYTHON}"
+       fi
+}
+
+src_install() {
+       local makeargs=(
+               $(usev python install_python)
+               $(usev static install-static)
+       )
+
+       emake V=1 DESTDIR="${D}" install "${makeargs[@]}"
+
+       newbashcomp btrfs-completion btrfs
+
+       use python && python_optimize
+}
+
+pkg_postinst() {
+       udev_reload
+}
+
+pkg_postrm() {
+       udev_reload
+}

diff --git 
a/sys-fs/btrfs-progs/files/btrfs-progs-6.5-avoid-textrel-crc32c-pcl-intel-asm_64.patch
 
b/sys-fs/btrfs-progs/files/btrfs-progs-6.5-avoid-textrel-crc32c-pcl-intel-asm_64.patch
new file mode 100644
index 000000000000..40a9bbeff8f6
--- /dev/null
+++ 
b/sys-fs/btrfs-progs/files/btrfs-progs-6.5-avoid-textrel-crc32c-pcl-intel-asm_64.patch
@@ -0,0 +1,44 @@
+See 
https://github.com/kdave/btrfs-progs/commit/992be8b50a65974e52a484911e72bc5a5e1b412c.
+
+With binutils-2.41[hardened], one gets:
+```
+/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: 
crypto/crc32c-pcl-intel-asm_64.o: warning: relocation in read-only section 
`.rodata'
+/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: 
read-only segment has dynamic relocations
+collect2: error: ld returned 1 exit status
+make: *** [Makefile:660: btrfs-map-logical] Error 1
+```
+
+But it's a textrel and a warning anyway even without hardened.
+
+Disable it for now until it gets fixed properly upstream.
+--- a/Makefile
++++ b/Makefile
+@@ -387,7 +387,7 @@ endif
+ 
+ ifeq ($(TARGET_CPU),x86_64)
+ # FIXME: linkage is broken on musl for some reason
+-ifeq ($(HAVE_GLIBC),1)
++ifeq (0,1)
+ CRYPTO_OBJECTS += crypto/crc32c-pcl-intel-asm_64.o
+ ASFLAGS += -fPIC
+ endif
+--- a/crypto/crc32c.c
++++ b/crypto/crc32c.c
+@@ -18,7 +18,7 @@ static uint32_t (*crc_function)(uint32_t crc, unsigned char 
const *data, uint32_
+ 
+ #ifdef __x86_64__
+ 
+-#ifdef __GLIBC__
++#if 0
+ 
+ /* asmlinkage */ unsigned int crc_pcl(const unsigned char *buffer, int len, 
unsigned int crc_init);
+ static unsigned int crc32c_pcl(uint32_t crc, unsigned char const *data, 
uint32_t len) {
+@@ -95,7 +95,7 @@ void crc32c_init_accel(void)
+        * now.
+        */
+       if (0) {
+-#ifdef __GLIBC__
++#if 0
+       } else if (cpu_has_feature(CPU_FLAG_SSE42)) {
+               /* printf("CRC32C: pcl\n"); */
+               crc_function = crc32c_pcl;

Reply via email to