Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37404801
en ru br
ALT Linux repos
S:4.0.0.2496.0-alt4
5.0: 2.1.1.17910.0-alt6
4.1: 2.1.1.17910.0-alt0.M41.5
4.0: 2.1.1.17910.0-alt3.M40.4
+backports:2.1.1.17910.0-alt3.M40.1

Group :: Databases
RPM: firebird

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

%define _unpackaged_files_terminate_build 1
%define _stripped_files_terminate_build 1
%set_verify_elf_method strict

# LTO causes errors, disable it

%global optflags_lto %nil

%define major 4.0.0.2496
%define minor 0
%define pkgname Firebird
%define pkgversion %major-%minor
%define fbroot %_libdir/%name

Name: firebird
Version: %major.%minor
Release: alt4
Summary: Firebird SQL Database, fork of InterBase
Group: Databases
License: IPL
Url: https://www.firebirdsql.org/

# https://github.com/FirebirdSQL/firebird.git

Source: %name-%version.tar
Source1: %name.init
Source2: %name.tmpfiles.conf.in
Source3: %name-logrotate

# from OpenSuse

Patch101: %name-%version-fedora-add-pkgconfig-files.patch

# from Debian to be sent upstream

Patch203: %name-%version-fedora-no-copy-from-icu.patch
Patch205: %name-%version-fedora-cloop-honour-build-flags.patch

# from upstream

Patch301: %name-%version-fedora-c++17.patch
Patch302: %name-%version-fedora-noexcept.patch

# ALT patches

Patch1001: %name-%version-alt-dont-link-libstdcxx-statically.patch
Patch1002: %name-%version-alt-use-system-libre2.patch
Patch1003: %name-%version-alt-disable-examples.patch

# Elbrus

Patch2000: %name-e2k.patch

Requires: libfbclient = %EVR

BuildRequires(pre): rpm-build-compat
BuildRequires: libtinfo-devel libicu-devel libedit-devel
BuildRequires: gcc gcc-c++
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bison
BuildRequires: libtool
BuildRequires: libncurses-devel
BuildRequires: zlib-devel libtommath-devel
BuildRequires: libtomcrypt-devel
BuildRequires: libre2-devel
BuildRequires: unzip

Obsoletes: %name-superserver < %EVR
Conflicts: %name-superserver < %EVR
Provides: %name-superserver = %EVR
Obsoletes: %name-classic < %EVR
Conflicts: %name-classic < %EVR
Provides: %name-classic = %EVR

%description
This is the Firebird SQL Database shared files.

%package devel
Summary: Development Libraries for Firebird SQL Database
Group: Development/Databases
Requires: %name = %EVR

%description devel
Development libraries for firebird.

%package utils
Summary: Client programs for Firebird SQL Database
Group: Databases
Requires: %name = %EVR
Obsoletes: %name-client-embedded <= 2.0
Obsoletes: %name-utils-superserver < %EVR
Conflicts: %name-utils-superserver < %EVR
Provides: %name-utils-superserver = %EVR
Obsoletes: %name-utils-classic < %EVR
Conflicts: %name-utils-classic < %EVR
Provides: %name-utils-classic = %EVR

%description utils
Client access tools for firebird.

%package -n libfbclient
Summary: Multi-threaded, non-local client libraries for Firebird SQL Database
Group: System/Libraries

%description -n libfbclient
Multi-threaded, non-local client libraries for Firebird SQL Database

%package server
Summary: Server for Firebird SQL Database
Group: Databases
Requires: %name = %EVR
Obsoletes: %name-server-superserver < %EVR
Conflicts: %name-server-superserver < %EVR
Provides: %name-server-superserver = %EVR
Obsoletes: %name-server-classic < %EVR
Conflicts: %name-server-classic < %EVR
Provides: %name-server-classic = %EVR
Obsoletes: %name-server-common < %EVR
Conflicts: %name-server-common < %EVR
Provides: %name-server-common = %EVR
%add_findreq_skiplist %_sbindir/changeServerMode.sh

