File kala-compress.spec of Package kala-compress

#
# spec file for package kala-compress
#
# Copyright (c) 2025 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/
#


%global main_ver 1.27.1
%global release_ver 1
%global upstream_version %{main_ver}-%{release_ver}
Name:           kala-compress
Version:        %{main_ver}.%{release_ver}
Release:        0
Summary:        Modular Apache commons compress
License:        Apache-2.0
Group:          Development/Libraries/Java
URL:            https://github.com/Glavo/%{name}
Source0:        %{url}/archive/refs/tags/%{main_ver}-%{release_ver}.tar.gz
Source1:        https://www.apache.org/licenses/LICENSE-2.0.txt
Source2:        https://repo1.maven.org/maven2/org/glavo/kala/%{name}/%{upstream_version}/%{name}-%{upstream_version}.pom
Source3:        https://repo1.maven.org/maven2/org/glavo/kala/%{name}-base/%{upstream_version}/%{name}-base-%{upstream_version}.pom
Source4:        https://repo1.maven.org/maven2/org/glavo/kala/%{name}-archivers/%{upstream_version}/%{name}-archivers-%{upstream_version}.pom
Source5:        https://repo1.maven.org/maven2/org/glavo/kala/%{name}-archivers-ar/%{upstream_version}/%{name}-archivers-ar-%{upstream_version}.pom
Source6:        https://repo1.maven.org/maven2/org/glavo/kala/%{name}-archivers-arj/%{upstream_version}/%{name}-archivers-arj-%{upstream_version}.pom
Source7:        https://repo1.maven.org/maven2/org/glavo/kala/%{name}-archivers-cpio/%{upstream_version}/%{name}-archivers-cpio-%{upstream_version}.pom
Source8:        https://repo1.maven.org/maven2/org/glavo/kala/%{name}-archivers-dump/%{upstream_version}/%{name}-archivers-dump-%{upstream_version}.pom
Source9:        https://repo1.maven.org/maven2/org/glavo/kala/%{name}-archivers-sevenz/%{upstream_version}/%{name}-archivers-sevenz-%{upstream_version}.pom
Source10:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-archivers-tar/%{upstream_version}/%{name}-archivers-tar-%{upstream_version}.pom
Source11:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-archivers-zip/%{upstream_version}/%{name}-archivers-zip-%{upstream_version}.pom
Source12:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors/%{upstream_version}/%{name}-compressors-%{upstream_version}.pom
Source13:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-brotli/%{upstream_version}/%{name}-compressors-brotli-%{upstream_version}.pom
Source14:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-bzip2/%{upstream_version}/%{name}-compressors-bzip2-%{upstream_version}.pom
Source15:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-deflate/%{upstream_version}/%{name}-compressors-deflate-%{upstream_version}.pom
Source16:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-deflate64/%{upstream_version}/%{name}-compressors-deflate64-%{upstream_version}.pom
Source17:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-gzip/%{upstream_version}/%{name}-compressors-gzip-%{upstream_version}.pom
Source18:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-lz4/%{upstream_version}/%{name}-compressors-lz4-%{upstream_version}.pom
Source19:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-lzma/%{upstream_version}/%{name}-compressors-lzma-%{upstream_version}.pom
Source20:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-pack200/%{upstream_version}/%{name}-compressors-pack200-%{upstream_version}.pom
Source21:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-snappy/%{upstream_version}/%{name}-compressors-snappy-%{upstream_version}.pom
Source22:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-xz/%{upstream_version}/%{name}-compressors-xz-%{upstream_version}.pom
Source23:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-z/%{upstream_version}/%{name}-compressors-z-%{upstream_version}.pom
Source24:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-compressors-zstandard/%{upstream_version}/%{name}-compressors-zstandard-%{upstream_version}.pom
Source25:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-changes/%{upstream_version}/%{name}-changes-%{upstream_version}.pom
Source26:       https://repo1.maven.org/maven2/org/glavo/kala/%{name}-examples/%{upstream_version}/%{name}-examples-%{upstream_version}.pom
BuildRequires:  fdupes
BuildRequires:  maven-local
BuildRequires:  mvn(com.github.luben:zstd-jni)
BuildRequires:  mvn(org.jetbrains:annotations)
BuildRequires:  mvn(org.tukaani:xz)
BuildArch:      noarch

%description
This project is based on Apache Commons Compress. Kala Compress has made some
improvements on its basis: Modularization (JPMS Support), NIO2 Path API
support, etc.

