File derby.spec of Package derby

#
# spec file for package derby
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


Name:           derby
Version:        10.14.2.0
Release:        0
Summary:        Embeddable Database Engine Written in Java
License:        Apache-2.0
Group:          Productivity/Databases/Servers
URL:            https://db.apache.org/derby/
Source0:        https://archive.apache.org/dist/db/derby/db-derby-%{version}/db-derby-%{version}-src.tar.gz
Source1:        %{name}.service
Source2:        %{name}-script
Source3:        https://repo1.maven.org/maven2/org/apache/%{name}/%{name}/%{version}/%{name}-%{version}.pom
Source4:        https://repo1.maven.org/maven2/org/apache/%{name}/%{name}client/%{version}/%{name}client-%{version}.pom
Source5:        https://repo1.maven.org/maven2/org/apache/%{name}/%{name}net/%{version}/%{name}net-%{version}.pom
Source6:        https://repo1.maven.org/maven2/org/apache/%{name}/%{name}tools/%{version}/%{name}tools-%{version}.pom
Source7:        https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_cs/%{version}/%{name}Locale_cs-%{version}.pom
Source8:        https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_de_DE/%{version}/%{name}Locale_de_DE-%{version}.pom
Source9:        https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_es/%{version}/%{name}Locale_es-%{version}.pom
Source10:       https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_fr/%{version}/%{name}Locale_fr-%{version}.pom
Source11:       https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_hu/%{version}/%{name}Locale_hu-%{version}.pom
Source12:       https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_it/%{version}/%{name}Locale_it-%{version}.pom
Source13:       https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_ja_JP/%{version}/%{name}Locale_ja_JP-%{version}.pom
Source14:       https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_ko_KR/%{version}/%{name}Locale_ko_KR-%{version}.pom
Source15:       https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_pl/%{version}/%{name}Locale_pl-%{version}.pom
Source16:       https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_pt_BR/%{version}/%{name}Locale_pt_BR-%{version}.pom
Source17:       https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_ru/%{version}/%{name}Locale_ru-%{version}.pom
Source18:       https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_zh_CN/%{version}/%{name}Locale_zh_CN-%{version}.pom
Source19:       https://repo1.maven.org/maven2/org/apache/%{name}/%{name}Locale_zh_TW/%{version}/%{name}Locale_zh_TW-%{version}.pom
# https://issues.apache.org/jira/browse/DERBY-5125
Patch1:         derby-javacc5.patch
# For compatibility with lucene >= 4.10
Patch2:         derby-lucene.patch
Patch3:         derby-taglet.patch
Patch4:         derby-sourcetarget.patch
Patch5:         derby-javadoc-encoding.patch
Patch6:         derby-javacc7.patch
BuildRequires:  ant
BuildRequires:  dos2unix
BuildRequires:  fdupes
BuildRequires:  glassfish-servlet-api
BuildRequires:  jakarta-oro
BuildRequires:  java-devel >= 1.8
BuildRequires:  javacc
BuildRequires:  javapackages-local >= 6
BuildRequires:  junit
BuildRequires:  lucene
BuildRequires:  systemd
BuildRequires:  xalan-j2
BuildRequires:  xml-commons-apis
Requires:       jakarta-oro
Requires:       java >= 1.8
Requires:       javapackages-tools
Requires:       xalan-j2
Requires:       xml-commons-apis
Requires(pre):  shadow
BuildArch:      noarch
%systemd_requires

%description
The Derby project develops open source database technology that is:

- Pure Java
- Easy to use
- Small footprint
- Standards based
- Secure

%package javadoc
Summary:        Embeddable Database Engine Written in Java
Group:          Development/Libraries/Java

%description javadoc
Javadoc generated documentation for derby database engine.

%prep
%setup -q -n db-derby-%{version}-src
find -name '*.jar' -delete