%description server
This is the server for the Firebird SQL Database.
It can also be used as an embedded server, when paired with the
client-embedded package.

It does not include any client access tools, nor does it include the
multi-threaded client library.

%package doc
Summary: Documentation for Firebird SQL server
Group: Databases
Requires: %name-server = %EVR
BuildArch: noarch

%description doc
Documentation for Firebird SQL server.

%package examples
Summary: Examples for Firebird SQL server
Group: Databases
Requires: %name-server = %EVR

%description examples
Examples for Firebird SQL server.

%prep
%setup
%patch101 -p1
%patch203 -p1
%patch205 -p1
%patch301 -p1
%patch302 -p1
%patch1001 -p1
%patch1002 -p1
%patch1003 -p1
%ifarch %e2k
%patch2000 -p1
%endif

# sed vs patch for portability and addtional location changes

# based on FIREBIRD=%_libdir/firebird
check_sed() {
MSG="sed of $3, required $2 line(s) modified $1"
echo "${MSG}"
[[ $1 -ge $2 ]] || { echo "${MSG}" ; exit -1 ; }
}

check_sed "$(sed -i -e 's:"isql :"isql-fb :w /dev/stdout' \
src/isql/isql.epp | wc -l)" "1" "src/isql/isql.epp" # 1 line
check_sed "$(sed -i -e 's:isql :isql-fb :w /dev/stdout' \
src/msgs/history2.sql | wc -l)" "4" "src/msgs/history2.sql" # 4 lines
check_sed "$(sed -i -e 's:--- ISQL:--- ISQL-FB:w /dev/stdout' \
-e 's:isql :isql-fb :w /dev/stdout' \
-e 's:ISQL :ISQL-FB :w /dev/stdout' \
src/msgs/messages2.sql | wc -l)" "6" "src/msgs/messages2.sql" # 6 lines

find . -name \*.sh -exec chmod +x {} + || { echo "chmod failed" ; exit -1 ; }
rm -rf ./extern/{editline,libtomcrypt,libtommath,re2,zlib} || { echo "rm -rf failed" ; exit -1 ;}

%build
%add_optflags -fno-sized-deallocation
%add_optflags -fno-delete-null-pointer-checks
%add_optflags -fno-strict-aliasing
%add_optflags -Wno-deprecated -Wno-switch
%add_optflags -I%_includedir/tommath
%add_optflags -I%_includedir/tomcrypt
%ifarch %e2k
# required to enable GNU extensions from fenv.h
%add_optflags -D_GNU_SOURCE
%endif

%autoreconf
%configure \
--disable-rpath \
--disable-static \
--prefix=%fbroot \
--with-system-editline \
--with-fbbin=%_bindir \
--with-fbsbin=%_sbindir \
--with-fbconf=%_sysconfdir/%name \
--with-fblib=%_libdir \
--with-fbinclude=%_includedir \
--with-fbdoc=%_defaultdocdir/%name \
--with-fbsample=%_defaultdocdir/%name/sample \
--with-fbsample-db=%_localstatedir/%name/data/ \
--with-fbhelp=%_localstatedir/%name/system/ \
--with-fbintl=%_libdir/%name/intl \
--with-fbmisc=%_datadir/%name/misc \
--with-fbsecure-db=%_localstatedir/%name/secdb/ \
--with-fbmsg=%_localstatedir/%name/system/ \
--with-fblog=%_logdir/%name \
--with-fbglock=%_runtimedir/%name \
--with-fbplugins=%_libdir/%name/plugins \
--with-fbtzdata=%_localstatedir/%name/tzdata \
%nil

%make

pushd gen
%make -f Makefile.install buildRoot
chmod -R u+w buildroot%{_docdir}/%{name}
chmod u+rw,a+rx buildroot/usr/include/firebird/impl
popd