Another important improvement of Kala Compress is that it does not depend on
libraries such as commons-io and commons-lang3. Its core jar has no
dependencies and is less than 90KiB in size, making it suitable for programs
that have requirements on program size.

Its API is mostly consistent with Apache Commons Compress, with a few
incompatibilities. So I renamed the package (and the module name) from
org.apache.commons.compress to kala.compress. Therefore, it can coexist with
Apache Commons Compress without conflict.

%package javadoc
Summary:        API documentation for %{name}
Group:          Documentation/HTML

%description javadoc
API documentation for %{name}.

%prep
%autosetup -n %{name}-%{upstream_version}

cp %{SOURCE1} .
cp %{SOURCE2} pom.xml
cp %{SOURCE3} base/pom.xml
cp %{SOURCE4} archivers/pom.xml
cp %{SOURCE5} archivers/ar/pom.xml
cp %{SOURCE6} archivers/arj/pom.xml
cp %{SOURCE7} archivers/cpio/pom.xml
cp %{SOURCE8} archivers/dump/pom.xml
cp %{SOURCE9} archivers/sevenz/pom.xml
cp %{SOURCE10} archivers/tar/pom.xml
cp %{SOURCE11} archivers/zip/pom.xml
cp %{SOURCE12} compressors/pom.xml
cp %{SOURCE13} compressors/brotli/pom.xml
cp %{SOURCE14} compressors/bzip2/pom.xml
cp %{SOURCE15} compressors/deflate/pom.xml
cp %{SOURCE16} compressors/deflate64/pom.xml
cp %{SOURCE17} compressors/gzip/pom.xml
cp %{SOURCE18} compressors/lz4/pom.xml
cp %{SOURCE19} compressors/lzma/pom.xml
cp %{SOURCE20} compressors/pack200/pom.xml
cp %{SOURCE21} compressors/snappy/pom.xml
cp %{SOURCE22} compressors/xz/pom.xml
cp %{SOURCE23} compressors/z/pom.xml
cp %{SOURCE24} compressors/zstandard/pom.xml
cp %{SOURCE25} changes/pom.xml
cp %{SOURCE26} examples/pom.xml

%pom_change_dep :::runtime :::compile \
	archivers/sevenz \
	compressors/{lzma,pack200,xz,zstandard} \
	changes examples

%pom_add_dep org.glavo.kala:%{name}-compressors-bzip2:%{upstream_version} archivers/sevenz
%pom_add_dep org.glavo.kala:%{name}-compressors-deflate64:%{upstream_version} archivers/sevenz

cat >parent-pom.xml <<__POM__
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	>
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.glavo.kala</groupId>
	<artifactId>%{name}-parent</artifactId>
	<version>%{version}</version>
	<packaging>pom</packaging>
	<modules>
		<module>.</module>
		<module>base</module>
		<module>archivers</module>
		<module>archivers/ar</module>
		<module>archivers/arj</module>
		<module>archivers/cpio</module>
		<module>archivers/dump</module>
		<module>archivers/sevenz</module>
		<module>archivers/tar</module>
		<module>archivers/zip</module>
		<module>compressors</module>
		<module>compressors/brotli</module>
		<module>compressors/bzip2</module>
		<module>compressors/deflate</module>
		<module>compressors/deflate64</module>
		<module>compressors/gzip</module>
		<module>compressors/lz4</module>
		<module>compressors/lzma</module>
		<module>compressors/pack200</module>
		<module>compressors/snappy</module>
		<module>compressors/xz</module>
		<module>compressors/z</module>
		<module>compressors/zstandard</module>
		<module>changes</module>
		<module>examples</module>
	</modules>
</project>
__POM__

%build
%{mvn_build} -f -- \
	-f parent-pom.xml \
	-Dproject.build.outputTimestamp=$(date -u -d @${SOURCE_DATE_EPOCH:-$(date +%%s)} +%%Y-%%m-%%dT%%H:%%M:%%SZ) \
	-Dmaven.compiler.{source,target}=9

%install
%mvn_install
%fdupes %{buildroot}%{_javadocdir}/%{name}

%files -f .mfiles
%license LICENSE-2.0.txt
%doc {CHANGELOG,README}.md

%files javadoc -f .mfiles-javadoc
%license LICENSE-2.0.txt

%changelog
openSUSE Build Service is sponsored by