%global commit d9a950dd80ab3e6426ef0cd254f933109dddd9e5 %global date 20150503 # python3 for Fedora only (not available at EPEL) %if 0%{?fedora} %bcond_without python3 %endif # build conditionals for debug performance %bcond_without test_python %bcond_without test_java %bcond_without javadoc %bcond_without html Name: py4j Version: 0.9 Release: 0.4.pre.%{date}git%(c=%{commit}; echo ${c:0:7})%{?dist} Summary: Dynamically access in Python programs to arbitrary Java objects License: BSD URL: http://%{name}.sf.net Source0: http://github.com/bartdag/%{name}/archive/%{commit}/%{commit}.tar.gz#/%{name}-%{commit}.tar.gz Patch0: py4j-0.8.3-add-hamcrest-in-classpath.patch Patch1: py4j-Base64-java8.patch Patch2: py4j-Base64-java7.patch BuildArch: noarch BuildRequires: python2-devel python-setuptools %if %{with python3} BuildRequires: python3-devel python3-setuptools %endif BuildRequires: ant-junit maven-local BuildRequires: sonatype-oss-parent # F22+ unbundles hamcrest from junit %if 0%{?fedora} >= 22 BuildRequires: hamcrest %endif BuildRequires: python-sphinx BuildRequires: python-nose Requires: %{name}-java = %{version}-%{release} %description Py4J enables Python programs running in a Python interpreter to dynamically access Java objects in a Java Virtual Machine. Methods are called as if the Java objects resided in the Python interpreter and Java collections can be accessed through standard Python collection methods. Py4J also enables Java programs to call back Python objects. Py4J is distributed under the BSD license. %if %{with python3} %package -n python3-%{name} Summary: Py4J enables Python3 programs to dynamically access arbitrary Java objects Requires: python3 Requires: %{name}-java = %{version}-%{release} %description -n python3-%{name} Py4J enables Python3 programs running in a Python interpreter to dynamically access Java objects in a Java Virtual Machine. Methods are called as if the Java objects resided in the Python interpreter and Java collections can be accessed through standard Python collection methods. Py4J also enables Java programs to call back Python objects. Py4J is distributed under the BSD license. This package is for usage with Python3 only. %endif %package java Summary: Py4J Java Library %description java %{summary}. %if %{with javadoc} %package javadoc Summary: Javadoc files for %{name} %description javadoc %{summary}. %endif %package doc Summary: Documentation files for %{name} %description doc %{summary}. %prep %setup -qn%{name}-%{commit} # remove unneeded stuff rm -r current-release net.sf.* .*.yml setup.py find . -name \*.jar -print -delete # build jar without version in name sed -i "s|version=.*|version=|" %{name}-java/ant.properties sed -i "s|'.*'|''|" %{name}-python/src/%{name}/version.py pushd %{name}-java # set default java version to avoid some warnings %if 0%{?fedora} >= 21 sed -i "s|1\.6|1.8|g" build.xml %else sed -i "s|1\.6|1.7|g" build.xml %endif # unbundle junit (and hamcrest) %if 0%{?fedora} >= 22 %patch0 -p1 %endif sed -i "s|junit-.*\.jar|$(build-classpath junit)|g" ant.properties # unbundle MiGBase64, https://fedorahosted.org/fpc/ticket/537 rm src/py4j/Base64.java %if 0%{?fedora} >= 21 %patch1 -p1 %else # Fedora20 / CentOS7 %patch2 -p1 %endif popd # do not build tests by default (later done in check) mkdir %{name}-java/notest sed -i 's|||' %{name}-java/build.xml sed -i "s|%{name}\.tests||" %{name}-python/setup.py rm %{name}-python/src/dummy_test.py # install jar later with maven sed -i "/data_files/d" %{name}-python/setup.py # build separately for python3 in special subfolder %if %{with python3} cp -a %{name}-python python3 %endif %build pushd %{name}-java ant jar %if %{with javadoc} ant javadoc %endif popd pushd %{name}-python %{__python2} setup.py build popd %if %{with python3} pushd python3 %{__python3} setup.py build popd %endif %if %{with html} # FIXME autodoc does not work for current tarball sed -i "s|.sphinx.ext.autodoc.* | |" %{name}-web/conf.py # sphinx is restricted at epel %if 0%{?fedora} sphinx-build %{?_smp_mflags} -a -b html -v -T %{name}-web html %else sphinx-build %{name}-web html %endif # FIXME do we need following files in release? not sure... rm -r html/.buildinfo html/.doctrees find html -name \*.js -print -delete %endif %install pushd %{name}-python %{__python2} setup.py install -O1 --skip-build --root %{buildroot} popd %if %{with python3} pushd python3 %{__python3} setup.py install -O1 --skip-build --root %{buildroot} popd %endif %mvn_artifact %{name}-java/pom.xml %{name}-java/%{name}.jar %mvn_install -J %{name}-java/javadoc mkdir -p %{buildroot}%{_datadir}/%{name} ln -sf %{_javadir}/%{name}/%{name}.jar %{buildroot}%{_datadir}/%{name} %check %if %{with test_java} # prevent wrong exception warnings sed -i 's|FINEST|OFF|' %{name}-java/logging.properties sed -i 's||\0 |' \ %{name}-java/build.xml # remove duplicated summaries sed -i 's|printsummary="on"||' %{name}-java/build.xml # do build tests only, see above in build for disabled test sed -i "s|notest|test|" %{name}-java/build.xml # test go! ant -f %{name}-java/build.xml java-test %endif %if %{with test_python} # important: build java tests before python, otherwise will not work sed -i "s|notest|test|" %{name}-java/build.xml ant -f %{name}-java/build.xml build # prevent wrong exception warnings sed -i "s|instance.gateway.shutdown()|if 'gateway' in dir(instance): \0|" \ %{name}-python/src/%{name}/tests/java_gateway_test.py # FIXME some failing tests sed -i "s|test_doc|ignore_doc|g" %{name}-python/src/%{name}/tests/java_help_test.py # do build tests only, see above in build for disabled test sed -e "s|src|%{name}-python/\0|g" -e "s|'%{name}', ||" %{name}-python/setup.py >setup.py # test go! ant -f %{name}-java/build.xml python-test # FIXME run tests also for python3? %endif %files %license %{name}-python/LICENSE.txt %doc README.rst %{name}-python/README.txt %{python2_sitelib}/*.egg-info %{python2_sitelib}/%{name}/ %if %{with python3} %files -n python3-%{name} %license %{name}-python/LICENSE.txt %doc README.rst %{name}-python/README.txt %{python3_sitelib}/*.egg-info %{python3_sitelib}/%{name}/ %endif %files java -f .mfiles %license %{name}-java/LICENSE.txt %doc %{name}-java/README.txt %{name}-java/changelog.txt %dir %{_datadir}/%{name} %{_datadir}/%{name}/*.jar %files doc %license %{name}-web/LICENSE %doc %{name}-web/TODO %if %{with html} %doc html/ %endif %if %{with javadoc} %files javadoc -f .mfiles-javadoc %license %{name}-java/LICENSE.txt %endif %changelog * Sat May 23 2015 Raphael Groner - 0.9-0.4.pre.20150503gitd9a950d - unbundle MiGBase64 - improve checks - improve sphinx html - add build conditionals * Wed May 06 2015 Raphael Groner - 0.9-0.3.pre.20150503gitd9a950d - new snapshot of upstream - remove some obsolete files - fix Summary and URL - fix rpmlint warnings * Thu Apr 30 2015 Raphael Groner - 0.9-0.2.pre.20141101git9a8ab93 - fix pathes and maven - add python-sphinx to generate additional documentation * Mon Apr 27 2015 Raphael Groner - 0.9-0.1.pre.20141101git9a8ab93 - initial