%install
mkdir -p %buildroot
cp -r gen/buildroot/* %buildroot/

# prepare dir

mkdir -p %buildroot%_initdir
mkdir -p %buildroot%fbroot/intl
mkdir -p %buildroot%_datadir/%name
mkdir -p %buildroot%_sysconfdir/profile.d
mkdir -p %buildroot%_localstatedir/%name/backup
mkdir -p %buildroot%_logdir/%name/
mkdir -p %buildroot%_unitdir
mkdir -p %buildroot%_pkgconfigdir
mkdir -p %buildroot%_tmpfilesdir

cp -a src/misc/upgrade %buildroot%_datadir/%name

install -m 0644 gen/install/misc/firebird.service %buildroot%_unitdir/

sed -e "s| at runtimedir at |%_runtimedir|g" -e "s| at name at |%name|g" %SOURCE2 > %buildroot%_tmpfilesdir/%name.conf

cp -v gen/install/misc/*.pc %buildroot%_pkgconfigdir

pushd gen/Release/%name
# intl
cp intl/libfbintl.so %buildroot%fbroot/intl/fbintl.so
cp -a bin/posixLibrary.sh %buildroot%_datadir/%name
# examples
cp -a examples %buildroot%_datadir/%name
popd

mv %buildroot%fbroot/intl/fbintl.conf %buildroot%_sysconfdir/%name/fbintl.conf
ln -sf $(relative %_sysconfdir/%name/fbintl.conf %fbroot/intl/fbintl.conf) %buildroot%fbroot/intl/fbintl.conf
ln -sf fbintl.so %buildroot%fbroot/intl/libfbintl.so
ln -sf $(relative %fbroot/intl/fbintl.so %_sysconfdir/%name/libfbintl.so) %buildroot%_sysconfdir/%name/libfbintl.so

# services

install -m 755 %SOURCE1 %buildroot%_initdir/%name

# log

touch %buildroot%_logdir/%name/%name.log

# logrotate

mkdir -p %buildroot%_sysconfdir/logrotate.d
sed "s at %name.log at %_logdir/%name/%name.log at g" %SOURCE3 > %buildroot%_sysconfdir/logrotate.d/%name

mv %buildroot%_bindir/isql %buildroot%_bindir/isql-fb
mv %buildroot%_bindir/gstat %buildroot%_bindir/gstat-fb
mv %buildroot%_sbindir/fb_config %buildroot%_bindir/fb_config
mv %buildroot%_sysconfdir/%name/{*.md,*.txt} %buildroot%_docdir/%name/

rm -f %buildroot%_sbindir/FirebirdUninstall.sh
rm -rf %buildroot%_datadir/%name/misc/upgrade
rm -f %buildroot%_datadir/%name/misc/firebird.service
rm -f %buildroot%_datadir/%name/misc/firebird.init.d.debian
rm -f %buildroot%_datadir/%name/misc/firebird.init.d.generic
rm -f %buildroot%_datadir/%name/misc/firebird.init.d.gentoo
rm -f %buildroot%_datadir/%name/misc/firebird.init.d.mandrake
rm -f %buildroot%_datadir/%name/misc/firebird.init.d.slackware
rm -f %buildroot%_datadir/%name/misc/firebird.init.d.suse
rm -f %buildroot%_datadir/%name/misc/rc.config.firebird

# -----------------------------------------------------------------------------

# server-common scripts
# -----------------------------------------------------------------------------
%post server
if [ ! -f %_sysconfdir/gds_hosts.equiv ]; then
echo localhost > %_sysconfdir/gds_hosts.equiv
fi
%post_service %name

%preun server
%preun_service %name

%pre server
# Create the firebird group if it doesn't exist
%_sbindir/groupadd -f -r %name 2>/dev/null ||:
%_sbindir/useradd -d %_localstatedir/%name -g %name -s /dev/null -r %name 2>/dev/null ||:

%pre
# Add gds_db to %_sysconfdir/services if needed
FileName=%_sysconfdir/services
newLine="gds_db          3050/tcp  # Firebird SQL Database Remote Protocol"
oldLine=`grep "^gds_db" $FileName`
if [ -z "$oldLine" ]; then
echo $newLine >> $FileName
fi

%triggerun -- %name-server < 4.0.0.2496.0-alt1
if [ $2 -gt 0 ]; then
# This is firebird upgrade.
SYSTEMCTL=/bin/systemctl
if /sbin/sd_booted && "$SYSTEMCTL" --version >/dev/null 2>&1 ; then
# collect service states
enable_server=0

if "$SYSTEMCTL" is-enabled firebird-superserver.service >/dev/null 2>&1 ; then
enable_server=1
fi

# disable services with old names

"$SYSTEMCTL" disable --now firebird-superserver.service ||:

# re-enable services with new names

if [ $enable_server -eq 1 ] ; then
"$SYSTEMCTL" enable --now firebird.service
fi
fi
fi

%files
%_docdir/%name/IDPLicense.txt
%_docdir/%name/IPLicense.txt
%doc doc/*
%dir %fbroot
%dir %_sysconfdir/%name
%config(noreplace) %_sysconfdir/%name/databases.conf
%config(noreplace) %_sysconfdir/%name/fbtrace.conf
%config(noreplace) %_sysconfdir/%name/firebird.conf
%config(noreplace) %_sysconfdir/%name/plugins.conf
%config(noreplace) %_sysconfdir/%name/replication.conf
%dir %_datadir/%name
%dir %_datadir/%name/upgrade
%_datadir/%name/upgrade/*
%dir %_libdir/%name/plugins
%_libdir/%name/plugins/*
%dir %_datadir/%name/misc
%_datadir/%name/misc/*.sql

%files devel
%attr (0755,root,root) %_bindir/fb_config
%_bindir/gpre
%_includedir/*
%_libdir/libfbclient.so
%_pkgconfigdir/*.pc

%files utils
%_bindir/gbak
%_bindir/gfix
%_bindir/gstat-fb
%_bindir/isql-fb
%_bindir/qli
%_bindir/fbtracemgr

%files -n libfbclient
%_libdir/libfbclient.so.*

%files server
%config(noreplace) %_sysconfdir/logrotate.d/%name
%attr(0644,root,root) %_tmpfilesdir/%name.conf
%dir %attr(2775,root,%name) %_localstatedir/%name
%dir %attr(2775,root,%name) %_localstatedir/%name/secdb
%dir %attr(2775,root,%name) %_localstatedir/%name/system
%dir %attr(2775,root,%name) %_localstatedir/%name/backup
%dir %fbroot/intl
%attr(0660,firebird,firebird) %config(noreplace) %_localstatedir/%name/secdb/security4.fdb
%attr(0664,firebird,firebird) %_localstatedir/%name/system/help.fdb
%attr(0664,firebird,firebird) %_localstatedir/%name/system/firebird.msg
%dir %_localstatedir/%name/tzdata
%_localstatedir/%name/tzdata/*.res
%config(noreplace) %_sysconfdir/%name/fbintl.conf
%_sysconfdir/%name/libfbintl.so
%attr(0755,root,root) %_initdir/%name
%_unitdir/*
%dir %attr (2770,root,%name) %_logdir/%name
%attr (0660,%name,%name) %_logdir/%name/%name.log
%fbroot/intl/*
%_bindir/gsplit
%_bindir/nbackup
%_bindir/gsec
%_bindir/fbsvcmgr
%attr (0755,root,root) %_sbindir/*.sh
%_sbindir/fb_lock_print
%_sbindir/fbguard
%_sbindir/firebird
%_libdir/libib_util.so
%_datadir/%name/*.sh

%files doc
%_docdir/%name
%exclude %_docdir/%name/IDPLicense.txt
%exclude %_docdir/%name/IPLicense.txt
%exclude %_docdir/%name/sample

%files examples
%_docdir/%name/sample
%_datadir/%name/examples

%changelog

Full changelog you can see here

 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin