diff options
author | Sam James <sam@gentoo.org> | 2024-04-05 15:11:18 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-04-05 15:25:19 +0100 |
commit | e0577057b8cc6b4bb3c1445a7d1015843ef1cb54 (patch) | |
tree | 729e1f58986f944278c7365da4f0670f30e424a5 | |
parent | dev-lang/uasm: workaround modern C issues for now (diff) | |
download | gentoo-e0577057b8cc6b4bb3c1445a7d1015843ef1cb54.tar.gz gentoo-e0577057b8cc6b4bb3c1445a7d1015843ef1cb54.tar.bz2 gentoo-e0577057b8cc6b4bb3c1445a7d1015843ef1cb54.zip |
app-arch/7zip: new package, add 23.01
Imported from ::guru as of commit ea612f548c48f74fce1abc60d5ad205c521c7492.
Adding arthur and myself as well as NRK as discussed in #gentoo-guru. I'll
email the other maint in guru too.
Bug: https://bugs.gentoo.org/664664
Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r-- | app-arch/7zip/7zip-23.01.ebuild | 102 | ||||
-rw-r--r-- | app-arch/7zip/Manifest | 2 | ||||
-rw-r--r-- | app-arch/7zip/files/7zip-23.01-respect-build-env.patch | 53 | ||||
-rw-r--r-- | app-arch/7zip/metadata.xml | 28 |
4 files changed, 185 insertions, 0 deletions
diff --git a/app-arch/7zip/7zip-23.01.ebuild b/app-arch/7zip/7zip-23.01.ebuild new file mode 100644 index 000000000000..e06bd67cdb4b --- /dev/null +++ b/app-arch/7zip/7zip-23.01.ebuild @@ -0,0 +1,102 @@ +# Copyright 2023-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit edos2unix toolchain-funcs flag-o-matic + +NO_DOT_PV=$(ver_rs 1- '') +DESCRIPTION="A free file archiver for extremely high compression" +HOMEPAGE="https://www.7-zip.org/ https://sourceforge.net/projects/sevenzip/" +SRC_URI=" + https://sourceforge.net/projects/sevenzip/files/7-Zip/${PV}/7z${NO_DOT_PV}-src.tar.xz/download -> ${PN}-${PV}.tar.xz + https://sourceforge.net/projects/sevenzip/files/7-Zip/${PV}/7z${NO_DOT_PV}-linux-x64.tar.xz/download -> ${PN}-${PV}-linux.tar.xz +" +LICENSE="LGPL-2 BSD rar? ( unRAR )" + +IUSE="uasm jwasm rar" +REQUIRED_USE="?? ( uasm jwasm )" +SLOT="0" +KEYWORDS="~amd64" + +S="${WORKDIR}/CPP/7zip/" +DOCS=( readme.txt History.txt License.txt ) +HTML_DOCS=( MANUAL ) +RESTRICT="mirror" + +DEPEND="${RDEPEND}" +BDEPEND=" + uasm? ( dev-lang/uasm ) + jwasm? ( dev-lang/jwasm ) +" + +# TODO(NRK): also build and install the library +# TODO(NRK): make it so this package can be used as a drop-in replacement +# for app-arch/p7zip ?? + +pkg_setup() { + # instructions in DOC/readme.txt, Compiling 7-Zip for Unix/Linux + # TLDR; every combination of options (clang|gcc)+(asm/noasm) + # has a dedicated makefile & builddir + mfile="cmpl" + if tc-is-clang; then + mfile="${mfile}_clang" + bdir=c + elif tc-is-gcc; then + mfile="${mfile}_gcc" + bdir=g + else + die "Unsupported compiler: $(tc-getCC)" + fi + if use jwasm || use uasm ; then + mfile="${mfile}_x64" + bdir="${bdir}_x64" + fi + export mfile="${mfile}.mak" + export bdir +} + +src_prepare() { + # patch doesn't deal with CRLF even if file+patch match + # not even with --ignore-whitespace, --binary or --force + edos2unix ./7zip_gcc.mak ./var_gcc{,_x64}.mak ./var_clang{,_x64}.mak + PATCHES+=( "${FILESDIR}/${P}-respect-build-env.patch" ) + + sed -i -e 's/-Werror //g' ./7zip_gcc.mak || die "Error removing -Werror" + default +} + +src_compile() { + pushd "./Bundles/Alone2" || die "Unable to switch directory" + append-ldflags -Wl,-z,noexecstack + export G_CFLAGS=${CFLAGS} + export G_CXXFLAGS=${CXXFLAGS} + export G_LDFLAGS=${LDFLAGS} + local args=( + -f "../../${mfile}" + CC=$(tc-getCC) + CXX=$(tc-getCXX) + ) + # NOTE: makefile doesn't check the value of DISABLE_RAR_COMPRESS, only + # whether it's defined or not. so in case user has `rar` enabled + # DISABLE_RAR_COMPRESS (and DISABLE_RAR) needs to stay undefined. + if ! use rar; then + # disables non-free rar code but allows listing and extracting + # non-compressed rar archives + args+=(DISABLE_RAR_COMPRESS=1) + fi + if use jwasm; then + args+=(USE_JWASM=1) + elif use uasm; then + args+=(MY_ASM=uasm) + fi + emake ${args[@]} + popd > /dev/null || die "Unable to switch directory" +} + +src_install() { + dobin "./Bundles/Alone2/b/${bdir}/7zz" + + pushd "${WORKDIR}" || die "Unable to switch directory" + einstalldocs +} diff --git a/app-arch/7zip/Manifest b/app-arch/7zip/Manifest new file mode 100644 index 000000000000..39335efa329f --- /dev/null +++ b/app-arch/7zip/Manifest @@ -0,0 +1,2 @@ +DIST 7zip-23.01-linux.tar.xz 1527700 BLAKE2B 35dc74f0a7a4e586ea5ae969dce72c14e0231822630d2d70f24e1c911cea0492354a258ef65096a6ce0da1510117c12466bc6cda577cdf9e8e74ede17e47f23e SHA512 d3549468de8fd161e4c9233fa0b170af1f28c74749d20f3d0eeb3873857f6c6d2cc0777d564e6a79be7cc21c9e982e10710a795320428dc51db809a8d0f9454e +DIST 7zip-23.01.tar.xz 1378588 BLAKE2B 348484b24b39db70e513fe50d79954ea0e2dd669f83e3601fa796c8f0ca4734132ca20fac8cda9b8ba550bad9146627fc0ae07056abb99028ef6d825b6a533bd SHA512 e39f660c023aa65e55388be225b5591fe2a5c9138693f3c9107e2eb4ce97fafde118d3375e01ada99d29de9633f56221b5b3d640c982178884670cd84c8aa986 diff --git a/app-arch/7zip/files/7zip-23.01-respect-build-env.patch b/app-arch/7zip/files/7zip-23.01-respect-build-env.patch new file mode 100644 index 000000000000..c897cf625931 --- /dev/null +++ b/app-arch/7zip/files/7zip-23.01-respect-build-env.patch @@ -0,0 +1,53 @@ +Respect build environment settings + +Bug: https://bugs.gentoo.org/913186 +Bug: https://bugs.gentoo.org/913188 +Bug: https://bugs.gentoo.org/913189 + + +--- a/7zip_gcc.mak ++++ b/7zip_gcc.mak +@@ -87,14 +87,14 @@ SHARED_EXT=.dll + LDFLAGS = -shared -DEF $(DEF_FILE) $(LDFLAGS_STATIC) + else + SHARED_EXT=.so +-LDFLAGS = -shared -fPIC $(LDFLAGS_STATIC) ++LDFLAGS = -shared -fPIC $(G_LDFLAGS) $(LDFLAGS_STATIC) + CC_SHARED=-fPIC + endif + + + else + +-LDFLAGS = $(LDFLAGS_STATIC) ++LDFLAGS = $(LDFLAGS_STATIC) $(G_LDFLAGS) + # -s is not required for clang, do we need it for GCC ??? + + #-static -static-libgcc -static-libstdc++ +@@ -149,7 +149,7 @@ endif + + + +-CFLAGS = $(MY_ARCH_2) $(LOCAL_FLAGS) $(CFLAGS_BASE2) $(CFLAGS_BASE) $(FLAGS_FLTO) $(CC_SHARED) -o $@ ++CFLAGS = $(MY_ARCH_2) $(LOCAL_FLAGS) $(CFLAGS_BASE2) $(CFLAGS_BASE) $(FLAGS_FLTO) $(CC_SHARED) $(G_CFLAGS) -o $@ + + + ifdef IS_MINGW +@@ -190,7 +190,7 @@ CXX_WARN_FLAGS = + #-Wno-invalid-offsetof + #-Wno-reorder + +-CXXFLAGS = $(MY_ARCH_2) $(LOCAL_FLAGS) $(CXXFLAGS_BASE2) $(CFLAGS_BASE) $(FLAGS_FLTO) $(CXXFLAGS_EXTRA) $(CC_SHARED) $(CXX_WARN_FLAGS) $(CXX_STD_FLAGS) -o $@ ++CXXFLAGS = $(MY_ARCH_2) $(LOCAL_FLAGS) $(CXXFLAGS_BASE2) $(CFLAGS_BASE) $(FLAGS_FLTO) $(CXXFLAGS_EXTRA) $(CC_SHARED) $(CXX_WARN_FLAGS) $(CXX_STD_FLAGS) $(G_CXXFLAGS) -o $@ + + STATIC_TARGET= + ifdef COMPL_STATIC +@@ -208,7 +208,7 @@ $(O): + # -Wl,--print-gc-sections + + ifneq ($(CC), $(CROSS_COMPILE)clang) +-LFLAGS_STRIP = -s ++ + endif + + LFLAGS_ALL = $(LFLAGS_STRIP) $(MY_ARCH_2) $(LDFLAGS) $(FLAGS_FLTO) $(LD_arch) $(OBJS) $(MY_LIBS) $(LIB2) diff --git a/app-arch/7zip/metadata.xml b/app-arch/7zip/metadata.xml new file mode 100644 index 000000000000..a4f1984333a5 --- /dev/null +++ b/app-arch/7zip/metadata.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>nrk@disroot.org</email> + </maintainer> + <maintainer type="person"> + <email>arthurzam@gentoo.org</email> + <name>Arthur Zamarin</name> + </maintainer> + <maintainer type="person"> + <email>sam@gentoo.org</email> + <name>Sam James</name> + </maintainer> + <use> + <flag name="rar">Enable support for non-free rar decoder</flag> + <flag name="uasm">Use <pkg>dev-lang/uasm</pkg> to include optimized code</flag> + <flag name="jwasm">Use <pkg>dev-lang/jwasm</pkg> to include optimized code (doesn't support AES)</flag> + </use> + <upstream> + <maintainer> + <name>Igor Pavlov</name> + </maintainer> + <remote-id type="sourceforge">sevenzip</remote-id> + <changelog>https://www.7-zip.org/history.txt</changelog> + <bugs-to>https://sourceforge.net/p/sevenzip/bugs/</bugs-to> + </upstream> +</pkgmetadata> |