You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
249 lines
7.4 KiB
249 lines
7.4 KiB
# Copyright 1999-2024 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
MY_P=${PN/f/F}-$(ver_rs 4 '-')
|
|
inherit autotools flag-o-matic toolchain-funcs
|
|
|
|
DESCRIPTION="Relational database offering many ANSI SQL:2003 and some SQL:2008 features"
|
|
HOMEPAGE="https://www.firebirdsql.org/"
|
|
|
|
SRC_URI="
|
|
https://github.com/FirebirdSQL/firebird/releases/download/v$(ver_cut 1-3)/${MY_P}.tar.bz2
|
|
doc? (
|
|
https://firebirdsql.org/file/documentation/pdf/en/refdocs/fblangref30/firebird-30-language-reference.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/qsg3/firebird-3-quickstartguide.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/refdocs/fbdevgd30/firebird-30-developers-guide.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/isql/firebird-isql.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/gsec/firebird-gsec.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/gbak/firebird-gbak.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/nbackup/firebird-nbackup.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/gstat/firebird-gstat.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/gfix/firebird-gfix.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/fbmgr/firebird-fbmgr.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/gsplit/firebird-gsplit.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/generatorguide/firebird-generator-guide.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/nullguide/firebird-null-guide.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/fbmetasecur/firebird-metadata-security.pdf
|
|
https://firebirdsql.org/file/documentation/pdf/en/firebirddocs/ufb/using-firebird.pdf
|
|
)
|
|
"
|
|
S="${WORKDIR}/${MY_P}"
|
|
|
|
LICENSE="IDPL Interbase-1.0"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64 ~arm64 ~x86"
|
|
IUSE="doc examples +server xinetd"
|
|
|
|
BDEPEND="
|
|
doc? ( app-arch/unzip )
|
|
"
|
|
# FIXME: cloop?
|
|
DEPEND="
|
|
dev-libs/icu:=
|
|
dev-libs/libedit
|
|
dev-libs/libtommath
|
|
"
|
|
RDEPEND="
|
|
${DEPEND}
|
|
acct-group/firebird
|
|
acct-user/firebird
|
|
xinetd? ( virtual/inetd )
|
|
!sys-cluster/ganglia
|
|
"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}"/${PN}-3.0.10.33601.0-unbundle.patch
|
|
"${FILESDIR}"/${PN}-3.0.10.33601.0-flags.patch
|
|
"${FILESDIR}"/${P}-configure-autoconf2.72.patch
|
|
"${FILESDIR}"/${P}-configure-clang16.patch
|
|
)
|
|
|
|
pkg_pretend() {
|
|
if [[ -e /var/run/${PN}/${PN}.pid ]] ; then
|
|
ewarn
|
|
ewarn "The presence of server connections may prevent isql or gsec"
|
|
ewarn "from establishing an embedded connection. Accordingly,"
|
|
ewarn "creating employee.fdb or security3.fdb could fail."
|
|
ewarn "It is more secure to stop the firebird daemon before running emerge."
|
|
ewarn
|
|
fi
|
|
}
|
|
|
|
check_sed() {
|
|
MSG="sed of $3, required $2 line(s) modified $1"
|
|
einfo "${MSG}"
|
|
[[ $1 -ge $2 ]] || die "${MSG}"
|
|
}
|
|
|
|
src_prepare() {
|
|
default
|
|
|
|
# Rename references to isql to fbsql
|
|
# sed vs patch for portability and addtional location changes
|
|
check_sed "$(sed -i -e 's:"isql :"fbsql :w /dev/stdout' \
|
|
src/isql/isql.epp | wc -l)" "1" "src/isql/isql.epp" # 1 line
|
|
check_sed "$(sed -i -e 's:isql :fbsql :w /dev/stdout' \
|
|
src/msgs/history2.sql | wc -l)" "4" "src/msgs/history2.sql" # 4 lines
|
|
check_sed "$(sed -i -e 's:--- ISQL:--- FBSQL:w /dev/stdout' \
|
|
-e 's:isql :fbsql :w /dev/stdout' \
|
|
-e 's:ISQL :FBSQL :w /dev/stdout' \
|
|
src/msgs/messages2.sql | wc -l)" "6" "src/msgs/messages2.sql" # 6 lines
|
|
|
|
# bug #917662, bug #924659
|
|
filter-lto
|
|
append-flags -fno-strict-aliasing $(test-flags-CXX -fno-lifetime-dse)
|
|
|
|
# use gentoo's CXXFLAGS instead of whatever firebird decided on
|
|
# doesn't replace all firebird's CXXFLAGS, but at least this is last,
|
|
# so it can do some overrides
|
|
sed -i -e "/OPTIMIZE_FLAGS=/s/=.*/=${CXXFLAGS}/" builds/posix/prefix.*
|
|
|
|
find . -name \*.sh -exec chmod +x {} + || die
|
|
# firebird's patched btyacc is needed now as of
|
|
# https://github.com/FirebirdSQL/firebird/commit/9aab6ed8cc6872e2ebc6bfa2531e089cb96e8305#diff-a01303d63fcb967bea34359c3c7f79e4356d6549ab22a1a9190e8020c0b33a3d
|
|
rm -r extern/{editline,icu} || die
|
|
|
|
eautoreconf
|
|
}
|
|
|
|
src_configure() {
|
|
tc-export PKG_CONFIG
|
|
|
|
local myeconfargs=(
|
|
--prefix=/usr/$(get_libdir)/firebird
|
|
--with-editline
|
|
--with-system-editline
|
|
--with-fbbin=/usr/bin
|
|
--with-fbsbin=/usr/sbin
|
|
--with-fbconf=/etc/${PN}
|
|
--with-fblib=/usr/$(get_libdir)
|
|
--with-fbinclude=/usr/include
|
|
--with-fbdoc=/usr/share/doc/${PF}
|
|
--with-fbudf=/usr/$(get_libdir)/${PN}/UDF
|
|
--with-fbsample=/usr/share/${PN}/examples
|
|
--with-fbsample-db=/usr/share/${PN}/examples/empbuild
|
|
--with-fbhelp=/usr/share/${PN}/help
|
|
--with-fbintl=/usr/$(get_libdir)/${PN}/intl
|
|
--with-fbmisc=/usr/share/${PN}
|
|
--with-fbsecure-db=/etc/${PN}
|
|
--with-fbmsg=/usr/share/${PN}/msg
|
|
--with-fblog=/var/log/${PN}/
|
|
--with-fbglock=/var/run/${PN}
|
|
--with-fbplugins=/usr/$(get_libdir)/${PN}/plugins
|
|
--with-gnu-ld
|
|
)
|
|
|
|
econf "${myeconfargs[@]}"
|
|
}
|
|
|
|
# from linux underground, merging into this here
|
|
src_install() {
|
|
if use doc; then
|
|
dodoc -r doc
|
|
|
|
local x
|
|
for x in ${A}; do
|
|
if [[ ${x} == *.pdf ]] ; then
|
|
dodoc "${DISTDIR}"/${x}
|
|
fi
|
|
done
|
|
fi
|
|
|
|
cd "${S}/gen/Release/${PN}" || die
|
|
|
|
doheader include/*
|
|
dolib.so lib/*.so*
|
|
|
|
# links for backwards compatibility
|
|
insinto /usr/$(get_libdir)
|
|
dosym libfbclient.so /usr/$(get_libdir)/libgds.so
|
|
dosym libfbclient.so /usr/$(get_libdir)/libgds.so.0
|
|
dosym libfbclient.so /usr/$(get_libdir)/libfbclient.so.1
|
|
|
|
insinto /usr/share/${PN}/msg
|
|
doins *.msg
|
|
|
|
use server || return
|
|
|
|
einfo "Renaming isql -> fbsql"
|
|
mv bin/isql bin/fbsql || die "failed to rename isql -> fbsql"
|
|
|
|
dobin bin/{fb_config,fbsql,fbsvcmgr,fbtracemgr,gbak,gfix,gpre,gsec,gsplit,gstat,nbackup,qli}
|
|
dosbin bin/{firebird,fbguard,fb_lock_print}
|
|
|
|
insinto /usr/share/${PN}/help
|
|
# why???
|
|
insopts -m0660 -o firebird -g firebird
|
|
doins help/help.fdb
|
|
|
|
exeinto /usr/$(get_libdir)/${PN}/intl
|
|
doexe intl/libfbintl.so
|
|
dosym libfbintl.so /usr/$(get_libdir)/${PN}/intl/fbintl.so
|
|
|
|
insinto /usr/$(get_libdir)/${PN}/intl
|
|
insopts -m0644 -o root -g root
|
|
doins intl/fbintl.conf
|
|
|
|
# plugins
|
|
exeinto /usr/$(get_libdir)/${PN}/plugins
|
|
doexe plugins/*.so
|
|
exeinto /usr/$(get_libdir)/${PN}/plugins/udr
|
|
doexe plugins/udr/*.so
|
|
|
|
exeinto /usr/$(get_libdir)/${PN}/UDF
|
|
doexe UDF/*.so
|
|
|
|
# logging (do we really need the perms?)
|
|
diropts -m 755 -o firebird -g firebird
|
|
dodir /var/log/${PN}
|
|
keepdir /var/log/${PN}
|
|
|
|
# logrotate
|
|
insinto /etc/logrotate.d
|
|
newins "${FILESDIR}/${PN}.logrotate" ${PN}
|
|
|
|
# configuration files
|
|
insinto /etc/${PN}/plugins
|
|
doins plugins/udr_engine.conf
|
|
insinto /etc/${PN}
|
|
doins {databases,fbtrace,firebird,plugins}.conf
|
|
|
|
# install secutity3.fdb
|
|
insopts -m0660 -o firebird -g firebird
|
|
doins security3.fdb
|
|
|
|
if use xinetd; then
|
|
insinto /etc/xinetd.d
|
|
newins "${FILESDIR}/${PN}.xinetd.3.0" ${PN}
|
|
else
|
|
newinitd "${FILESDIR}/${PN}.init.d.3.0-r1" ${PN}
|
|
fi
|
|
|
|
if use examples; then
|
|
cd examples || die
|
|
insinto /usr/share/${PN}/examples
|
|
insopts -m0644 -o root -g root
|
|
doins -r api
|
|
doins -r dbcrypt
|
|
doins -r include
|
|
doins -r interfaces
|
|
doins -r package
|
|
doins -r stat
|
|
doins -r udf
|
|
doins -r udr
|
|
doins CMakeLists.txt
|
|
doins functions.c
|
|
doins README
|
|
insinto /usr/share/${PN}/examples/empbuild
|
|
insopts -m0660 -o firebird -g firebird
|
|
doins empbuild/employee.fdb
|
|
fi
|
|
|
|
elog "Starting with version 3, server mode is set in firebird.conf"
|
|
elog "The default setting is superserver."
|
|
elog
|
|
elog "If you're using UDFs, please remember to move them to ${EPREFIX}/usr/$(get_libdir)/firebird/UDF"
|
|
}
|