From 4f2d7949f03e1c198bc888f2d05f421d35c57e21 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 9 Oct 2017 18:53:29 +0100 Subject: reinit the tree, so we can have metadata --- app-arch/unzip/Manifest | 8 + app-arch/unzip/files/unzip-6.0-natspec.patch | 372 +++++++++++++++++++++ app-arch/unzip/files/unzip-6.0-no-exec-stack.patch | 13 + app-arch/unzip/metadata.xml | 14 + app-arch/unzip/unzip-6.0_p20.ebuild | 88 +++++ 5 files changed, 495 insertions(+) create mode 100644 app-arch/unzip/Manifest create mode 100644 app-arch/unzip/files/unzip-6.0-natspec.patch create mode 100644 app-arch/unzip/files/unzip-6.0-no-exec-stack.patch create mode 100644 app-arch/unzip/metadata.xml create mode 100644 app-arch/unzip/unzip-6.0_p20.ebuild (limited to 'app-arch/unzip') diff --git a/app-arch/unzip/Manifest b/app-arch/unzip/Manifest new file mode 100644 index 000000000000..8586a6f84cd1 --- /dev/null +++ b/app-arch/unzip/Manifest @@ -0,0 +1,8 @@ +AUX unzip-6.0-natspec.patch 14304 SHA256 cf7b6146b034e5687e77c328a9e55efc68ddb75636fdcce84853995ab60082dd SHA512 189ce2045430d2d04e27049672a3cfb205319edab1ac1522700a7f89344e5718235d8a15238390f6b4317af493796a65cac6a83f7dceb402bc736628d7a89cda WHIRLPOOL db49d3f17313f37b87dc0a597ff703474c7607ceae0b0fe456b3407bf915806557d3bcfa1de8df37a6d3f1d9c74a516f88ef1f05606fbe97b085f07c17d79337 +AUX unzip-6.0-no-exec-stack.patch 381 SHA256 ae62249dcf8bbc3c30468b07944df6c8777b565927d9ed6d1fdf7395899ea7c7 SHA512 a00ba3c805aa64bebeb3194cd75093c1e7c951366d40bba4852837dcb355eedf1ca6a6e648ea007fcb71124e778e54b5168a7b38a7b7268bc3983d87594633a5 WHIRLPOOL e838b3835e9cdcbbe5f47bb1ab92b2ce0fffff1ce77e69ee460a9ff9d5ed4a3c16311d65b0a16f14a3b4e22b2c09db1f3d88b35fa978d40e67ad5307e5a29a39 +DIST unzip60.tar.gz 1376845 SHA256 036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37 SHA512 0694e403ebc57b37218e00ec1a406cae5cc9c5b52b6798e0d4590840b6cdbf9ddc0d9471f67af783e960f8fa2e620394d51384257dca23d06bcd90224a80ce5d WHIRLPOOL eab32d6d0ab100d302b608658a3ae290d3dad4beddccebaf6cb6527102bb238f751ec6482dea68ae62474005de89f11f9e0cf1b1e12bee2ca5a2336a3c0c9808 +DIST unzip_6.0-20.debian.tar.xz 16680 SHA256 7ddfafb1a771ae8d6b4e25c5e31f22c717e0fe606b1bafadcdd574c01f671490 SHA512 7212cb110291581c2e465dc8ea5130eabffc4e0369d6245e8c26fa9d350bed904847d6e1191afaaa2d3fc23bd05fda7da80439d0c06b88f5331b01c9eff97fbe WHIRLPOOL ea5ebd5d95638ff8cd2e91eb77f5be544e33ac6fd478aa00c04da193cd3fad980c5ac1975dfedb2c242192cee6c4eee8bbaf3581299f6c3fa45faa639f0169fd +EBUILD unzip-6.0_p20.ebuild 2557 SHA256 28da56bf99abfba333e7df31e9c0288123aeb09d5ea1630f19fedd505fb5adf5 SHA512 72014935da1e7acec784f189568fbec2756968811d348594d98e5a4f440579471b9e6348aa57877a18e0e34b6434aa144cd7015a88c5b999805428d4192dd212 WHIRLPOOL 16d6d5c7612bb25877162d572ac88731d313f1d632eadb1f72063063e544d08bde57fd5e87b792adc77adbaf58ada2e3aece28770c583243e7efa2e068f69ce4 +MISC ChangeLog 5049 SHA256 b0c10cf3ce667fc7eb0921a97209fe4337d83375f69510c99a95d4f3f32accbc SHA512 e42d5c5b1e5ccf47f1a1b1a13296d68bf2563f7ec90d67bd0dba798215f1313b14f1671d61f70a4ca77cdde1023b404f72b981655e9f776e2cd3bf2f3fe62aa2 WHIRLPOOL f020fc753e8f5f9def179c888699b879bfd130b73d1768b45c24c30e908a08f870aed8ef851efd8482fb9af1126bf8f436e32002a8ea676391ec7986f7b96680 +MISC ChangeLog-2015 10492 SHA256 d02b2f95413294e2ac375d98127e9465a60c9132166c0d62918d48474992f966 SHA512 06717ced072fc605e067c9018e74e811c3c47c07ae7ec39a7260955b0ba3168ab710a5c76ace3e365c5a90e9ed9976172e2e77a8e985cd4e1154e398244ff200 WHIRLPOOL 3fb404c5672c5977c242380415b7e505eb76af9b7f0028ead8d52f988399fa03f5f3d023aca7e4be95e39133fd49b8a587f3fa6674bc5e97cae8534ab5fbca37 +MISC metadata.xml 476 SHA256 91ce6b527006713ac4c8b533935adac492ace0235b21f7ab4678d75052d78ff3 SHA512 0b82799f21ec8d57451ce8f231d24eabb02f637ee6fd2c32af12f9806f104ea53dc4d848b29950c1d5e848ea81f04a58422fa37f39287937dfb54e186f30b653 WHIRLPOOL 039f215da0822c5bf526b0c1a4483af67c0423326b7a149b39f8a216dc18d1c0ff205dee0e872f5ab8a1ae78e0346eddfdbc42922c7f70d9030fde66746cbc96 diff --git a/app-arch/unzip/files/unzip-6.0-natspec.patch b/app-arch/unzip/files/unzip-6.0-natspec.patch new file mode 100644 index 000000000000..0cf87fd4644f --- /dev/null +++ b/app-arch/unzip/files/unzip-6.0-natspec.patch @@ -0,0 +1,372 @@ +This patch makes zip use libnatspec to recode file names is national charset. +Initially this patch was written for altlinux: +http://sisyphus.ru/ru/srpm/Sisyphus/zip/patches + +Later it was a bit improved and improved version was posted here (in Russian): +http://www.opennet.ru/tips/info/2494.shtml + +Gentoo reference: +https://bugs.gentoo.org/show_bug.cgi?id=275244 + +diff -pur unzip60orig/unix/configure unzip60/unix/configure +--- unzip60orig/unix/configure 2009-04-16 23:25:12.000000000 +0400 ++++ unzip60/unix/configure 2010-11-26 19:07:43.000000000 +0300 +@@ -17,7 +17,7 @@ CFLAGSR=${CFLAGS} + IZ_BZIP2=${3} + CFLAGS="${CFLAGS} -I. -DUNIX" + LFLAGS1="" +-LFLAGS2="-s" ++LFLAGS2="-l natspec" + LN="ln -s" + + CFLAGS_OPT='' +diff -pur unzip60orig/unix/Makefile unzip60/unix/Makefile +--- unzip60orig/unix/Makefile 2009-01-19 01:41:18.000000000 +0300 ++++ unzip60/unix/Makefile 2010-11-29 14:25:58.461000001 +0300 +@@ -45,14 +45,14 @@ + CC = cc# try using "gcc" target rather than changing this (CC and LD + LD = $(CC)# must match, else "unresolved symbol: ___main" is possible) + AS = as +-LOC = $(D_USE_BZ2) $(LOCAL_UNZIP) ++LOC = $(D_USE_BZ2) -DNO_SETLOCALE $(LOCAL_UNZIP) + AF = $(LOC) + CFLAGS = -O + CF_NOOPT = -I. -I$(IZ_BZIP2) -DUNIX $(LOC) + CF = $(CFLAGS) $(CF_NOOPT) + LFLAGS1 = + LF = -o unzip$E $(LFLAGS1) +-LF2 = -s ++LF2 = -l natspec + + # UnZipSFX flags + SL = -o unzipsfx$E $(LFLAGS1) +@@ -121,7 +121,7 @@ INSTALL_PROGRAM = $(INSTALL) + INSTALL_D = mkdir -p + # on some systems, manext=l and MANDIR=/usr/man/man$(manext) may be appropriate + manext = 1 +-prefix = /usr/local ++prefix = /usr + BINDIR = $(prefix)/bin# where to install executables + MANDIR = $(prefix)/man/man$(manext)# where to install man pages + INSTALLEDBIN = $(BINDIR)/funzip$E $(BINDIR)/unzip$E $(BINDIR)/unzipsfx$E \ +diff -pur unzip60orig/unix/unix.c unzip60/unix/unix.c +--- unzip60orig/unix/unix.c 2009-01-24 02:31:26.000000000 +0300 ++++ unzip60/unix/unix.c 2010-11-26 16:58:35.000000000 +0300 +@@ -30,6 +30,9 @@ + #define UNZIP_INTERNAL + #include "unzip.h" + ++#include ++#include ++ + #ifdef SCO_XENIX + # define SYSNDIR + #else /* SCO Unix, AIX, DNIX, TI SysV, Coherent 4.x, ... */ +@@ -1874,3 +1877,44 @@ static void qlfix(__G__ ef_ptr, ef_len) + } + } + #endif /* QLZIP */ ++ ++ ++char OEM_CP[MAX_CP_NAME] = ""; ++char ISO_CP[MAX_CP_NAME] = ""; ++ ++/* Getr the default value of OEM_CP based on the current locale. ++ * ISO_CP is left alone for now. */ ++void init_conversion_charsets() ++{ ++ /* Make a guess only if OEM_CP not already set. */ ++ if(*OEM_CP == '\0') { ++ const char * archive_charset = natspec_get_charset_by_locale(NATSPEC_DOSCS, ""); ++ strncpy(OEM_CP, archive_charset, sizeof(OEM_CP)); ++ } ++ ++ if(*ISO_CP == '\0') { ++ const char * archive_charset = natspec_get_charset_by_locale(NATSPEC_WINCS, ""); ++ strncpy(ISO_CP, archive_charset, sizeof(ISO_CP)); ++ } ++ ++} ++ ++/* Convert a string from OEM_CP to the current locale charset. */ ++inline void oem_intern(char *string) ++{ ++ char *buf = natspec_convert(string, 0, OEM_CP, 0); ++ /* Since Ext_ASCII_TO_Native used only for G.filename[FILNAMESIZE], ++ use FILNAMSIZ as string size */ ++ strncpy(string, buf, FILNAMSIZ); ++ free (buf); ++} ++ ++/* Convert a string from ISO_CP to the current locale charset. */ ++inline void iso_intern(char *string) ++{ ++ char *buf = natspec_convert(string, 0, ISO_CP, 0); ++ /* Since Ext_ASCII_TO_Native used only for G.filename[FILNAMESIZE], ++ use FILNAMSIZ as string size */ ++ strncpy(string, buf, FILNAMSIZ); ++ free (buf); ++} +diff -pur unzip60orig/unix/unxcfg.h unzip60/unix/unxcfg.h +--- unzip60orig/unix/unxcfg.h 2009-04-16 22:36:12.000000000 +0400 ++++ unzip60/unix/unxcfg.h 2010-11-26 16:58:35.000000000 +0300 +@@ -227,4 +227,30 @@ typedef struct stat z_stat; + /* wild_dir, dirname, wildname, matchname[], dirnamelen, have_dirname, */ + /* and notfirstcall are used by do_wild(). */ + ++ ++#define MAX_CP_NAME 25 ++ ++#ifdef SETLOCALE ++# undef SETLOCALE ++#endif ++#define SETLOCALE(category, locale) setlocale(category, locale) ++#include ++ ++#ifdef _ISO_INTERN ++# undef _ISO_INTERN ++#endif ++#define _ISO_INTERN(str1) iso_intern(str1) ++ ++#ifdef _OEM_INTERN ++# undef _OEM_INTERN ++#endif ++#ifndef IZ_OEM2ISO_ARRAY ++# define IZ_OEM2ISO_ARRAY ++#endif ++#define _OEM_INTERN(str1) oem_intern(str1) ++ ++void iso_intern(char *); ++void oem_intern(char *); ++void init_conversion_charsets(void); ++ + #endif /* !__unxcfg_h */ +diff -pur unzip60orig/unzip.c unzip60/unzip.c +--- unzip60orig/unzip.c 2009-04-16 22:26:52.000000000 +0400 ++++ unzip60/unzip.c 2010-11-26 16:58:35.000000000 +0300 +@@ -331,7 +331,9 @@ static ZCONST char Far ZipInfoUsageLine3 + -h print header line -t print totals for listed files or for all\n\ + -z print zipfile comment -T print file times in sortable decimal format\ + \n -C be case-insensitive %s\ +- -x exclude filenames that follow from listing\n"; ++ -x exclude filenames that follow from listing\n\ ++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ ++ -I CHARSET specify a character encoding for UNIX and other archives\n"; + #ifdef MORE + static ZCONST char Far ZipInfoUsageLine4[] = + " -M page output through built-in \"more\"\n"; +@@ -673,7 +674,9 @@ modifiers:\n\ + -j junk paths (do not make directories) -aa treat ALL files as text\n\ + -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\ + -C match filenames case-insensitively -L make (some) names \ +-lowercase\n %-42s -V retain VMS version numbers\n%s"; ++lowercase\n %-42s -V retain VMS version numbers\n%s\ ++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ ++ -I CHARSET specify a character encoding for UNIX and other archives\n"; + #endif /* ?VMS */ + #else /* !UNICODE_SUPPORT */ + #ifdef VMS +@@ -692,7 +695,9 @@ modifiers:\n\ + -o overwrite files WITHOUT prompting -a auto-convert any text files\n\ + -j junk paths (do not make directories) -aa treat ALL files as text\n\ + -C match filenames case-insensitively -L make (some) names \ +-lowercase\n %-42s -V retain VMS version numbers\n%s"; ++lowercase\n %-42s -V retain VMS version numbers\n%s\ ++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ ++ -I CHARSET specify a character encoding for UNIX and other archives\n"; + #endif /* ?VMS */ + #endif /* ?UNICODE_SUPPORT */ + +@@ -803,6 +808,10 @@ int unzip(__G__ argc, argv) + #endif /* UNICODE_SUPPORT */ + + ++#ifdef UNIX ++ init_conversion_charsets(); ++#endif ++ + #if (defined(__IBMC__) && defined(__DEBUG_ALLOC__)) + extern void DebugMalloc(void); + +@@ -1336,6 +1345,11 @@ int uz_opts(__G__ pargc, pargv) + argc = *pargc; + argv = *pargv; + ++#ifdef UNIX ++ extern char OEM_CP[MAX_CP_NAME]; ++ extern char ISO_CP[MAX_CP_NAME]; ++#endif ++ + while (++argv, (--argc > 0 && *argv != NULL && **argv == '-')) { + s = *argv + 1; + while ((c = *s++) != 0) { /* "!= 0": prevent Turbo C warning */ +@@ -1517,6 +1531,35 @@ int uz_opts(__G__ pargc, pargv) + } + break; + #endif /* MACOS */ ++#ifdef UNIX ++ case ('I'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Icharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } else { /* -I charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case ('j'): /* junk pathnames/directory structure */ + if (negative) + uO.jflag = FALSE, negative = 0; +@@ -1592,6 +1635,35 @@ int uz_opts(__G__ pargc, pargv) + } else + ++uO.overwrite_all; + break; ++#ifdef UNIX ++ case ('O'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Ocharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } else { /* -O charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -O argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case ('p'): /* pipes: extract to stdout, no messages */ + if (negative) { + uO.cflag = FALSE; +diff -pur unzip60orig/unzpriv.h unzip60/unzpriv.h +--- unzip60orig/unzpriv.h 2009-04-20 03:59:26.000000000 +0400 ++++ unzip60/unzpriv.h 2010-11-26 16:58:35.000000000 +0300 +@@ -3008,7 +3008,7 @@ char *GetLoadPath OF((__GPRO)); + !(((islochdr) || (isuxatt)) && \ + ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \ + (hostnum) == FS_HPFS_ || \ +- ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \ ++ ((hostnum) == FS_NTFS_/* && (hostver) == 50*/)) { \ + _OEM_INTERN((string)); \ + } else { \ + _ISO_INTERN((string)); \ +diff -pur unzip60orig/zipinfo.c unzip60/zipinfo.c +--- unzip60orig/zipinfo.c 2009-02-08 20:04:30.000000000 +0300 ++++ unzip60/zipinfo.c 2010-11-26 16:58:35.000000000 +0300 +@@ -457,6 +457,10 @@ int zi_opts(__G__ pargc, pargv) + int tflag_slm=TRUE, tflag_2v=FALSE; + int explicit_h=FALSE, explicit_t=FALSE; + ++#ifdef UNIX ++ extern char OEM_CP[MAX_CP_NAME]; ++ extern char ISO_CP[MAX_CP_NAME]; ++#endif + + #ifdef MACOS + uO.lflag = LFLAG; /* reset default on each call */ +@@ -501,6 +505,35 @@ int zi_opts(__G__ pargc, pargv) + uO.lflag = 0; + } + break; ++#ifdef UNIX ++ case ('I'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Icharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } else { /* -I charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case 'l': /* longer form of "ls -l" type listing */ + if (negative) + uO.lflag = -2, negative = 0; +@@ -521,6 +554,35 @@ int zi_opts(__G__ pargc, pargv) + G.M_flag = TRUE; + break; + #endif ++#ifdef UNIX ++ case ('O'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Ocharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } else { /* -O charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -O argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case 's': /* default: shorter "ls -l" type listing */ + if (negative) + uO.lflag = -2, negative = 0; diff --git a/app-arch/unzip/files/unzip-6.0-no-exec-stack.patch b/app-arch/unzip/files/unzip-6.0-no-exec-stack.patch new file mode 100644 index 000000000000..7973378704e1 --- /dev/null +++ b/app-arch/unzip/files/unzip-6.0-no-exec-stack.patch @@ -0,0 +1,13 @@ +Make sure that the asm files don't incorrectly trigger an executable +stack marking in the final shared library. That's bad, mmmkay. + +--- unzip/crc_i386.S ++++ unzip/crc_i386.S +@@ -302,3 +302,7 @@ + #endif /* i386 || _i386 || _I386 || __i386 */ + + #endif /* !USE_ZLIB && !CRC_TABLE_ONLY */ ++ ++#if defined(__linux__) && defined(__ELF__) ++.section .note.GNU-stack,"",%progbits ++#endif diff --git a/app-arch/unzip/metadata.xml b/app-arch/unzip/metadata.xml new file mode 100644 index 000000000000..564fd76677c8 --- /dev/null +++ b/app-arch/unzip/metadata.xml @@ -0,0 +1,14 @@ + + + + + base-system@gentoo.org + Gentoo Base System + + + Use dev-libs/libnatspec to correctly decode non-ascii file names archived in Windows. + + + infozip + + diff --git a/app-arch/unzip/unzip-6.0_p20.ebuild b/app-arch/unzip/unzip-6.0_p20.ebuild new file mode 100644 index 000000000000..e97847b09501 --- /dev/null +++ b/app-arch/unzip/unzip-6.0_p20.ebuild @@ -0,0 +1,88 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI="5" + +inherit eutils toolchain-funcs flag-o-matic + +MY_PV="${PV//.}" +MY_PV="${MY_PV%_p*}" +MY_P="${PN}${MY_PV}" + +DESCRIPTION="unzipper for pkzip-compressed files" +HOMEPAGE="http://www.info-zip.org/" +SRC_URI="mirror://sourceforge/infozip/${MY_P}.tar.gz + mirror://debian/pool/main/u/${PN}/${PN}_${PV/_p/-}.debian.tar.xz" + +LICENSE="Info-ZIP" +SLOT="0" +KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd ~arm-linux ~x86-linux" +IUSE="bzip2 natspec unicode" + +DEPEND="bzip2? ( app-arch/bzip2 ) + natspec? ( dev-libs/libnatspec )" +RDEPEND="${DEPEND}" + +S="${WORKDIR}/${MY_P}" + +src_prepare() { + local deb="${WORKDIR}"/debian/patches + rm \ + "${deb}"/series \ + "${deb}"/02-branding-patch-this-is-debian-unzip \ + || die + epatch "${deb}"/* + + epatch "${FILESDIR}"/${PN}-6.0-no-exec-stack.patch + use natspec && epatch "${FILESDIR}/${PN}-6.0-natspec.patch" #275244 + sed -i -r \ + -e '/^CFLAGS/d' \ + -e '/CFLAGS/s:-O[0-9]?:$(CFLAGS) $(CPPFLAGS):' \ + -e '/^STRIP/s:=.*:=true:' \ + -e "s:\:CC=\"$(tc-getCC)\":" \ + -e "s:\:LD=\"$(tc-getCC)\":" \ + -e "s:\:AS=\"$(tc-getCC)\":" \ + -e 's:LF2 = -s:LF2 = :' \ + -e 's:LF = :LF = $(LDFLAGS) :' \ + -e 's:SL = :SL = $(LDFLAGS) :' \ + -e 's:FL = :FL = $(LDFLAGS) :' \ + -e "/^#L_BZ2/s:^$(use bzip2 && echo .)::" \ + -e 's:$(AS) :$(AS) $(ASFLAGS) :g' \ + unix/Makefile \ + || die "sed unix/Makefile failed" + + # Delete bundled code to make sure we don't use it. + rm -r bzip2 || die + + epatch_user +} + +src_configure() { + case ${CHOST} in + i?86*-*linux*) TARGET="linux_asm" ;; + *linux*) TARGET="linux_noasm" ;; + i?86*-*bsd* | \ + i?86*-dragonfly*) TARGET="freebsd" ;; # mislabelled bsd with x86 asm + *bsd* | *dragonfly*) TARGET="bsd" ;; + *-darwin*) TARGET="macosx" ;; + *-cygwin*) TARGET="cygwin" ;; + *) die "Unknown target; please update the ebuild to handle ${CHOST} " ;; + esac + + [[ ${CHOST} == *linux* ]] && append-cppflags -DNO_LCHMOD + use bzip2 && append-cppflags -DUSE_BZIP2 + use unicode && append-cppflags -DUNICODE_SUPPORT -DUNICODE_WCHAR -DUTF8_MAYBE_NATIVE + append-cppflags -DLARGE_FILE_SUPPORT #281473 +} + +src_compile() { + ASFLAGS="${ASFLAGS} $(get_abi_var CFLAGS)" \ + emake -f unix/Makefile ${TARGET} +} + +src_install() { + dobin unzip funzip unzipsfx unix/zipgrep + dosym unzip /usr/bin/zipinfo + doman man/*.1 + dodoc BUGS History* README ToDo WHERE +} -- cgit v1.2.3