75ffe55fa00c85b884e9050bc410419b4a5566fa
[gentoo.git] / sys-libs / db / db-4.6.21_p4-r2.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=7
5
6 inherit autotools db flag-o-matic java-pkg-opt-2 multilib
7
8 #Number of official patches
9 #PATCHNO=`echo ${PV}|sed -e "s,\(.*_p\)\([0-9]*\),\2,"`
10 PATCHNO="${PV/*.*.*_p}"
11 if [[ ${PATCHNO} == "${PV}" ]] ; then
12         MY_PV="${PV}"
13         MY_P="${P}"
14         PATCHNO=0
15 else
16         MY_PV="${PV/_p${PATCHNO}}"
17         MY_P="${PN}-${MY_PV}"
18 fi
19
20 S="${WORKDIR}/${MY_P}/build_unix"
21 DESCRIPTION="Oracle Berkeley DB"
22 HOMEPAGE="http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html"
23 SRC_URI="http://download.oracle.com/berkeley-db/${MY_P}.tar.gz"
24 for (( i=1 ; i<=${PATCHNO} ; i++ )) ; do
25         export SRC_URI="${SRC_URI} http://www.oracle.com/technology/products/berkeley-db/db/update/${MY_PV}/patch.${MY_PV}.${i}"
26 done
27
28 LICENSE="Sleepycat"
29 SLOT="$(ver_cut 1-2)"
30 KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 m68k ~mips ppc ppc64 s390 sparc x86"
31 IUSE="tcl java doc cxx"
32 RESTRICT="!test? ( test )"
33
34 DEPEND="tcl? ( >=dev-lang/tcl-8.4 )
35         java? ( >=virtual/jdk-1.4 )
36         >=sys-devel/binutils-2.16.1"
37 RDEPEND="tcl? ( dev-lang/tcl )
38         java? ( >=virtual/jre-1.4 )"
39
40 PATCHES=(
41         "${FILESDIR}"/"${PN}"-4.4-libtool.patch
42
43         # use the includes from the prefix
44         "${FILESDIR}"/"${PN}"-"${SLOT}"-jni-check-prefix-first.patch
45         "${FILESDIR}"/"${PN}"-4.2-listen-to-java-options.patch
46 )
47
48 # Required to avoid unpack attempt of patches
49 src_unpack() {
50         unpack "${MY_P}".tar.gz
51 }
52
53 src_prepare() {
54         pushd "${WORKDIR}"/"${MY_P}" &>/dev/null || die
55         for (( i=1 ; i<=${PATCHNO} ; i++ ))
56         do
57                 eapply -p0 "${DISTDIR}"/patch."${MY_PV}"."${i}"
58         done
59
60         default
61
62         sed -e "/^DB_RELEASE_DATE=/s/%B %e, %Y/%Y-%m-%d/" \
63                 -i dist/RELEASE || die
64
65         # Include the SLOT for Java JAR files
66         # This supersedes the unused jarlocation patches.
67         sed -r \
68                 -e '/jarfile=.*\.jar$/s,(.jar$),-$(LIBVERSION)\1,g' \
69                 -i dist/Makefile.in || die
70
71         pushd dist &>/dev/null || die
72         rm aclocal/libtool.m4 || die
73         sed \
74                 -e '/AC_PROG_LIBTOOL$/aLT_OUTPUT' \
75                 -i configure.ac || die
76         sed \
77                 -e '/^AC_PATH_TOOL/s/ sh, none/ bash, none/' \
78                 -i aclocal/programs.m4 || die
79
80         AT_M4DIR="aclocal aclocal_java" eautoreconf
81
82         # Upstream sucks - they do autoconf and THEN replace the version variables.
83         . ./RELEASE
84         sed \
85                 -e "s/__EDIT_DB_VERSION_MAJOR__/$DB_VERSION_MAJOR/g" \
86                 -e "s/__EDIT_DB_VERSION_MINOR__/$DB_VERSION_MINOR/g" \
87                 -e "s/__EDIT_DB_VERSION_PATCH__/$DB_VERSION_PATCH/g" \
88                 -e "s/__EDIT_DB_VERSION_STRING__/$DB_VERSION_STRING/g" \
89                 -e "s/__EDIT_DB_VERSION_UNIQUE_NAME__/$DB_VERSION_UNIQUE_NAME/g" \
90                 -e "s/__EDIT_DB_VERSION__/$DB_VERSION/g" \
91                 -i configure || die
92
93         popd &>/dev/null || die
94         popd &>/dev/null || die
95 }
96
97 src_configure() {
98         # compilation with -O0 fails on amd64, see bug #171231
99         if use amd64 ; then
100                 replace-flags -O0 -O2
101                 is-flagq -O[s123] || append-flags -O2
102         fi
103
104         local myconf=(
105                 --enable-compat185
106                 --enable-o_direct
107                 --without-uniquename
108                 --disable-rpc
109                 --host="${CHOST}"
110
111                 $(usex amd64 '--with-mutex=x86/gcc-assembly' '')
112                 $(use_enable cxx)
113                 $(use_enable tcl)
114                 $(usex tcl "--with-tcl=${EPREFIX}/usr/$(get_libdir)" '') #"
115                 $(use_enable java)
116         )
117
118         if use java; then
119                 myconf+=(
120                         --with-java-prefix="${JAVA_HOME}"
121                         --with-javac-flags="$(java-pkg_javac-args)"
122                 )
123         fi
124
125         # the entire testsuite needs the TCL functionality
126         if use tcl && use test ; then
127                 myconf+=( --enable-test )
128         else
129                 myconf+=( --disable-test )
130         fi
131
132         # Add linker versions to the symbols. Easier to do, and safer than header file
133         # mumbo jumbo.
134         if use userland_GNU; then
135                 append-ldflags -Wl,--default-symver
136         fi
137
138         ECONF_SOURCE="${S}"/../dist \
139         econf "${myconf[@]}"
140
141         sed -e "s,\(^STRIP *=\).*,\1\"true\"," -i Makefile || die
142 }
143
144 src_install() {
145         emake \
146                 DESTDIR="${D}" \
147                 libdir="${EPREFIX}/usr/$(get_libdir)" \
148                 STRIP="true" \
149                 install
150
151         db_src_install_usrbinslot
152
153         db_src_install_headerslot
154
155         db_src_install_doc
156
157         db_src_install_usrlibcleanup
158
159         dodir /usr/sbin
160         # This file is not always built, and no longer exists as of db-4.8
161         if [[ -f "${ED}"/usr/bin/berkeley_db_svc ]] ; then
162                 mv "${ED}"/usr/bin/berkeley_db_svc \
163                         "${ED}"/usr/sbin/berkeley_db"${SLOT/./}"_svc || die
164         fi
165
166         if use java; then
167                 java-pkg_regso "${ED}"/usr/"$(get_libdir)"/libdb_java*.so
168                 java-pkg_dojar "${ED}"/usr/"$(get_libdir)"/*.jar
169                 rm -f "${ED}"/usr/"$(get_libdir)"/*.jar
170         fi
171 }
172
173 pkg_postinst() {
174         db_fix_so
175 }
176
177 pkg_postrm() {
178         db_fix_so
179 }