# Version available in bundles/org.eclipse.swt %global swt_bundle_version 3.132.0 %global major_version 4 %global minor_version 38 %global forgeurl https://github.com/eclipse-platform/eclipse.platform.swt %global tag R%{major_version}_%{minor_version} Epoch: 1 %global swtsrcdir bundles/org.eclipse.swt %global eclipse_arch %{_arch} Name: eclipse-swt Version: %{major_version}.%{minor_version} Release: 1%{?dist} Summary: Eclipse SWT: The Standard Widget Toolkit for GTK+ %forgemeta License: EPL-2.0 URL: %{forgeurl} Source0: %{forgesource} # Add fedora cflags to build native libs Patch0: eclipse-swt-fedora-build-native.patch ExclusiveArch: %{java_arches} Requires: java-25-headless Requires: webkit2gtk4.1 BuildRequires: javapackages-tools BuildRequires: java-25-devel BuildRequires: maven-local-openjdk25 BuildRequires: ant-openjdk25 BuildRequires: gcc BuildRequires: make BuildRequires: webkit2gtk4.1-devel BuildRequires: cairo-devel BuildRequires: gtk3-devel BuildRequires: mesa-libGLU-devel Provides: eclipse-swt = 1:%{version}-%{release} Obsoletes: eclipse-swt <= 1:4.19-3 %description SWT is an open source widget toolkit for Java designed to provide efficient, portable access to the user-interface facilities of the operating systems on which it is implemented. %javadoc_package %prep %forgesetup # Patch doesn't support path with spaces, renaming and back to apply patch mv %{swtsrcdir}/Eclipse\ SWT\ PI %{swtsrcdir}/Eclipse-SWT-PI %patch -p1 0 mv %{swtsrcdir}/Eclipse-SWT-PI %{swtsrcdir}/Eclipse\ SWT\ PI # This part generates secondary fragments using primary fragments %pom_xpath_inject "pom:profiles/pom:profile[pom:id='unix']/pom:build/pom:plugins/pom:plugin[pom:artifactId='target-platform-configuration']/pom:configuration/pom:environments" \ "linuxgtks390x" . # Prepare native build cp %{swtsrcdir}/Eclipse\ SWT/common/library/* %{swtsrcdir}/Eclipse\ SWT\ PI/gtk/library/ cp %{swtsrcdir}/Eclipse\ SWT/common/version.txt %{swtsrcdir}/ cp %{swtsrcdir}/Eclipse\ SWT\ PI/{common,cairo}/library/* %{swtsrcdir}/Eclipse\ SWT\ PI/gtk/library/ cp %{swtsrcdir}/Eclipse\ SWT\ OpenGL/glx/library/* %{swtsrcdir}/Eclipse\ SWT\ PI/gtk/library/ cp %{swtsrcdir}/Eclipse\ SWT\ WebKit/gtk/library/* %{swtsrcdir}/Eclipse\ SWT\ PI/gtk/library/ cp %{swtsrcdir}/Eclipse\ SWT\ AWT/gtk/library/* %{swtsrcdir}/Eclipse\ SWT\ PI/gtk/library/ # Prepare java build mkdir -p bundles/org.eclipse.swt/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT/{common,gtk,cairo,emulated/bidi,emulated/coolbar,emulated/taskbar}/org/* %{swtsrcdir}/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT\ Accessibility/{common,gtk}/org/* %{swtsrcdir}/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT\ AWT/{common,gtk}/org/* %{swtsrcdir}/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT\ Browser/{common,gtk}/org/* %{swtsrcdir}/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT\ Custom\ Widgets/common/org/* %{swtsrcdir}/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT\ Drag\ and\ Drop/{common,gtk}/org/* %{swtsrcdir}/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT\ OpenGL/{common,gtk,glx}/org/* %{swtsrcdir}/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT\ PI/{common,gtk,cairo}/org/* %{swtsrcdir}/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT\ Printing/{common,gtk}/org/* %{swtsrcdir}/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT\ Program/{common,gtk}/org/* %{swtsrcdir}/src/main/java/org cp -r %{swtsrcdir}/Eclipse\ SWT\ WebKit/gtk/org/* %{swtsrcdir}/src/main/java/org # Prepare maven build for fedora %pom_remove_parent %pom_remove_plugin org.eclipse.tycho: %pom_remove_plugin org.eclipse.tycho: bundles/org.eclipse.swt %pom_remove_plugin org.eclipse.tycho: local-build/local-build-parent %pom_disable_module binaries %pom_disable_module examples/org.eclipse.swt.examples %pom_disable_module examples/org.eclipse.swt.examples.browser.demos %pom_disable_module examples/org.eclipse.swt.examples.launcher %pom_disable_module examples/org.eclipse.swt.examples.ole.win32 %pom_disable_module examples/org.eclipse.swt.examples.views %pom_disable_module tests/org.eclipse.swt.tests rm .mvn/extensions.xml %pom_xpath_replace "//pom:packaging" "jar" bundles/org.eclipse.swt %pom_xpath_inject "//pom:artifactId[text()='eclipse.platform.swt']/.." "%{major_version}.%{minor_version}.0" %pom_add_plugin :maven-compiler-plugin bundles/org.eclipse.swt %pom_xpath_inject "//pom:plugin[pom:artifactId='maven-compiler-plugin']" \ " 25 25 -classpath \${project.build.outputDirectory} " bundles/org.eclipse.swt # Remove -SNAPSHOT in version %pom_xpath_set "//pom:project/pom:version" "%{major_version}.%{minor_version}.0" pom.xml %pom_xpath_set "//pom:project/pom:version" "%{swt_bundle_version}" bundles/org.eclipse.swt/pom.xml %pom_xpath_set "//pom:parent/pom:version" "%{major_version}.%{minor_version}.0" bundles/org.eclipse.swt/pom.xml %pom_xpath_set "//pom:parent/pom:version" "%{major_version}.%{minor_version}.0" local-build/local-build-parent/pom.xml %build cd %{swtsrcdir} # Build native part export SWT_LIB_DEBUG=1 export SWT_JAVA_HOME=/usr/lib/jvm/java-25-openjdk export CFLAGS="${RPM_OPT_FLAGS} -std=gnu17 -Wno-deprecated-declarations" export LFLAGS="${RPM_LD_FLAGS}" cd Eclipse\ SWT\ PI/gtk/library/ sh build.sh -gtk3 # Build Java part cd ../../.. %mvn_build %install # Generate addition Maven metadata rm -rf .xmvn/ .xmvn-reactor # Install Maven metadata for SWT JAR="$(ls -1 %{swtsrcdir}/target/org.eclipse.swt-*.jar | head -n1)" VER="$(basename "$JAR" | sed -E 's/^org\.eclipse\.swt-([0-9][0-9.]*(-SNAPSHOT)?)\.jar/\1/')" %mvn_artifact "org.eclipse.swt:org.eclipse.swt:jar:$VER" "$JAR" %mvn_alias "org.eclipse.swt:org.eclipse.swt" "org.eclipse.swt:swt" %mvn_file "org.eclipse.swt:org.eclipse.swt" swt %mvn_install -J %{swtsrcdir}/target/xmvn-apidocs # fix so permissions find %{swtsrcdir}/Eclipse\ SWT\ PI/gtk/library/*.so -name *.so -exec chmod a+x {} \; install -d 755 %{buildroot}/%{_libdir}/%{name} cp -a %{swtsrcdir}/Eclipse\ SWT\ PI/gtk/library/*.so %{buildroot}/%{_libdir}/%{name} %files -f .mfiles %{_libdir}/%{name} %license LICENSE %license NOTICE %changelog * Thu Feb 05 2026 Nicolas De Amicis - 1:4.38-1 - Bump to 4.38 and fix FTBFS(2434004) * Thu Feb 27 2025 Sérgio Basto - 1:4.29-8 - Fix GCC build, compiling with -std=gnu17 * Thu Jan 16 2025 Fedora Release Engineering - 1:4.29-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild * Wed Nov 06 2024 Nicolas De Amicis - 1:4.29-6 - Rebuilt for java-21-openjdk as system jdk * Wed Jul 17 2024 Fedora Release Engineering - 1:4.29-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild * Tue Feb 27 2024 Jiri Vanek - 1:4.29-4 - Rebuilt for java-21-openjdk as system jdk * Wed Jan 24 2024 Fedora Release Engineering - 1:4.29-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Fri Jan 19 2024 Fedora Release Engineering - 1:4.29-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Thu Oct 19 2023 Nicolas De Amicis - 1:4.29-1 - Bump to 4.29 * Wed Jul 19 2023 Fedora Release Engineering - 1:4.28-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Mon Jul 17 2023 Nicolas De Amicis - 1:4.28-1 - Bump to 4.28 * Thu May 11 2023 Nicolas De Amicis - 1:4.27-2 - Change dependency to webkit2gtk-4.1 due to removal of webkit2gtk-3 * Tue Apr 04 2023 Nicolas De Amicis - 1:4.27-1 - Bump to 4.27 * Thu Jan 19 2023 Fedora Release Engineering - 1:4.26-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Wed Dec 07 2022 Nicolas De Amicis - 1:4.26-1 - Bump to 4.26 * Thu Sep 22 2022 Nicolas De Amicis - 1:4.25-1 - Bump to 4.25 * Thu Jul 21 2022 Fedora Release Engineering - 1:4.24-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Thu Jul 14 2022 Nicolas De Amicis - 1:4.24-2 - Rebuilt for Drop i686 JDKs (use new macro %{java_arches}) * Thu Jun 23 2022 Nicolas De Amicis - 1:4.24-1 - Bump to 4.24 * Wed Mar 16 2022 Nicolas De Amicis - 1:4.23-1 - Bump to 4.23 * Sat Feb 05 2022 Jiri Vanek - 1:4.22-4 - Rebuilt for java-17-openjdk as system jdk * Thu Jan 20 2022 Fedora Release Engineering - 1:4.22-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Wed Dec 29 2021 Nicolas De Amicis - 1:4.22-2 - 4.22 release compile only with openjdk-11, cleanup spec file * Thu Dec 09 2021 Nicolas De Amicis - 1:4.22-1 - Bump to 4.22 release and change compilation to openjdk-1.8 * Wed Sep 22 2021 Nicolas De Amicis - 1:4.21-1 - Initial packaging