commit:     e1bee0588417636345663574e7c1ef127abbebe6
Author:     Mark Wright <gienah <AT> gentoo <DOT> org>
AuthorDate: Mon Jan  2 00:18:51 2017 +0000
Commit:     Mark Wright <gienah <AT> gentoo <DOT> org>
CommitDate: Mon Jan  2 00:20:08 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e1bee058

sci-mathematics/z3: Thanks to Yichao Zhou, jlec and slyfox for development
on the z3 ebuilds.  Thanks to David E. Narv?ez for reporting and patching.

Gentoo-bug: 602498, 602600

Package-Manager: portage-2.3.3

 sci-mathematics/z3/Manifest                       |   2 +
 sci-mathematics/z3/files/z3-4.1.2-configure.patch |  76 +++++++++++
 sci-mathematics/z3/files/z3-4.4.1-gcc-6.patch     |  18 +++
 sci-mathematics/z3/metadata.xml                   |  22 +++
 sci-mathematics/z3/z3-4.4.1.ebuild                | 142 ++++++++++++++++++++
 sci-mathematics/z3/z3-4.5.0.ebuild                | 156 ++++++++++++++++++++++
 6 files changed, 416 insertions(+)

diff --git a/sci-mathematics/z3/Manifest b/sci-mathematics/z3/Manifest
new file mode 100644
index 00000000..45b385a
--- /dev/null
+++ b/sci-mathematics/z3/Manifest
@@ -0,0 +1,2 @@
+DIST z3-4.4.1.tar.gz 3347371 SHA256 
50967cca12c5c6e1612d0ccf8b6ebf5f99840a783d6cf5216336a2b59c37c0ce SHA512 
76991a24f47f2b53ceb8d7a9a6be19913c57994ffb6cf6acfe30f61b2e73959cf02a99f656053594fccb5aaf4d1f44b3ae7e51f1c8953b213d738ceeeaea74f8
 WHIRLPOOL 
aea616b43ae1a962cf00f4748b5a51b38586ccee393e4e27efbf806635a35af416edd6143b4cf01cf2b0df043f64ab4822f7767bb1c0a340fd57ee03627d39e5
+DIST z3-4.5.0.tar.gz 3573695 SHA256 
aeae1d239c5e06ac183be7dd853775b84698db1265cb2258e5918a28372d4a0c SHA512 
1ebc2c908d90b6b879f1e819c864ff894613276af47a440f27cf94968c195656952434754c3eb20f4bdbdd8497d227d22e1b4821c0d320b11052b5648d9e2dc7
 WHIRLPOOL 
3178973c2cce1ab3a87db134f7314d54aa5b491500c9f7c30c74d5672cb4995f7d468e62cd18d54b312d4d94fee8b1267c25d09e95075361e869bb36859810ab

