From cbadcf4152a101a8e5c08a4ab44b818c7cd136ca Mon Sep 17 00:00:00 2001 From: Michael Haubenwallner Date: Thu, 25 Apr 2019 09:02:20 +0200 Subject: app-admin/cygwin-rebase: new package Package-Manager: Portage-2.3.51, Repoman-2.3.11 Signed-off-by: Michael Haubenwallner --- app-admin/cygwin-rebase/Manifest | 2 + app-admin/cygwin-rebase/cygwin-rebase-4.4.4.ebuild | 76 ++++++++++++++++++++++ app-admin/cygwin-rebase/cygwin-rebase-9999.ebuild | 76 ++++++++++++++++++++++ app-admin/cygwin-rebase/metadata.xml | 22 +++++++ 4 files changed, 176 insertions(+) create mode 100644 app-admin/cygwin-rebase/Manifest create mode 100644 app-admin/cygwin-rebase/cygwin-rebase-4.4.4.ebuild create mode 100644 app-admin/cygwin-rebase/cygwin-rebase-9999.ebuild create mode 100644 app-admin/cygwin-rebase/metadata.xml (limited to 'app-admin') diff --git a/app-admin/cygwin-rebase/Manifest b/app-admin/cygwin-rebase/Manifest new file mode 100644 index 000000000000..7dd1c0b357fd --- /dev/null +++ b/app-admin/cygwin-rebase/Manifest @@ -0,0 +1,2 @@ +DIST cygwin-rebase-4.4.4.tar.gz 114445 BLAKE2B f0741513fb3b636876ce6e33b882e4075d41606118ec1c663939b2e9a9d8690360011352f27ebfeffc49a644b5de8c5026bcab0fb7fb9b41ff36ee6cd6c031c8 SHA512 d155b05f663fab971c70b6618755ac528d49b96e17017c0fcabf26332e4a50c46ee346705fc59490f741bf37625e94a2bba8cc36d41c23f5643d54d08eb1051b +DIST cygwin-rebase-4.4.4_merge-files-flag-0.patch 15409 BLAKE2B 6f8061903439c9baa508eb130f43fe5e9fe8b71725ab5efe92d6d8a667b71c467f2f0fddd8b4ca22c68087e24bbafc2db6c288ef87d125b23c8f8d35bb1b5a37 SHA512 b067751218026867681c24003a4f224599b5fd6a29920c3662b7964a3447db8b6b680acfaab637de911ecea08c3196bf268eba3237b92830dcbf531e05842fb2 diff --git a/app-admin/cygwin-rebase/cygwin-rebase-4.4.4.ebuild b/app-admin/cygwin-rebase/cygwin-rebase-4.4.4.ebuild new file mode 100644 index 000000000000..9575601c7c86 --- /dev/null +++ b/app-admin/cygwin-rebase/cygwin-rebase-4.4.4.ebuild @@ -0,0 +1,76 @@ +# Copyright 2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DESCRIPTION="Core of the automatic rebase facility during postinstall on Cygwin" +HOMEPAGE="https://cygwin.com" + +LICENSE="GPL-2" +SLOT="0" +IUSE="" + +inherit autotools + +if [[ ${PV} == 9999 ]] +then + EGIT_REPO_URI="https://sourceware.org/git/cygwin-apps/rebase.git" + EGIT_REPO_URI="https://github.com/haubi/cygwin-rebase.git" + EGIT_BRANCH="gentoo" + inherit git-r3 +else + # Upstream does not provide archived source tarballs from git release tags, + # only non archived cygwin distro packages with embedded source tarballs. + # For now, we download from haubi's github mirror repo, having + # repo name "cygwin-rebase" and tag names like "rebase-4-4-4". + MY_PN=cygwin-rebase-rebase + MY_PV=${PV//./-} + S="${WORKDIR}/${MY_PN}-${MY_PV}" + SRC_URI=" + https://github.com/haubi/cygwin-rebase/archive/rebase-${MY_PV}.tar.gz -> ${P}.tar.gz + https://github.com/haubi/cygwin-rebase/compare/rebase-${MY_PV}...rebase-${MY_PV}_merge-files-flag-0.patch -> ${P}_merge-files-flag-0.patch + " + PATCHES=( "${DISTDIR}/${P}_merge-files-flag-0.patch" ) + KEYWORDS="-* ~x64-cygwin" +fi + +DEPEND="" +RDEPEND="${DEPEND}" +BDEPEND="" + +src_prepare() { + default + # do not bother upstream with bug reports yet + sed -e "/AC_INIT/{s|rebase|${PN}|;s|cygwin@cygwin.com|https://bugs.gentoo.org/|}" \ + -i configure.ac || die + eautoreconf +} + +src_configure() { + econf --with-posix-shell="${BASH}" +} + +src_install() { + default + # do not work nor make so much sense in Gentoo Prefix + rm -f "${ED}"/usr/bin/{rebase,peflags}all || die +} + +pkg_preinst() { + local rebasedb + local baseaddr + case ${CHOST} in + x86_64-*-cygwin*) + rebasedb=/etc/rebase.db.x86_64 + baseaddr=0x1000000000 + ;; + esac + [[ ${rebasedb} ]] || die "CHOST ${CHOST} is not supported for ${PN}." + + [[ -s ${EROOT}${rebasedb} ]] && return 0 + + einfo "Creating initial rebase database with default base address ${baseaddr}..." + cp /bin/cygwin1.dll "${T}/initial.dll" || die + "${ED}/usr/bin/rebase" --verbose "--base=${baseaddr}" --database "${T}/initial.dll" || die + eend $? +} diff --git a/app-admin/cygwin-rebase/cygwin-rebase-9999.ebuild b/app-admin/cygwin-rebase/cygwin-rebase-9999.ebuild new file mode 100644 index 000000000000..9575601c7c86 --- /dev/null +++ b/app-admin/cygwin-rebase/cygwin-rebase-9999.ebuild @@ -0,0 +1,76 @@ +# Copyright 2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DESCRIPTION="Core of the automatic rebase facility during postinstall on Cygwin" +HOMEPAGE="https://cygwin.com" + +LICENSE="GPL-2" +SLOT="0" +IUSE="" + +inherit autotools + +if [[ ${PV} == 9999 ]] +then + EGIT_REPO_URI="https://sourceware.org/git/cygwin-apps/rebase.git" + EGIT_REPO_URI="https://github.com/haubi/cygwin-rebase.git" + EGIT_BRANCH="gentoo" + inherit git-r3 +else + # Upstream does not provide archived source tarballs from git release tags, + # only non archived cygwin distro packages with embedded source tarballs. + # For now, we download from haubi's github mirror repo, having + # repo name "cygwin-rebase" and tag names like "rebase-4-4-4". + MY_PN=cygwin-rebase-rebase + MY_PV=${PV//./-} + S="${WORKDIR}/${MY_PN}-${MY_PV}" + SRC_URI=" + https://github.com/haubi/cygwin-rebase/archive/rebase-${MY_PV}.tar.gz -> ${P}.tar.gz + https://github.com/haubi/cygwin-rebase/compare/rebase-${MY_PV}...rebase-${MY_PV}_merge-files-flag-0.patch -> ${P}_merge-files-flag-0.patch + " + PATCHES=( "${DISTDIR}/${P}_merge-files-flag-0.patch" ) + KEYWORDS="-* ~x64-cygwin" +fi + +DEPEND="" +RDEPEND="${DEPEND}" +BDEPEND="" + +src_prepare() { + default + # do not bother upstream with bug reports yet + sed -e "/AC_INIT/{s|rebase|${PN}|;s|cygwin@cygwin.com|https://bugs.gentoo.org/|}" \ + -i configure.ac || die + eautoreconf +} + +src_configure() { + econf --with-posix-shell="${BASH}" +} + +src_install() { + default + # do not work nor make so much sense in Gentoo Prefix + rm -f "${ED}"/usr/bin/{rebase,peflags}all || die +} + +pkg_preinst() { + local rebasedb + local baseaddr + case ${CHOST} in + x86_64-*-cygwin*) + rebasedb=/etc/rebase.db.x86_64 + baseaddr=0x1000000000 + ;; + esac + [[ ${rebasedb} ]] || die "CHOST ${CHOST} is not supported for ${PN}." + + [[ -s ${EROOT}${rebasedb} ]] && return 0 + + einfo "Creating initial rebase database with default base address ${baseaddr}..." + cp /bin/cygwin1.dll "${T}/initial.dll" || die + "${ED}/usr/bin/rebase" --verbose "--base=${baseaddr}" --database "${T}/initial.dll" || die + eend $? +} diff --git a/app-admin/cygwin-rebase/metadata.xml b/app-admin/cygwin-rebase/metadata.xml new file mode 100644 index 000000000000..1dc5534cdb9b --- /dev/null +++ b/app-admin/cygwin-rebase/metadata.xml @@ -0,0 +1,22 @@ + + + + + haubi@gentoo.org + Michael Haubenwallner + + + The rebaseall utility is a convenient way for users that suffer from the + Cygwin rebase problem to rebase their entire system (i.e., all of their + DLLs). The following is a list of known Cygwin applications that are + affected by the rebase problem: + + Apache + Perl + Python + + The rebase problem is due to fork() failing when it is unable to load + DLLs in the child at the same address as in the parent. This is caused + by DLLs which have conflicting base addresses. + + -- cgit v1.2.3-65-gdbad