commit:     97b0a4930485e541668b01a239b4e2c5e63f07fa
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 14 07:14:46 2019 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Fri Jun 14 18:32:03 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=97b0a493

dev-lang/crystal: drop /usr/lib hardcoding

Package-Manager: Portage-2.3.67, Repoman-2.3.14
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 dev-lang/crystal/crystal-0.29.0-r1.ebuild          | 124 +++++++++++++++++++++
 .../crystal/files/crystal-0.29.0-no-usr-lib.patch  |  14 +++
 2 files changed, 138 insertions(+)

diff --git a/dev-lang/crystal/crystal-0.29.0-r1.ebuild 
b/dev-lang/crystal/crystal-0.29.0-r1.ebuild
new file mode 100644
index 00000000000..44419942b72
--- /dev/null
+++ b/dev-lang/crystal/crystal-0.29.0-r1.ebuild
@@ -0,0 +1,124 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit bash-completion-r1 llvm multiprocessing toolchain-funcs
+
+BV=0.29.0-1
+BV_AMD64=${BV}-linux-x86_64
+BV_X86=${BV}-linux-i686
+
+DESCRIPTION="The Crystal Programming Language"
+HOMEPAGE="https://crystal-lang.org";
+SRC_URI="https://github.com/crystal-lang/crystal/archive/${PV}.tar.gz -> 
${P}.tar.gz
+       amd64? ( 
https://github.com/crystal-lang/crystal/releases/download/${BV/-*}/crystal-${BV_AMD64}.tar.gz
 )
+       x86? ( 
https://github.com/crystal-lang/crystal/releases/download/${BV/-*}/crystal-${BV_X86}.tar.gz
 )"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="doc debug examples blocking-stdio-hack +xml +yaml"
+
+RESTRICT=test # not stable for day-to-day runs
+
+# Not compatible with llvm-7 or llvm-8
+LLVM_MAX_SLOT=6
+
+# dev-libs/boehm-gc[static-libs] dependency problem,  check the issue: 
https://github.com/manastech/crystal/issues/1382
+DEPEND="
+       sys-devel/llvm:${LLVM_MAX_SLOT}
+       dev-libs/boehm-gc[static-libs,threads]
+       dev-libs/libatomic_ops
+       dev-libs/libevent
+       dev-libs/libpcre
+       sys-libs/libunwind
+       dev-libs/pcl
+       dev-libs/gmp:0
+"
+RDEPEND="${DEPEND}
+       xml? ( dev-libs/libxml2 )
+       yaml? ( dev-libs/libyaml )
+"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-0.27.1-verbose.patch
+       "${FILESDIR}"/${PN}-0.26.1-gentoo-tests-sandbox.patch
+       "${FILESDIR}"/${PN}-0.26.1-gentoo-tests-network-sandbox-3.patch
+       "${FILESDIR}"/${PN}-0.27.0-extra-spec-flags.patch
+       #"${FILESDIR}"/${PN}-0.27.0-max-age-0-test.patch
+       "${FILESDIR}"/${PN}-0.27.0-gentoo-tests-long-unix.patch
+       "${FILESDIR}"/${PN}-0.27.0-gentoo-tests-long-unix-2.patch
+       "${FILESDIR}"/${PN}-0.27.0-tcp-server-test.patch
+       "${FILESDIR}"/${PN}-0.29.0-no-usr-lib.patch
+)
+
+src_prepare() {
+       default
+
+       use blocking-stdio-hack && eapply 
"${FILESDIR}"/"${PN}"-0.22.0-blocking-stdio-hack.patch
+}
+
+src_compile() {
+       local bootstrap_path=${WORKDIR}/${PN}-${BV}/bin
+       if [[ ! -d ${bootstrap_path} ]]; then
+               eerror "Binary tarball does not contain expected directory:"
+               die "'${bootstrap_path}' path does not exist."
+       fi
+
+       emake \
+               $(usex debug "" release=1) \
+               progress=true \
+               stats=1 \
+               threads=$(makeopts_jobs) \
+               verbose=1 \
+               \
+               CC=$(tc-getCC) \
+               CXX=$(tc-getCXX) \
+               AR=$(tc-getAR) \
+               \
+               PATH="${bootstrap_path}:${PATH}" \
+               CRYSTAL_PATH=src \
+               CRYSTAL_CONFIG_VERSION=${PV} \
+               CRYSTAL_CONFIG_PATH="lib:${EPREFIX}/usr/$(get_libdir)/crystal"
+       use doc && emake docs
+}
+
+src_test() {
+       # EXTRA_SPEC_FLAGS is useful to debug individual tests
+       # as part of full build:
+       #    USE=debug EXTRA_SPEC_FLAGS='-e parse_set_cookie' emerge -1 crystal
+       emake spec \
+               $(usex debug "" release=1) \
+               progress=true \
+               stats=1 \
+               threads=$(makeopts_jobs) \
+               verbose=1 \
+               \
+               CC=$(tc-getCC) \
+               CXX=$(tc-getCXX) \
+               AR=$(tc-getAR) \
+               \
+               CRYSTAL_PATH=src \
+               CRYSTAL_CONFIG_VERSION=${PV} \
+               \
+               "EXTRA_SPEC_FLAGS=${EXTRA_SPEC_FLAGS}"
+}
+
+src_install() {
+       insinto /usr/$(get_libdir)/crystal
+       doins -r src/.
+       dobin .build/crystal
+
+       insinto /usr/share/zsh/site-functions
+       newins etc/completion.zsh _crystal
+
+       use examples && dodoc -r samples
+
+       if use doc ; then
+               docinto api
+               dodoc -r docs/.
+       fi
+
+       newbashcomp etc/completion.bash ${PN}
+}

diff --git a/dev-lang/crystal/files/crystal-0.29.0-no-usr-lib.patch 
b/dev-lang/crystal/files/crystal-0.29.0-no-usr-lib.patch
new file mode 100644
index 00000000000..15f2ac75c09
--- /dev/null
+++ b/dev-lang/crystal/files/crystal-0.29.0-no-usr-lib.patch
@@ -0,0 +1,14 @@
+On amd64 linux /usr/lib does not match default 64-bit ABI.
+
+Let's rely on default compiler and linker paths instead.
+--- a/src/compiler/crystal/codegen/link.cr
++++ b/src/compiler/crystal/codegen/link.cr
+@@ -105,7 +105,7 @@ module Crystal
+     end
+ 
+     private def lib_flags_posix
+-      library_path = ["/usr/lib", "/usr/local/lib"]
++      library_path = [] of String
+       has_pkg_config = nil
+ 
+       String.build do |flags|

Reply via email to