diff --git a/sci-mathematics/z3/files/z3-4.1.2-configure.patch 
b/sci-mathematics/z3/files/z3-4.1.2-configure.patch
new file mode 100644
index 00000000..08ace2b
--- /dev/null
+++ b/sci-mathematics/z3/files/z3-4.1.2-configure.patch
@@ -0,0 +1,76 @@
+--- z3-orig/configure.in       2012-10-04 16:41:04.000000000 +1000
++++ z3/configure.in    2012-10-18 15:56:49.895967069 +1100
+@@ -22,20 +22,29 @@
+ 
+ host_os=`uname -s`
+ 
++AC_ARG_ENABLE([static],
++[ --disable-static disable static],
++[static=${enableval}], [static=yes])
++
++if test "$static" = "yes"; then
++  STATIC_FLAGS=-static
++else
++  STATIC_FLAGS=
++fi
++
+ AS_IF([test "$host_os" = "Darwin"], [
+   PLATFORM=osx
+   SO_EXT=dylib
+-  SLIBFLAGS="-dynamiclib -fopenmp"
++  LDFLAGS="${LDFLAGS}"
++  SLIBFLAGS="${LDFLAGS} -dynamiclib -fopenmp"
+   COMP_VERSIONS="-compatibility_version \$(Z3_VERSION) -current_version 
\$(Z3_VERSION)"
+-  STATIC_FLAGS=
+   CPPFLAGS+=" -mmacosx-version-min=10.4"
+ ], [test "$host_os" = "Linux"], [
+   PLATFORM=linux
+-  SO_EXT=so
+-  LDFLAGS=-lrt
+-  SLIBFLAGS="-shared -fopenmp"
++  SO_EXT=so.1.0
++  LDFLAGS="${LDFLAGS} -lrt"
++  SLIBFLAGS="${LDFLAGS} -shared -fopenmp"
+   COMP_VERSIONS=
+-  STATIC_FLAGS=-static
+ ], [
+   AC_MSG_ERROR([Unknown host platform: $host_os])
+ ])
+@@ -88,15 +97,17 @@
+    AC_CHECK_LIB(gmp, __gmpz_cmp, LIBS="-lgmp $LIBS", AC_MSG_ERROR([GMP 
library not found]))
+    dnl Look for libgmp.a at /usr/local/lib and /usr/lib
+    dnl TODO: make the following test more robust...
+-   if test -e /usr/local/lib/libgmp.a; then
+-      GMP_STATIC_LIB="/usr/local/lib/libgmp.a"
+-   else if test -e /usr/lib/libgmp.a; then
+-      GMP_STATIC_LIB="/usr/lib/libgmp.a"
+-   else if test -e /usr/lib/libgmp.dll.a; then
+-      GMP_STATIC_LIB="/usr/lib/libgmp.dll.a"
+-   else
+-      AC_MSG_ERROR([Failed to find libgmp.a])   
+-   fi fi fi
++   if test "$static" = "yes"; then
++      if test -e /usr/local/lib/libgmp.a; then
++         GMP_STATIC_LIB="/usr/local/lib/libgmp.a"
++       else if test -e /usr/lib/libgmp.a; then
++         GMP_STATIC_LIB="/usr/lib/libgmp.a"
++       else if test -e /usr/lib/libgmp.dll.a; then
++         GMP_STATIC_LIB="/usr/lib/libgmp.dll.a"
++       else
++         AC_MSG_ERROR([Failed to find libgmp.a])   
++       fi fi fi
++   fi
+ fi
+ 
+ AC_PROG_CXXCPP
+--- z3-orig/Makefile.in        2012-10-04 16:41:02.000000000 +1000
++++ z3/Makefile.in     2012-10-18 15:25:00.716162723 +1100
+@@ -175,7 +175,7 @@
+ 
+ $(BIN_DIR)/lib$(Z3).@SO_EXT@: $(OBJ_DIR) $(BIN_DIR) $(LIB_OBJS)
+       @mkdir -p $(BIN_DIR)
+-      $(CXX) -o $(BIN_DIR)/lib$(Z3).@SO_EXT@  $(LIB_OBJS) $(LIBFLAGS) $(LIBS) 
@COMP_VERSIONS@
++      $(CXX) -Wl,-soname=lib$(Z3).@SO_EXT@ -o $(BIN_DIR)/lib$(Z3).@SO_EXT@  
$(LIB_OBJS) $(LIBFLAGS) $(LIBS) @COMP_VERSIONS@
+ 
+ $(BIN_DIR)/lib$(Z3).a: $(OBJ_DIR) $(BIN_DIR) $(LIB_OBJS)
+       @mkdir -p $(BIN_DIR)