rm java/engine/org/apache/derby/impl/sql/compile/Token.java
rm java/build/org/apache/derbyBuild/javadoc/*.java
%patch -P 1
%patch -P 2
%patch -P 3
%patch -P 4 -p1
%patch -P 5 -p1
%patch -P 6

# Don't use Class-Path in manifests
sed -i -e '/Class-Path/d' build.xml

# Don't download online packagelists
sed -e 's/initjars,set-doclint,install_packagelists/initjars,set-doclint/' \
    -e '/<link offline/,+1d' \
    -i build.xml

dos2unix LICENSE NOTICE README

%build
# tools/ant/properties/extrapath.properties
ln -sf $(build-classpath javacc) tools/java/javacc.jar
ln -sf $(build-classpath glassfish-servlet-api) \
  tools/java/geronimo-spec-servlet-2.4-rc4.jar
ln -sf $(build-classpath xalan-j2) tools/java/xalan.jar
ln -sf $(build-classpath xalan-j2-serializer) tools/java/serializer.jar
ln -sf $(build-classpath oro) tools/java/jakarta-oro-2.0.8.jar
ln -sf $(build-classpath junit) tools/java/junit.jar
ln -sf $(build-classpath lucene/lucene-core) tools/java/lucene-core.jar
ln -sf $(build-classpath lucene/lucene-analyzers) tools/java/lucene-analyzers-common.jar
ln -sf $(build-classpath lucene/xml-query-parser) tools/java/lucene-queryparser.jar

# So that the build doesn't fail on a stack overflow
export ANT_OPTS="-Xss2m"

export CLASSPATH="$(build-classpath xml-commons-apis)"
%{ant} \
    -Dant.build.javac.{source,target}=8 \
    buildsource buildjars javadoc

%install
# javadoc
install -dm0755 %{buildroot}%{_javadocdir}/%{name}
cp -pr javadoc/* %{buildroot}%{_javadocdir}/%{name}

# Systemd unit
install -dm0755 %{buildroot}%{_unitdir}
install -dm0755 %{buildroot}%{_sbindir}
install -pm0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
ln -s service %{buildroot}%{_sbindir}/rc%{name}

# Derby home dir
install -dm0755 %{buildroot}%{_localstatedir}/lib/%{name}

# Library
install -dm0755 %{buildroot}%{_javadir}/%{name}
install -m0644 jars/sane/*.jar %{buildroot}%{_javadir}/%{name}

# POMs
install -dm0755 %{buildroot}%{_mavenpomdir}/%{name}
%{mvn_install_pom} %{SOURCE3} %{buildroot}%{_mavenpomdir}/%{name}/%{name}.pom
%{mvn_install_pom} %{SOURCE4} %{buildroot}%{_mavenpomdir}/%{name}/%{name}client.pom
%{mvn_install_pom} %{SOURCE5} %{buildroot}%{_mavenpomdir}/%{name}/%{name}net.pom
%{mvn_install_pom} %{SOURCE6} %{buildroot}%{_mavenpomdir}/%{name}/%{name}tools.pom
%{mvn_install_pom} %{SOURCE7} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_cs.pom
%{mvn_install_pom} %{SOURCE8} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_de_DE.pom
%{mvn_install_pom} %{SOURCE9} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_es.pom
%{mvn_install_pom} %{SOURCE10} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_fr.pom
%{mvn_install_pom} %{SOURCE11} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_hu.pom
%{mvn_install_pom} %{SOURCE12} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_it.pom
%{mvn_install_pom} %{SOURCE13} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_ja_JP.pom
%{mvn_install_pom} %{SOURCE14} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_ko_KR.pom
%{mvn_install_pom} %{SOURCE15} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_pl.pom
%{mvn_install_pom} %{SOURCE16} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_pt_BR.pom
%{mvn_install_pom} %{SOURCE17} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_ru.pom
%{mvn_install_pom} %{SOURCE18} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_zh_CN.pom
%{mvn_install_pom} %{SOURCE19} %{buildroot}%{_mavenpomdir}/%{name}/%{name}Locale_zh_TW.pom

%add_maven_depmap %{name}/%{name}.pom %{name}/%{name}.jar
%add_maven_depmap %{name}/%{name}client.pom %{name}/%{name}client.jar
%add_maven_depmap %{name}/%{name}net.pom %{name}/%{name}net.jar
%add_maven_depmap %{name}/%{name}tools.pom %{name}/%{name}tools.jar
%add_maven_depmap %{name}/%{name}Locale_cs.pom %{name}/%{name}Locale_cs.jar
%add_maven_depmap %{name}/%{name}Locale_de_DE.pom %{name}/%{name}Locale_de_DE.jar
%add_maven_depmap %{name}/%{name}Locale_es.pom %{name}/%{name}Locale_es.jar
%add_maven_depmap %{name}/%{name}Locale_fr.pom %{name}/%{name}Locale_fr.jar
%add_maven_depmap %{name}/%{name}Locale_hu.pom %{name}/%{name}Locale_hu.jar
%add_maven_depmap %{name}/%{name}Locale_it.pom %{name}/%{name}Locale_it.jar
%add_maven_depmap %{name}/%{name}Locale_ja_JP.pom %{name}/%{name}Locale_ja_JP.jar
%add_maven_depmap %{name}/%{name}Locale_ko_KR.pom %{name}/%{name}Locale_ko_KR.jar
%add_maven_depmap %{name}/%{name}Locale_pl.pom %{name}/%{name}Locale_pl.jar
%add_maven_depmap %{name}/%{name}Locale_pt_BR.pom %{name}/%{name}Locale_pt_BR.jar
%add_maven_depmap %{name}/%{name}Locale_ru.pom %{name}/%{name}Locale_ru.jar
%add_maven_depmap %{name}/%{name}Locale_zh_CN.pom %{name}/%{name}Locale_zh_CN.jar
%add_maven_depmap %{name}/%{name}Locale_zh_TW.pom %{name}/%{name}Locale_zh_TW.jar

# Wrapper scripts
install -dm0755 %{buildroot}%{_bindir}
install -pm0755 %{SOURCE2} %{buildroot}%{_bindir}/%{name}-ij
for P in sysinfo NetworkServerControl startNetworkServer stopNetworkServer ; do
    ln %{buildroot}%{_bindir}/%{name}-ij %{buildroot}%{_bindir}/%{name}-$P
done

%fdupes %{buildroot}

%pre
getent group derby >/dev/null || groupadd -r derby
getent passwd derby >/dev/null || \
useradd -r -g derby -d %{_localstatedir}/lib/%{name} -s /sbin/nologin \
    -c "Apache Derby service account" derby
%service_add_pre %{name}.service

%post
%service_add_post %{name}.service

%preun
%service_del_preun %{name}.service

%postun
%service_del_postun %{name}.service

%files -f .mfiles
%license LICENSE NOTICE
%doc README RELEASE-NOTES.html
%{_javadir}/%{name}/%{name}run.jar
%{_bindir}/derby-NetworkServerControl
%{_bindir}/derby-ij
%{_bindir}/derby-startNetworkServer
%{_bindir}/derby-stopNetworkServer
%{_bindir}/derby-sysinfo
%{_unitdir}/%{name}.service
%{_sbindir}/rc%{name}

%files javadoc
%license LICENSE NOTICE
%{_javadocdir}/%{name}

%changelog
openSUSE Build Service is sponsored by