jython/jython.spec

239 lines
7.3 KiB
RPMSpec

#
# spec file for package jython
#
# Copyright (c) 2023 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 pyver %(python3 -c 'import sys;print(sys.version[0:3])')
%global cpython_version %{pyver}
%global pyxml_version %{pyver}
%global _python_bytecompile_errors_terminate_build 0
Name: jython
Version: 2.7.3
Release: 0
Summary: A Java implementation of the Python language
License: Apache-2.0 AND Python-2.0
Group: Development/Languages/Python
URL: https://www.jython.org/
Source0: %{name}-%{version}.tar.xz
Patch0: %{name}-build.patch
Patch1: %{name}-dont-validate-pom.patch
Patch2: %{name}-cachedir.patch
Patch3: %{name}-fix-tty-detection.patch
Patch4: %{name}-reproducible-now.patch
Patch5: %{name}-reproducible-builds.patch
Patch6: %{name}-java8compat.patch
BuildRequires: ant
BuildRequires: ant-junit
BuildRequires: antlr3-java
BuildRequires: antlr3-tool
BuildRequires: apache-commons-compress
BuildRequires: fdupes
BuildRequires: glassfish-servlet-api
BuildRequires: guava
BuildRequires: jansi
BuildRequires: jarjar
BuildRequires: java-devel >= 1.8
BuildRequires: javapackages-local
BuildRequires: jffi
BuildRequires: jline
BuildRequires: jnr-constants
BuildRequires: jnr-ffi
BuildRequires: jnr-posix
BuildRequires: lucene-core
BuildRequires: objectweb-asm
BuildRequires: python3 >= %{cpython_version}
BuildRequires: python3-xml >= %{pyxml_version}
BuildRequires: stringtemplate4
Requires: antlr3-java
Requires: antlr3-tool
Requires: apache-commons-compress
Requires: glassfish-servlet-api
Requires: guava
Requires: jansi
Requires: jarjar
Requires: jffi
Requires: jline
Requires: jnr-constants
Requires: jnr-ffi
Requires: jnr-posix
Requires: junit
Requires: lucene-core
Requires: objectweb-asm
Requires: stringtemplate4
Obsoletes: %{name}-manual
%description
Jython is an implementation of the high-level, dynamic, object-oriented
language Python seamlessly integrated with the Java platform. The
predecessor to Jython, JPython, is certified as 100% Pure Java. Jython
is freely available for both commercial and noncommercial use and is
distributed with source code. Jython is complementary to Java and is
especially suited for the following tasks: Embedded scripting--Java
programmers can add the Jython libraries to their system to allow end
users to write simple or complicated scripts that add functionality to
the application. Interactive experimentation--Jython provides an
interactive interpreter that can be used to interact with Java packages
or with running Java applications. This allows programmers to
experiment and debug any Java system using Jython. Rapid application
development--Python programs are typically 2-10X shorter than the
equivalent Java program. This translates directly to increased
programmer productivity. The seamless interaction between Python and
Java allows developers to freely mix the two languages both during
development and in shipping products.
%package javadoc
Summary: Javadoc for jython
Group: Development/Libraries/Java
Provides: jython-manual = %{version}
Obsoletes: jython-manual < %{version}
BuildArch: noarch
%description javadoc
API documentation for %{name}.
%package demo
Summary: Demonstration and samples for jython
Group: Development/Libraries/Java
Requires: %{name} = %{version}-%{release}
BuildArch: noarch
%description demo
Demonstrations and samples for %{name}.
%prep
%autosetup -p1
%build
build-jar-repository -s -p extlibs \
jffi/jffi \
antlr3 \
antlr3-runtime \
commons-compress \
glassfish-servlet-api \
guava/guava \
jansi/jansi \
jarjar \
jline/jline \
jnr/jnr-constants \
jnr/jnr-ffi \
jnr/jnr-posix \
junit \
lucene/lucene-core \
objectweb-asm/asm \
objectweb-asm/asm-commons \
objectweb-asm/asm-util \
stringtemplate4/ST4
%{ant} -Djython.version=%{version}
pushd maven
%{ant} -Djython.version=%{version} bundle
popd
# Symlink run-time libs
rm dist/javalib/*.jar
build-jar-repository -s -p dist/javalib \
jffi/jffi \
antlr3 \
antlr3-runtime \
commons-compress \
glassfish-servlet-api \
guava/guava \
jansi/jansi \
jarjar \
jline/jline \
jnr/jnr-constants \
jnr/jnr-ffi \
jnr/jnr-posix \
junit \
lucene/lucene-core \
objectweb-asm/asm \
objectweb-asm/asm-commons \
objectweb-asm/asm-util \
stringtemplate4/ST4
# remove shebangs from python files
find dist -type f -name '*.py' | xargs sed -i "s:#!\s*/usr.*::"
# fix env-script-interpreter
sed -i 's/env bash/bash/' dist/bin/%{name}{,.py}
%install
# jar
install -d -m 755 %{buildroot}%{_javadir}
install -m 644 dist/%{name}.jar %{buildroot}%{_javadir}/%{name}.jar
# pom
install -d -m 755 %{buildroot}%{_mavenpomdir}
install -m 644 build/maven/%{name}-%{version}.pom %{buildroot}%{_mavenpomdir}/JPP-%{name}.pom
%add_maven_depmap JPP-%{name}.pom %{name}.jar -a org.python:jython-standalone,jython:jython
# javadoc
install -d -m 755 %{buildroot}%{_javadocdir}/%{name}
cp -pr dist/Doc/javadoc/* %{buildroot}%{_javadocdir}/%{name}
%fdupes -s %{buildroot}%{_javadocdir}/%{name}
# jython home dir
install -d -m 755 %{buildroot}%{_libdir}/%{name}
ln -s %{_javadir}/%{name}.jar %{buildroot}%{_libdir}/%{name}
ln -s %{_javadir}/%{name}.jar %{buildroot}%{_libdir}/%{name}/%{name}-dev.jar
cp -pr dist/javalib %{buildroot}%{_libdir}/%{name}
rm dist/bin/jython_regrtest.bat
rm dist/bin/jython.exe
cp -pr dist/bin %{buildroot}%{_libdir}/%{name}
install -m 644 dist/registry %{buildroot}%{_libdir}/%{name}
# libs without tests
rm -rf dist/Lib/{distutils/tests,email/test,json/tests,test,unittest/test}
cp -pr dist/Lib %{buildroot}%{_libdir}/%{name}
%fdupes -s %{buildroot}%{_libdir}/%{name}/Lib
# demo
install -d -m 755 %{buildroot}%{_datadir}/%{name}
cp -pr Demo %{buildroot}%{_datadir}/%{name}
%fdupes -s %{buildroot}%{_datadir}/%{name}/Demo
# javadoc
install -d -m 755 %{buildroot}%{_datadir}/%{name}/Doc
ln -s %{_javadocdir}/%{name} %{buildroot}%{_datadir}/%{name}/Doc/javadoc
# scripts
install -d %{buildroot}%{_bindir}
ln -s %{_libdir}/%{name}/bin/jython %{buildroot}%{_bindir}
%files -f .mfiles
%doc ACKNOWLEDGMENTS NEWS README.txt
%license LICENSE.txt
%attr(0755,root,root) %{_bindir}/%{name}
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/bin
%{_libdir}/%{name}/javalib
%{_libdir}/%{name}/jython.jar
%{_libdir}/%{name}/jython-dev.jar
%{_libdir}/%{name}/Lib
%{_libdir}/%{name}/registry
%files javadoc
%license LICENSE.txt
%{_javadocdir}/%{name}
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/Doc
%files demo
%license LICENSE.txt
%{_datadir}/%{name}/Demo
%changelog