diff --git a/sci-mathematics/z3/files/z3-4.4.1-gcc-6.patch 
b/sci-mathematics/z3/files/z3-4.4.1-gcc-6.patch
new file mode 100644
index 00000000..2dc0ddd
--- /dev/null
+++ b/sci-mathematics/z3/files/z3-4.4.1-gcc-6.patch
@@ -0,0 +1,18 @@
+diff --git a/src/util/debug.cpp b/src/util/debug.cpp
+index 54c67fe..66676c6 100644
+--- a/src/util/debug.cpp
++++ b/src/util/debug.cpp
+@@ -78,3 +78,3 @@ void invoke_gdb() {
+         char result;
+-        bool ok = (std::cin >> result);
++        bool ok = bool(std::cin >> result);
+         if (!ok) exit(ERR_INTERNAL_FATAL); // happens if std::cin is eof or 
unattached.
+diff --git a/src/util/mpz.cpp b/src/util/mpz.cpp
+index 8559279..7dca14b 100644
+--- a/src/util/mpz.cpp
++++ b/src/util/mpz.cpp
+@@ -136,3 +136,3 @@ mpz_manager<SYNCH>::mpz_manager():
+     mpz one(1);
+-    set(m_two64, UINT64_MAX);
++    set(m_two64, (uint64)UINT64_MAX);
+     add(m_two64, one, m_two64);

diff --git a/sci-mathematics/z3/metadata.xml b/sci-mathematics/z3/metadata.xml
new file mode 100644
index 00000000..d8a91e5
--- /dev/null
+++ b/sci-mathematics/z3/metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+  <maintainer type="person">
+    <email>[email protected]</email>
+  </maintainer>
+  <maintainer type="project">
+    <email>[email protected]</email>
+    <name>Gentoo Haskell</name>
+  </maintainer>
+  <maintainer type="project">
+    <email>[email protected]</email>
+    <name>Gentoo Science Project</name>
+  </maintainer>
+<longdescription lang='en'>
+Z3 is a high-performance theorem prover being developed at Microsoft Research.
+</longdescription>
+<use>
+  <flag name='isabelle'>Add integration support for the Isabelle/HOL
+  theorem prover.</flag>
+</use>
+</pkgmetadata>

diff --git a/sci-mathematics/z3/z3-4.4.1.ebuild 
b/sci-mathematics/z3/z3-4.4.1.ebuild
new file mode 100644
index 00000000..168ae61
--- /dev/null
+++ b/sci-mathematics/z3/z3-4.4.1.ebuild
@@ -0,0 +1,142 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit flag-o-matic java-pkg-2 java-pkg-simple python-r1 toolchain-funcs
+
+DESCRIPTION="An efficient theorem prover"
+HOMEPAGE="http://z3.codeplex.com/";
+SRC_URI="https://github.com/Z3Prover/z3/archive/${P}.tar.gz";
+
+SLOT="0"
+LICENSE="MIT"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc gmp isabelle java python"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="${PYTHON_DEPS}
+       gmp? ( dev-libs/gmp:0 )"
+DEPEND="${RDEPEND}
+       java? ( >=virtual/jdk-1.8 )"
+
+S=${WORKDIR}/${PN}-${P}
+JAVA_SRC_DIR=${S}/src/api/java
+
+pkg_setup() {
+       if [[ ${MERGE_TYPE} != binary ]]; then
+               if [[ $(tc-getCXX)$ == *g++* ]] && ! tc-has-openmp; then
+                       ewarn "Please use an openmp compatible compiler"
+                       ewarn "like >gcc-4.2 with USE=openmp"
+                       die "Openmp support missing in compiler"
+               fi
+       fi
+}
+
+src_prepare() {
+       eapply "${FILESDIR}"/${P}-gcc-6.patch
+       default
+
+       sed \
+               -e 's:-O3::g' \
+               -e 's:-fomit-frame-pointer::' \
+               -e 's:-msse2::g' \
+               -e 's:-msse::g' \
+               -e "/LINK_EXTRA_FLAGS/s:@LDFLAGS@:-lrt $(usex gmp -lgmp ""):g" \
+               -e 's:t@\$:t\$:g' \
+               -i scripts/*mk* || die
+
+       sed \
+               -e "s:SLIBEXTRAFLAGS = '':SLIBEXTRAFLAGS = 
'-Wl,-soname,lib${PN}.so.0.1':" \
+               -i scripts/mk_util.py || die
+
+       append-ldflags -fopenmp
+}
+
+src_configure() {
+       python_setup
+       python_export PYTHON_SITEDIR
+       export Z3_INSTALL_LIB_DIR="$(get_libdir)"
+       export Z3_INSTALL_INCLUDE_DIR="include/z3"
+       set -- \
+               $(usex gmp --gmp "") \
+               $(usex java --java "")
+       elog ./configure "$@"
+       ./configure "$@" || die
+       ${EPYTHON} scripts/mk_make.py || die
+}
+
+src_compile() {
+       emake \
+               --directory="build" \
+               CXX=$(tc-getCXX) \
+               LINK="$(tc-getCXX) ${LDFLAGS}" \
+               LINK_FLAGS="${LDFLAGS}"
+
+       use java && java-pkg-simple_src_compile
+}
+
+src_install() {
+       dodir /usr/include/${PN}
+       insinto /usr/include/${PN}
+       doins src/api/z3*.h src/api/c++/z3*.h
+       dolib.so build/*.so
+       dobin build/z3
+
+       if use python; then
+               python_foreach_impl python_domodule src/api/python/*.py
+       fi
+
+       use java && java-pkg-simple_src_install
+
+       if use isabelle; then
+               ISABELLE_HOME="${ROOT}usr/share/Isabelle"
+               dodir "${ISABELLE_HOME}/contrib/${PN}-${PV}/etc"
+               cat <<- EOF >> "${S}/settings"
+                       Z3_COMPONENT="\$COMPONENT"
+                       Z3_HOME="${ROOT}usr/bin"
+                       Z3_SOLVER="${ROOT}usr/bin/z3"
+                       Z3_REMOTE_SOLVER="z3"
+                       Z3_VERSION="${PV}"
+                       Z3_INSTALLED="yes"
+                       Z3_NON_COMMERCIAL="yes"
+               EOF
+               insinto "${ISABELLE_HOME}/contrib/${PN}-${PV}/etc"
+               doins "${S}/settings"
+       fi
+
+       local DOCS=( "README" "RELEASE_NOTES" )
+       einstalldocs
+}
+
+pkg_postinst() {
+       if use isabelle; then
+               if [ -f "${ROOT}etc/isabelle/components" ]; then
+                       if egrep "contrib/${PN}-[0-9.]*" 
"${ROOT}etc/isabelle/components"; then
+                               sed -e "/contrib\/${PN}-[0-9.]*/d" \
+                                       -i "${ROOT}etc/isabelle/components"
+                       fi
+                       cat <<- EOF >> "${ROOT}etc/isabelle/components"
+                               contrib/${PN}-${PV}
+                       EOF
+               fi
+       fi
+}
+
+pkg_postrm() {
+       if use isabelle; then
+               if [ ! -f "${ROOT}usr/bin/Z3" ]; then
+                       if [ -f "${ROOT}etc/isabelle/components" ]; then
+                               # Note: this sed should only match the version 
of this ebuild
+                               # Which is what we want as we do not want to 
remove the line
+                               # of a new Isabelle component being installed 
during an upgrade.
+                               sed -e "/contrib\/${PN}-${PV}/d" \
+                                       -i "${ROOT}etc/isabelle/components"
+                       fi
+               fi
+       fi
+}

diff --git a/sci-mathematics/z3/z3-4.5.0.ebuild 
b/sci-mathematics/z3/z3-4.5.0.ebuild
new file mode 100644
index 00000000..58d2b6b
--- /dev/null
+++ b/sci-mathematics/z3/z3-4.5.0.ebuild
@@ -0,0 +1,156 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit flag-o-matic java-pkg-2 java-pkg-simple python-r1 toolchain-funcs
+
+DESCRIPTION="An efficient theorem prover"
+HOMEPAGE="http://z3.codeplex.com/";
+SRC_URI="https://github.com/Z3Prover/z3/archive/${P}.tar.gz";
+
+SLOT="0"
+LICENSE="MIT"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc gmp isabelle java python"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="${PYTHON_DEPS}
+       gmp? ( dev-libs/gmp:0 )"
+DEPEND="${RDEPEND}
+       java? ( >=virtual/jdk-1.8 )"
+
+S=${WORKDIR}/${PN}-${P}
+JAVA_SRC_DIR=${S}/src/api/java
+
+pkg_setup() {
+       if [[ ${MERGE_TYPE} != binary ]]; then
+               if [[ $(tc-getCXX)$ == *g++* ]] && ! tc-has-openmp; then
+                       ewarn "Please use an openmp compatible compiler"
+                       ewarn "like >gcc-4.2 with USE=openmp"
+                       die "Openmp support missing in compiler"
+               fi
+       fi
+}
+
+src_prepare() {
+       default
+
+       sed \
+               -e 's:-O3::g' \
+               -e 's:-fomit-frame-pointer::' \
+               -e 's:-msse2::g' \
+               -e 's:-msse::g' \
+               -e "/LINK_EXTRA_FLAGS/s:@LDFLAGS@:-lrt $(usex gmp -lgmp ""):g" \
+               -e 's:t@\$:t\$:g' \
+               -i scripts/*mk* || die
+
+       sed \
+               -e "s:SLIBEXTRAFLAGS = '':SLIBEXTRAFLAGS = 
'-Wl,-soname,lib${PN}.so.0.1':" \
+               -i scripts/mk_util.py || die
+
+       sed -e 's:api\\html\\ml:api/html/ml:' \
+               -e 's:python/z3.py:python/z3/z3.py:' \
+               -i doc/mk_api_doc.py || die
+
+       append-ldflags -fopenmp
+}
+
+src_configure() {
+       python_setup
+       python_export PYTHON_SITEDIR
+       export Z3_INSTALL_LIB_DIR="$(get_libdir)"
+       export Z3_INSTALL_INCLUDE_DIR="include/z3"
+       set -- \
+               --pypkgdir="${PYTHON_SITEDIR}" \
+               --prefix="${ROOT}usr" \
+               $(usex gmp --gmp "") \
+               $(usex python --python "") \
+               $(usex java --java "")
+       elog ./configure "$@"
+       ./configure "$@" || die
+       ${EPYTHON} scripts/mk_make.py || die
+}
+
+src_compile() {
+       emake \
+               --directory="build" \
+               CXX=$(tc-getCXX) \
+               LINK="$(tc-getCXX) ${LDFLAGS}" \
+               LINK_FLAGS="${LDFLAGS}"
+
+       use java && java-pkg-simple_src_compile
+
+       if use doc; then
+               pushd doc || die
+               ${EPYTHON} mk_api_doc.py || die
+               popd || die
+       fi
+}
+
+src_install() {
+       emake \
+               --directory="build" \
+               CXX=$(tc-getCXX) \
+               LINK="$(tc-getCXX) ${LDFLAGS}" \
+               LINK_FLAGS="${LDFLAGS}" \
+               install DESTDIR="${D}"
+
+       if use python; then
+               python_foreach_impl python_domodule src/api/python/*.py
+       fi
+
+       use java && java-pkg-simple_src_install
+
+       if use isabelle; then
+               ISABELLE_HOME="${ROOT}usr/share/Isabelle"
+               dodir "${ISABELLE_HOME}/contrib/${PN}-${PV}/etc"
+               cat <<- EOF >> "${S}/settings"
+                       Z3_COMPONENT="\$COMPONENT"
+                       Z3_HOME="${ROOT}usr/bin"
+                       Z3_SOLVER="${ROOT}usr/bin/z3"
+                       Z3_REMOTE_SOLVER="z3"
+                       Z3_VERSION="${PV}"
+                       Z3_INSTALLED="yes"
+                       Z3_NON_COMMERCIAL="yes"
+               EOF
+               insinto "${ISABELLE_HOME}/contrib/${PN}-${PV}/etc"
+               doins "${S}/settings"
+       fi
+
+       local DOCS=( "README.md" "RELEASE_NOTES" )
+       local HTML_DOCS=( "doc/api/html" )
+       einstalldocs
+}
+
+pkg_postinst() {
+       if use isabelle; then
+               if [ -f "${ROOT}etc/isabelle/components" ]; then
+                       if egrep "contrib/${PN}-[0-9.]*" 
"${ROOT}etc/isabelle/components"; then
+                               sed -e "/contrib\/${PN}-[0-9.]*/d" \
+                                       -i "${ROOT}etc/isabelle/components"
+                       fi
+                       cat <<- EOF >> "${ROOT}etc/isabelle/components"
+                               contrib/${PN}-${PV}
+                       EOF
+               fi
+       fi
+}
+
+pkg_postrm() {
+       if use isabelle; then
+               if [ ! -f "${ROOT}usr/bin/Z3" ]; then
+                       if [ -f "${ROOT}etc/isabelle/components" ]; then
+                               # Note: this sed should only match the version 
of this ebuild
+                               # Which is what we want as we do not want to 
remove the line
+                               # of a new Isabelle component being installed 
during an upgrade.
+                               sed -e "/contrib\/${PN}-${PV}/d" \
+                                       -i "${ROOT}etc/isabelle/components"
+                       fi
+               fi
+       fi
+}

Reply via email to