hsqldb/hsqldb.spec
2020-08-28 19:53:53 +08:00

164 lines
5.8 KiB
RPMSpec

Name: hsqldb
Version: 2.4.0
Release: 1
Epoch: 1
Summary: HyperSQL Database Engine
License: BSD
URL: http://hsqldb.sourceforge.net/
Source0: http://downloads.sourceforge.net/hsqldb/hsqldb-%{version}.zip
Source1: %{name}.cfg
Source2: %{name}-server.properties
Source3: %{name}-webserver.properties
Source4: %{name}-sqltool.rc
Source5: http://www.hsqldb.org/repos/org/hsqldb/hsqldb/%{version}/hsqldb-%{version}.pom
Source6: %{name}.systemd
Source7: %{name}-wrapper
Source8: %{name}-post
Source9: %{name}-stop
Patch0: 0001-Fix-javadoc-build.patch
Patch1: 0002-Build-cmdline-classes.patch
BuildRequires: ant javapackages-local systemd-units glassfish-servlet-api
Requires: %{name}-lib = %{epoch}:%{version}-%{release} glassfish-servlet-api
Requires(pre): shadow-utils
Requires(post): systemd-units
Requires(preun): systemd-units
Requires(postun): systemd-units
BuildArch: noarch
%description
HSQLdb is a relational database engine written in JavaTM , with a JDBC
driver, supporting a subset of ANSI-92 SQL. It offers a small (about
100k), fast database engine which offers both in memory and disk based
tables. Embedded and server modes are available. Additionally, it
includes tools such as a minimal web server, in-memory query and
management tools (can be run as applets or servlets, too) and a number
of demonstration examples.
Downloaded code should be regarded as being of production quality. The
product is currently being used as a database and persistence engine in
many Open Source Software projects and even in commercial projects and
products! In it's current version it is extremely stable and reliable.
It is best known for its small size, ability to execute completely in
memory and its speed. Yet it is a completely functional relational
database management system that is completely free under the Modified
BSD License. Yes, that's right, completely free of cost or restrictions!
%package lib
Summary: HyperSQL Database Engine library
%description lib
Library part of %{name}.
%package manual
Summary: Manual for %{name}
%description manual
Documentation for %{name}.
%package javadoc
Summary: Javadoc for %{name}
%description javadoc
Javadoc for %{name}.
%package demo
Summary: Demo for %{name}
Requires: %{name} = %{epoch}:%{version}-%{release}
%description demo
Demonstrations and samples for %{name}.
%prep
%setup -q -n %{name}-%{version}/%{name}
%patch0 -p1
%patch1 -p1
find . -name "*.sh" -exec chmod 755 \{\} \;
for dir in `find . -name _notes`; do rm -rf $dir; done
find . -name "*.jar" -exec rm -f {} \;
find . -name "*.class" -exec rm -f {} \;
find . -name "*.war" -exec rm -f {} \;
find . -name "*.zip" -exec rm -f {} \;
chmod -R go=u-w *
sed -i -e 's/doc-src/doc/g' build/build.xml
sed -i -e 's|doc/apidocs|%{_javadocdir}/%{name}|g' index.html
%build
pushd build
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
ant hsqldb javadoc -Dservletapi.lib=$(build-classpath glassfish-servlet-api)
popd
%install
%mvn_file :%{name} %{name}
%mvn_artifact %{SOURCE5} lib/%{name}.jar
%mvn_install -J doc/apidocs
install -d -m 755 %{buildroot}%{_unitdir}
install -d -m 755 %{buildroot}%{_prefix}/lib/%{name}
install -m 644 %{SOURCE6} %{buildroot}%{_unitdir}/%{name}.service
install -m 755 %{SOURCE7} %{buildroot}%{_prefix}/lib/%{name}/%{name}-wrapper
install -m 755 %{SOURCE8} %{buildroot}%{_prefix}/lib/%{name}/%{name}-post
install -m 755 %{SOURCE9} %{buildroot}%{_prefix}/lib/%{name}/%{name}-stop
install -d -m 755 %{buildroot}%{_sysconfdir}/sysconfig
install -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/sysconfig/%{name}
install -d -m 755 %{buildroot}%{_localstatedir}/lib/%{name}
install -m 644 %{SOURCE2} %{buildroot}%{_localstatedir}/lib/%{name}/server.properties
install -m 644 %{SOURCE3} %{buildroot}%{_localstatedir}/lib/%{name}/webserver.properties
install -m 600 %{SOURCE4} %{buildroot}%{_localstatedir}/lib/%{name}/sqltool.rc
install -d -m 755 %{buildroot}%{_localstatedir}/lib/%{name}/lib
install -d -m 755 %{buildroot}%{_localstatedir}/lib/%{name}/data
install -d -m 755 %{buildroot}%{_pkgdocdir}
cp -r doc index.html %{buildroot}%{_pkgdocdir}
pushd %{buildroot}%{_localstatedir}/lib/%{name}/lib
# build-classpath can not be used as the jar is not
# yet present during the build
ln -s %{_javadir}/hsqldb.jar hsqldb.jar
ln -s $(build-classpath glassfish-servlet-api) servlet.jar
popd
%preun
%systemd_preun hsqldb.service
%pre
%{_sbindir}/groupadd -g 96 -f -r %{name} 2> /dev/null || :
%{_sbindir}/useradd -u 96 -g %{name} -s /sbin/nologin \
-d %{_localstatedir}/lib/%{name} -r %{name} 2> /dev/null || :
%post
%systemd_post hsqldb.service
%postun
%systemd_postun_with_restart hsqldb.service
%triggerun -- hsqldb < 1.8.1.3-9
/usr/bin/systemd-sysv-convert --save hsqldb >/dev/null 2>&1 ||:
/bin/systemctl --no-reload enable hsqldb.service >/dev/null 2>&1 ||:
/sbin/chkconfig --del hsqldb >/dev/null 2>&1 || :
/bin/systemctl try-restart hsqldb.service >/dev/null 2>&1 || :
%files
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
%{_unitdir}/%{name}.service
%{_prefix}/lib/%{name}/%{name}-wrapper
%{_prefix}/lib/%{name}/%{name}-post
%{_prefix}/lib/%{name}/%{name}-stop
%attr(0700,hsqldb,hsqldb) %{_localstatedir}/lib/%{name}/data
%{_localstatedir}/lib/%{name}/lib
%{_localstatedir}/lib/%{name}/server.properties
%{_localstatedir}/lib/%{name}/webserver.properties
%attr(0600,hsqldb,hsqldb) %{_localstatedir}/lib/%{name}/sqltool.rc
%dir %{_localstatedir}/lib/%{name}
%dir %{_prefix}/lib/%{name}
%files lib -f .mfiles
%files manual
%doc %{_pkgdocdir}
%files javadoc
%doc %{_javadocdir}/%{name}
%files demo
%changelog
* Tue Aug 4 2020 leiju <leiju4@huawei.com> - 2.4.0-1
- Package init