# # spec file for package antlr3 # # Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # 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 antlr_version 3.5.2 %global c_runtime_version 3.4 %global javascript_runtime_version 3.1 %bcond_with bootstrap Version: %{antlr_version} Release: 0 Summary: ANother Tool for Language Recognition License: BSD-3-Clause Group: Development/Libraries/Java URL: https://www.antlr3.org/ Source0: https://github.com/antlr/antlr3/archive/%{antlr_version}.tar.gz Source1: http://www.antlr3.org/download/antlr-javascript-runtime-%{javascript_runtime_version}.zip Patch0: 0001-java8-fix.patch # Generate OSGi metadata Patch1: osgi-manifest.patch BuildRequires: maven-local BuildRequires: mvn(antlr:antlr) BuildRequires: mvn(org.antlr:ST4) BuildRequires: mvn(org.antlr:antlr-runtime) BuildRequires: mvn(org.antlr:stringtemplate) BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-plugin-plugin) BuildRequires: mvn(org.apache.maven:maven-plugin-api) BuildRequires: mvn(org.apache.maven:maven-project) BuildRequires: mvn(org.codehaus.plexus:plexus-compiler-api) BuildRequires: mvn(org.sonatype.oss:oss-parent:pom:) BuildRequires: mvn(xerces:dom3-xml-apis) BuildRequires: unzip %if %{with bootstrap} Name: antlr3-bootstrap Source100: %{name}-rpmlintrc Patch100: antlr3-generated_sources.patch BuildRequires: xz #!BuildRequires: stringtemplate4-bootstrap %else Name: antlr3 BuildRequires: ant BuildRequires: antlr BuildRequires: autoconf BuildRequires: automake BuildRequires: fdupes BuildRequires: libtool BuildRequires: mvn(org.antlr:antlr) BuildRequires: mvn(org.antlr:antlr3-maven-plugin) #!BuildRequires: stringtemplate4 #!BuildRequires: antlr3-bootstrap-tool %endif %description ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. %package tool Summary: ANother Tool for Language Recognition Group: Development/Libraries/Java Requires: mvn(org.antlr:antlr-runtime) = %{antlr_version} # Explicit requires for javapackages-tools since antlr3-script # uses /usr/share/java-utils/java-functions BuildArch: noarch %description tool ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. %package javadoc Summary: API documentation for %{name} Group: Documentation/HTML BuildArch: noarch %description javadoc %{summary}. %package javascript Version: %{javascript_runtime_version} Release: 0 Summary: Javascript run-time support for ANTLR-generated parsers Group: Development/Libraries/Java BuildArch: noarch %description javascript Javascript run-time support for ANTLR-generated parsers %if %{with bootstrap} %package -n libantlr3c-bootstrap %else %package -n libantlr3c %endif Version: %{c_runtime_version} Release: 0 Summary: C run-time support for ANTLR-generated parsers Group: Development/Libraries/Java Provides: %{name}-C = %{version}-%{release} %if %{with bootstrap} %description -n libantlr3c-bootstrap %else %description -n libantlr3c %endif C run-time support for ANTLR-generated parsers %package C-devel Version: %{c_runtime_version} Release: 0 Summary: Header files for the C bindings for ANTLR-generated parsers Group: Development/Libraries/Java Requires: libantlr3c = %{c_runtime_version}-%{release} %description C-devel Header files for the C bindings for ANTLR-generated parsers %package C-docs Version: %{c_runtime_version} Release: 0 Summary: API documentation for the C run-time support for ANTLR-generated parsers Group: Development/Libraries/Java BuildRequires: doxygen BuildRequires: graphviz Requires: libantlr3c = %{c_runtime_version}-%{release} BuildArch: noarch %description C-docs This package contains doxygen documentation with instruction on how to use the C target in ANTLR and complete API description of the C run-time support for ANTLR-generated parsers. %package C++-devel Summary: C++ runtime support for ANTLR-generated parsers Group: Development/Libraries/Java %description C++-devel C++ runtime support for ANTLR-generated parsers. %prep %setup -q -n antlr3-%{antlr_version} -a 1 %if %{with bootstrap} %patch100 %pom_remove_plugin :antlr3-maven-plugin tool %endif sed -i "s,\${buildNumber},`cat %{_sysconfdir}/fedora-release` `date`," tool/src/main/resources/org/antlr/antlr.properties %patch0 -p1 %patch1 %if %{without bootstrap} # remove pre-built artifacts find -type f -a -name *.jar -delete find -type f -a -name *.class -delete %endif %pom_disable_module antlr3-maven-archetype %pom_disable_module gunit %pom_disable_module gunit-maven-plugin %pom_disable_module antlr-complete %pom_disable_module runtime/Java %pom_remove_plugin :maven-source-plugin %pom_remove_plugin :maven-javadoc-plugin # compile for target 1.6, see BZ#842572 sed -i 's/jsr14/1.6/' antlr3-maven-archetype/src/main/resources/archetype-resources/pom.xml \ antlr3-maven-plugin/pom.xml \ gunit/pom.xml \ gunit-maven-plugin/pom.xml \ pom.xml \ runtime/Java/pom.xml \ tool/pom.xml # workarounds bug in filtering (Mark invalid) %pom_xpath_remove pom:resource/pom:filtering %{mvn_package} : tool %{mvn_file} :antlr antlr3 %{mvn_file} :antlr-maven-plugin antlr3-maven-plugin %build %if %{with bootstrap} %{mvn_build} -f -j %else %{mvn_build} -f # Build the C runtime pushd runtime/C autoreconf -i %configure --disable-abiflags --enable-debuginfo \ %if 0%{?__isa_bits} == 64 --enable-64bit %else %{nil} %endif sed -i "s#CFLAGS = .*#CFLAGS = %{optflags}#" Makefile make %{?_smp_mflags} doxygen -u # update doxygen configuration file doxygen # build doxygen documentation popd # build ant task pushd antlr-ant/main/antlr3-task/ export CLASSPATH=$(build-classpath ant) javac -encoding ISO-8859-1 antlr3-src/org/apache/tools/ant/antlr/ANTLR3.java jar cvf ant-antlr3.jar \ -C antlr3-src org/apache/tools/ant/antlr/antlib.xml \ -C antlr3-src org/apache/tools/ant/antlr/ANTLR3.class popd %endif %install mkdir -p %{buildroot}/%{_mandir} mkdir -p %{buildroot}/%{_datadir}/antlr %mvn_install %if %{without bootstrap} %fdupes -s %{buildroot}%{_javadocdir} # install ant task install -m 644 antlr-ant/main/antlr3-task/ant-antlr3.jar -D %{buildroot}%{_javadir}/ant/ant-antlr3.jar mkdir -p %{buildroot}%{_sysconfdir}/ant.d cat > %{buildroot}%{_sysconfdir}/ant.d/ant-antlr3 << EOF ant/ant-antlr3 antlr3 EOF # install C runtime pushd runtime/C %make_install rm %{buildroot}%{_libdir}/libantlr3c.{a,la} pushd api/man/man3 for file in `ls -1 * | grep -vi "^antlr3"`; do mv $file antlr3-$file done sed -i -e 's,^\.so man3/pANTLR3,.so man3/antlr3-pANTLR3,' `grep -rl 'man3/pANTLR3' .` gzip * popd mv api/man/man3 %{buildroot}%{_mandir}/ rmdir api/man popd # install javascript runtime pushd antlr-javascript-runtime-%{javascript_runtime_version} install -pm 644 *.js %{buildroot}%{_datadir}/antlr/ popd # install C++ runtime (header only) mkdir -p %{buildroot}/%{_includedir}/%{name} install -pm 644 runtime/Cpp/include/* %{buildroot}/%{_includedir}/ %fdupes -s runtime/C/api %fdupes -s %{buildroot}%{_mandir} %endif # install wrapper script %jpackage_script org.antlr.Tool '' '' 'stringtemplate4/ST4.jar:antlr3.jar:antlr3-runtime.jar' antlr3 true %files tool -f .mfiles-tool %license tool/{LICENSE.txt,CHANGES.txt} %doc README.txt %{_bindir}/antlr3 %if %{without bootstrap} %{_javadir}/ant/ant-antlr3.jar %config(noreplace) %{_sysconfdir}/ant.d/ant-antlr3 %files -n libantlr3c %license tool/LICENSE.txt %{_libdir}/libantlr3c.so %files C-devel %{_mandir}/man3/* %{_includedir}/*.h %files C-docs %doc runtime/C/api %files C++-devel %license tool/LICENSE.txt %{_includedir}/*.hpp %{_includedir}/*.inl %files javascript %license tool/LICENSE.txt %{_datadir}/antlr/ %files javadoc -f .mfiles-javadoc %license tool/LICENSE.txt %endif %changelog