diff --git a/.devtoolset-4-eclipse-pydev.metadata b/.devtoolset-4-eclipse-pydev.metadata new file mode 100644 index 0000000..aa48e79 --- /dev/null +++ b/.devtoolset-4-eclipse-pydev.metadata @@ -0,0 +1 @@ +38a82829f0a178cce0a6f2ff548e96a35714e065 SOURCES/pydev_4_1_0.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b83d1f5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/pydev_4_1_0.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/fix-process-killing.patch b/SOURCES/fix-process-killing.patch new file mode 100644 index 0000000..f2df010 --- /dev/null +++ b/SOURCES/fix-process-killing.patch @@ -0,0 +1,165 @@ +diff --git a/plugins/org.python.pydev.debug/src/org/python/pydev/debug/processfactory/PyProcessFactory.java b/plugins/org.python.pydev.debug/src/org/python/pydev/debug/processfactory/PyProcessFactory.java +index 4610781..e08767f 100644 +--- a/plugins/org.python.pydev.debug/src/org/python/pydev/debug/processfactory/PyProcessFactory.java ++++ b/plugins/org.python.pydev.debug/src/org/python/pydev/debug/processfactory/PyProcessFactory.java +@@ -8,8 +8,6 @@ import org.eclipse.debug.core.ILaunch; + import org.eclipse.debug.core.IProcessFactory; + import org.eclipse.debug.core.model.IProcess; + import org.eclipse.debug.core.model.RuntimeProcess; +-import org.jvnet.process_factory.AbstractProcess; +-import org.jvnet.process_factory.ProcessFactory; + import org.python.pydev.core.log.Log; + import org.python.pydev.debug.ui.DebugPrefsPage; + +@@ -59,9 +57,9 @@ public class PyProcessFactory implements IProcessFactory { + public void destroy() { + if (DebugPrefsPage.getKillSubprocessesWhenTerminatingProcess()) { + try { +- AbstractProcess p = ProcessFactory.CreateProcess(process); +- //I.e.: this is the real change in this wrapper: when killing a process, we'll kill the children +- //processes too, not only the main process (i.e.: so that we don't have zombie processes alive for ++ UnixProcessKiller p = new UnixProcessKiller(process); ++ //I.e.: this is the real change in this wrapper: when killing a process, we'll kill the children ++ //processes too, not only the main process (i.e.: so that we don't have zombie processes alive for + //Django, etc). + p.killRecursively(); + } catch (Exception e) { +diff --git a/plugins/org.python.pydev.debug/src/org/python/pydev/debug/processfactory/UnixProcessKiller.java b/plugins/org.python.pydev.debug/src/org/python/pydev/debug/processfactory/UnixProcessKiller.java +new file mode 100644 +index 0000000..c8ec14f +--- /dev/null ++++ b/plugins/org.python.pydev.debug/src/org/python/pydev/debug/processfactory/UnixProcessKiller.java +@@ -0,0 +1,108 @@ ++package org.python.pydev.debug.processfactory; ++ ++import java.io.BufferedInputStream; ++import java.io.IOException; ++import java.io.InputStreamReader; ++import java.lang.reflect.Field; ++import java.util.LinkedHashSet; ++import java.util.StringTokenizer; ++ ++public class UnixProcessKiller { ++ private final int pid; ++ ++ private static class Output { ++ ++ public final String stdout; ++ public final String stderr; ++ ++ public Output(String stdout, String stderr) { ++ this.stdout = stdout; ++ this.stderr = stderr; ++ } ++ } ++ ++ public UnixProcessKiller(Process p) ++ throws Exception { ++ this.pid = getPid(p); ++ } ++ ++ private static int getPid(Process process) ++ throws Exception { ++ try { ++ Field f = process.getClass().getDeclaredField("pid"); ++ f.setAccessible(true); ++ return f.getInt(process); ++ } catch (Exception e) { ++ throw new RuntimeException(e); ++ } ++ } ++ ++ public void killRecursively() ++ throws IOException { ++ LinkedHashSet listed = new LinkedHashSet<>(); ++ killRecursively(pid, listed); ++ } ++ ++ private static void killRecursively(int pid, LinkedHashSet listed) ++ throws IOException { ++ listed.add(Integer.valueOf(pid)); ++ Runtime.getRuntime().exec(new String[] { ++ "kill", "-stop", Integer.toString(pid) ++ }, null, null); ++ Process createProcess = Runtime.getRuntime().exec(new String[] { ++ "pgrep", "-P", Integer.toString(pid) ++ }, null, null); ++ Output outputPGrep = getProcessOutput(createProcess); ++ if (outputPGrep.stderr != null && outputPGrep.stderr.length() > 0) { ++ throw new RuntimeException(outputPGrep.stderr); ++ } ++ Runtime.getRuntime().exec(new String[] { ++ "kill", "-KILL", Integer.toString(pid) ++ }, null, null); ++ String ids = outputPGrep.stdout; ++ StringTokenizer strTok = new StringTokenizer(ids); ++ do { ++ if (!strTok.hasMoreTokens()) { ++ break; ++ } ++ String nextToken = strTok.nextToken(); ++ int found = Integer.parseInt(nextToken); ++ if (!listed.contains(Integer.valueOf(found))) { ++ killRecursively(found, listed); ++ } ++ } while (true); ++ } ++ ++ private static Output getProcessOutput(Process process) ++ throws IOException { ++ try { ++ process.getOutputStream().close(); ++ } catch (IOException e2) { ++ } ++ InputStreamReader inputStream = new InputStreamReader(new BufferedInputStream(process.getInputStream())); ++ InputStreamReader errorStream = new InputStreamReader(new BufferedInputStream(process.getErrorStream())); ++ try { ++ process.waitFor(); ++ } catch (InterruptedException e1) { ++ } ++ try { ++ Object sync = new Object(); ++ synchronized (sync) { ++ sync.wait(10L); ++ } ++ } catch (Exception e) { ++ } ++ return new Output(readInputStream(inputStream), readInputStream(errorStream)); ++ } ++ ++ private static String readInputStream(InputStreamReader in) ++ throws IOException { ++ StringBuffer contents = new StringBuffer(); ++ char buf[] = new char[80]; ++ int c; ++ while ((c = in.read(buf)) != -1) { ++ contents.append(buf, 0, c); ++ } ++ return contents.toString(); ++ } ++} +\ No newline at end of file +diff --git a/plugins/org.python.pydev.debug/META-INF/MANIFEST.MF b/plugins/org.python.pydev.debug/META-INF/MANIFEST.MF +index 0704b04..bf249fa 100644 +--- a/plugins/org.python.pydev.debug/META-INF/MANIFEST.MF ++++ b/plugins/org.python.pydev.debug/META-INF/MANIFEST.MF +@@ -3,8 +3,7 @@ Bundle-ManifestVersion: 2 + Bundle-Name: Pydev debug + Bundle-SymbolicName: org.python.pydev.debug; singleton:=true + Bundle-Version: 4.1.0.qualifier +-Bundle-ClassPath: pydev-debug.jar, +- libs/winp-1.19.jar ++Bundle-ClassPath: pydev-debug.jar + Bundle-Activator: org.python.pydev.debug.core.PydevDebugPlugin + Bundle-Vendor: Aptana + Bundle-Localization: plugin +diff --git a/plugins/org.python.pydev.debug/build.properties b/plugins/org.python.pydev.debug/build.properties +index 0704b04..bf249fa 100644 +--- a/plugins/org.python.pydev.debug/build.properties ++++ b/plugins/org.python.pydev.debug/build.properties +@@ -1,5 +1,4 @@ + bin.includes = plugin.xml,\ +- libs/winp-1.19.jar,\ + META-INF/,\ + schema/,\ + icons/,\ diff --git a/SOURCES/native-name.patch b/SOURCES/native-name.patch new file mode 100644 index 0000000..4512143 --- /dev/null +++ b/SOURCES/native-name.patch @@ -0,0 +1,11 @@ +--- plugins/org.python.pydev/pysrc/pydevd_attach_to_process/add_code_to_python_process.py.orig 2015-04-21 12:11:55.117830295 +0100 ++++ plugins/org.python.pydev/pysrc/pydevd_attach_to_process/add_code_to_python_process.py 2015-04-21 12:56:13.918310780 +0100 +@@ -413,7 +413,7 @@ + + print('Attaching with arch: %s'% (arch,)) + +- target_dll = os.path.join(filedir, 'attach_linux_%s.so' % suffix) ++ target_dll = os.path.join(filedir, 'attach_linux.so') + target_dll = os.path.normpath(target_dll) + if not os.path.exists(target_dll): + raise RuntimeError('Could not find dll file to inject: %s' % target_dll) diff --git a/SOURCES/no-fund-raising-screen.patch b/SOURCES/no-fund-raising-screen.patch new file mode 100644 index 0000000..97c983b --- /dev/null +++ b/SOURCES/no-fund-raising-screen.patch @@ -0,0 +1,13 @@ +--- plugins/org.python.pydev/src/org/python/pydev/editor/PyEdit.java.orig 2015-08-18 16:00:39.881989546 +0100 ++++ plugins/org.python.pydev/src/org/python/pydev/editor/PyEdit.java 2015-08-18 16:00:45.682921665 +0100 +@@ -346,10 +346,6 @@ + this.codeFoldingSetter = new CodeFoldingSetter(this); + + CheckDefaultPreferencesDialog.askAboutSettings(); +- +- //Ask for people to take a look in the crowdfunding for pydev: +- //http://tiny.cc/pydev-2014 +- PydevShowBrowserMessage.show(); + } catch (Throwable e) { + Log.log(e); + } diff --git a/SOURCES/remove-iInfo-error.patch b/SOURCES/remove-iInfo-error.patch new file mode 100644 index 0000000..7d365b1 --- /dev/null +++ b/SOURCES/remove-iInfo-error.patch @@ -0,0 +1,14 @@ +--- a/plugins/org.python.pydev/pysrc/interpreterInfo.py ++++ b/plugins/org.python.pydev/pysrc/interpreterInfo.py +@@ -259,6 +259,4 @@ if __name__ == '__main__': + import time + time.sleep(0.1) + except: +- pass +- +- raise RuntimeError('Ok, this is so that it shows the output (ugly hack for some platforms, so that it releases the output).') ++ pass +\ No newline at end of file +-- +1.8.3.1 + diff --git a/SOURCES/remove-winregistry.patch b/SOURCES/remove-winregistry.patch new file mode 100644 index 0000000..829fee9 --- /dev/null +++ b/SOURCES/remove-winregistry.patch @@ -0,0 +1,74 @@ +--- plugins/org.python.pydev/src/org/python/pydev/ui/pythonpathconf/PythonInterpreterProviderFactory.java.orig 2013-11-05 17:35:28.000000000 +0200 ++++ plugins/org.python.pydev/src/org/python/pydev/ui/pythonpathconf/PythonInterpreterProviderFactory.java 2013-11-11 11:01:42.396817944 +0200 +@@ -25,9 +25,6 @@ import org.python.pydev.runners.SimpleRu + import org.python.pydev.shared_core.string.StringUtils; + import org.python.pydev.shared_core.utils.PlatformUtils; + +-import at.jta.Key; +-import at.jta.Regor; +- + public class PythonInterpreterProviderFactory extends AbstractInterpreterProviderFactory { + + public IInterpreterProvider[] getInterpreterProviders(InterpreterType type) { +@@ -63,46 +60,6 @@ public class PythonInterpreterProviderFa + } else { + // On windows we can try to see the installed versions... + List foundVersions = new ArrayList(); +- try { +- Regor regor = new Regor(); +- +- // The structure for Python is something as +- // Software\\Python\\PythonCore\\2.6\\InstallPath +- for (Key root : new Key[] { Regor.HKEY_LOCAL_MACHINE, Regor.HKEY_CURRENT_USER }) { +- Key key = regor.openKey(root, "Software\\Python\\PythonCore", Regor.KEY_READ); +- if (key != null) { +- try { +- @SuppressWarnings("rawtypes") +- List l = regor.listKeys(key); +- for (Object o : l) { +- Key openKey = regor.openKey(key, (String) o + "\\InstallPath", Regor.KEY_READ); +- if (openKey != null) { +- try { +- byte buf[] = regor.readValue(openKey, ""); +- if (buf != null) { +- String parseValue = Regor.parseValue(buf); +- // Ok, this should be the directory +- // where it's installed, try to find +- // a 'python.exe' there... +- File file = new File(parseValue, "python.exe"); +- if (file.isFile()) { +- foundVersions.add(file.toString()); +- } +- } +- } finally { +- regor.closeKey(openKey); +- } +- } +- } +- } finally { +- regor.closeKey(key); +- } +- } +- } +- +- } catch (Throwable e) { +- Log.log(e); +- } + if (foundVersions.size() > 0) { + return AlreadyInstalledInterpreterProvider.create("python", + foundVersions.toArray(new String[foundVersions.size()])); +--- plugins/org.python.pydev/build.properties.orig 2014-07-31 14:13:39.439344020 +0100 ++++ plugins/org.python.pydev/build.properties 2014-07-31 14:13:57.866059652 +0100 +@@ -8,10 +8,8 @@ + about.mappings,\ + pydev.png,\ + plugin.properties,\ +- LICENSE.txt,\ +- libs/,\ +- libs/WinRegistry-4.5.jar,\ +- css/ ++ LICENSE.txt,\ ++ css/ + jars.compile.order = pydev.jar + source.pydev.jar = src/,\ + src_navigator/,\ diff --git a/SOURCES/system-jython-interpreter.patch b/SOURCES/system-jython-interpreter.patch new file mode 100644 index 0000000..bb48751 --- /dev/null +++ b/SOURCES/system-jython-interpreter.patch @@ -0,0 +1,57 @@ +diff --git a/plugins/org.python.pydev/src/org/python/pydev/runners/SimpleJythonRunner.java b/plugins/org.python.pydev/src/org/python/pydev/runners/SimpleJythonRunner.java +index 1b3d84c..3347fe4 100644 +--- a/plugins/org.python.pydev/src/org/python/pydev/runners/SimpleJythonRunner.java ++++ b/plugins/org.python.pydev/src/org/python/pydev/runners/SimpleJythonRunner.java +@@ -74,19 +74,24 @@ public class SimpleJythonRunner extends SimpleRunner { + String javaLoc = javaExecutable.getCanonicalPath(); + String[] s; + +- //In Jython 2.5b0, if we don't set python.home, it won't be able to calculate the correct PYTHONPATH +- //(see http://bugs.jython.org/issue1214 ) +- +- String pythonHome = new File(jythonJar).getParent().toString(); +- +- if (additionalPythonpath != null) { +- jythonJar += SimpleRunner.getPythonPathSeparator(); +- jythonJar += additionalPythonpath; +- s = new String[] { javaLoc, "-Dpython.path=" + additionalPythonpath, "-Dpython.home=" + pythonHome, +- "-classpath", jythonJar, "org.python.util.jython", script }; ++ if (new File(jythonJar).getName().equals("jython")) { ++ //The system jython can simply be invoked directly ++ s = new String[] { jythonJar, script }; + } else { +- s = new String[] { javaLoc, "-Dpython.home=" + pythonHome, "-classpath", jythonJar, +- "org.python.util.jython", script }; ++ //In Jython 2.5b0, if we don't set python.home, it won't be able to calculate the correct PYTHONPATH ++ //(see http://bugs.jython.org/issue1214 ) ++ ++ String pythonHome = new File(jythonJar).getParent().toString(); ++ ++ if (additionalPythonpath != null) { ++ jythonJar += SimpleRunner.getPythonPathSeparator(); ++ jythonJar += additionalPythonpath; ++ s = new String[] { javaLoc, "-Dpython.path=" + additionalPythonpath, "-Dpython.home=" + pythonHome, ++ "-classpath", jythonJar, "org.python.util.jython", script }; ++ } else { ++ s = new String[] { javaLoc, "-Dpython.home=" + pythonHome, "-classpath", jythonJar, ++ "org.python.util.jython", script }; ++ } + } + + if (args != null && args.length > 0) { +diff --git a/plugins/org.python.pydev/src/org/python/pydev/ui/pythonpathconf/InterpreterInfo.java b/plugins/org.python.pydev/src/org/python/pydev/ui/pythonpathconf/InterpreterInfo.java +index cd9d921..6ab5ccc 100644 +--- a/plugins/org.python.pydev/src/org/python/pydev/ui/pythonpathconf/InterpreterInfo.java ++++ b/plugins/org.python.pydev/src/org/python/pydev/ui/pythonpathconf/InterpreterInfo.java +@@ -1436,9 +1436,9 @@ public class InterpreterInfo implements IInterpreterInfo { + */ + public static boolean isJythonExecutable(String executable) { + if (executable.endsWith("\"")) { +- return executable.endsWith(".jar\""); ++ return executable.endsWith(".jar\"") || executable.endsWith("jython\""); + } +- return executable.endsWith(".jar"); ++ return executable.endsWith(".jar") || executable.endsWith("jython"); + } + + /** diff --git a/SPECS/eclipse-pydev.spec b/SPECS/eclipse-pydev.spec new file mode 100644 index 0000000..138f6af --- /dev/null +++ b/SPECS/eclipse-pydev.spec @@ -0,0 +1,284 @@ +%{?scl:%scl_package eclipse-pydev} +%{!?scl:%global pkg_name %{name}} +%{?java_common_find_provides_and_requires} + +# Turn off the brp-python-bytecompile script +%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-scl-python-bytecompile[[:space:]].*$!!g') + +Epoch: 1 +Summary: Eclipse Python development plug-in +Name: %{?scl_prefix}eclipse-pydev +Version: 4.1.0 +Release: 2.5%{?dist} +License: EPL +URL: http://pydev.org + +Source0: https://github.com/fabioz/Pydev/archive/pydev_4_1_0.tar.gz + +# Remove windows specific code that manipulates the windows registry +Patch0: remove-winregistry.patch +Patch1: remove-iInfo-error.patch + +# Allow system jython interpreter to be configured in preferences +Patch2: system-jython-interpreter.patch + +# Fix native name +Patch3: native-name.patch + +# Remove fund-raising dialog +Patch4: no-fund-raising-screen.patch + +# Fix for failing to kill django processes +Patch5: fix-process-killing.patch + +Requires: %{?scl_prefix}eclipse-platform +Requires: python +Requires: %{?scl_prefix_java_common}apache-commons-logging +Requires: %{?scl_prefix}snakeyaml +Requires: %{?scl_prefix_java_common}ws-commons-util +Requires: %{?scl_prefix_java_common}xmlrpc-common +Requires: %{?scl_prefix_java_common}xmlrpc-client +Requires: %{?scl_prefix_java_common}xmlrpc-server +Requires: %{?scl_prefix}jython >= 2.7 +BuildRequires: %{?scl_prefix}tycho >= 0.22.0-15 +BuildRequires: %{?scl_prefix}tycho-extras +BuildRequires: %{?scl_prefix}eclipse-p2-discovery +BuildRequires: %{?scl_prefix}eclipse-mylyn-context-team >= 3.5.0 +BuildRequires: %{?scl_prefix}eclipse-mylyn-ide >= 3.5.0 +BuildRequires: %{?scl_prefix_java_common}apache-commons-logging +BuildRequires: %{?scl_prefix}snakeyaml +BuildRequires: %{?scl_prefix_java_common}ws-commons-util +BuildRequires: %{?scl_prefix_java_common}xmlrpc-common +BuildRequires: %{?scl_prefix_java_common}xmlrpc-client +BuildRequires: %{?scl_prefix_java_common}xmlrpc-server +BuildRequires: %{?scl_prefix}jython >= 2.7 + +%description +The eclipse-pydev package contains Eclipse plugins for +Python development. + +%package mylyn +Summary: Pydev Mylyn Focused UI +Requires: %{?scl_prefix}eclipse-mylyn-context-team >= 3.5.0 +Requires: %{?scl_prefix}eclipse-mylyn-ide >= 3.5.0 +Requires: %{name} = %{epoch}:%{version}-%{release} + +%description mylyn +Mylyn Task-Focused UI extensions for Pydev. + +%prep +%{?scl:scl enable %{scl_maven} %{scl} - << "EOF"} +%setup -q -n Pydev-pydev_4_1_0 +%patch0 +%patch1 -p1 +%patch2 -p1 +%patch3 +%patch4 +%patch5 -p1 + +%mvn_package "::pom:" __noinstall +%mvn_package ":*.mylyn" mylyn +%mvn_package ":*.mylyn.*" mylyn +%mvn_package ":*" core + +find -name 'Copy\ of\ opentype.gif' -exec rm -f '{}' \; + +# remove bundled ctypes (used only under cygwin) +rm -r plugins/org.python.pydev/pysrc/third_party/wrapped_for_pydev + +# remove pre-built artifacts +find -name '*.class' -delete +find -name '*.jar' -delete +find -name '*.dll' -delete +find -name '*.dylib' -delete +find -name '*.so' -delete +rm -rf plugins/org.python.pydev.jython/Lib +touch plugins/org.python.pydev.jython/Lib + +# Link to system jython +# we must include all of jython's runtime dependencies on the classpath +pushd plugins/org.python.pydev.jython +build-jar-repository -s -p . \ + jython/jython guava jnr-constants jnr-ffi jnr-netdb jnr-posix jffi jline/jline jansi/jansi antlr32/antlr-runtime \ + objectweb-asm5/asm-5 objectweb-asm5/asm-commons-5 objectweb-asm5/asm-util-5 commons-compress icu4j \ + netty/netty-buffer netty/netty-codec netty/netty-common netty/netty-handler netty/netty-transport +for j in $(ls *.jar) ; do + if [ -z "$js" ] ; then js="$j"; else js="${js},$j"; fi +done +sed -i -e 's/\r//' -e "s/^ jython\.jar/ $js/" META-INF/MANIFEST.MF +sed -i -e "s/ jython\.jar/ $js/" build.properties +popd + +# links to other system jars +ln -sf %{_javadir_java_common}/commons-logging.jar \ + plugins/org.python.pydev.shared_interactive_console/commons-logging-1.1.1.jar + +ln -sf %{_javadir_java_common}/ws-commons-util.jar \ + plugins/org.python.pydev.shared_interactive_console/ws-commons-util-1.0.2.jar + +ln -sf %{_javadir_java_common}/xmlrpc-client.jar \ + plugins/org.python.pydev.shared_interactive_console/xmlrpc-client-3.1.3.jar + +ln -sf %{_javadir_java_common}/xmlrpc-common.jar \ + plugins/org.python.pydev.shared_interactive_console/xmlrpc-common-3.1.3.jar + +ln -sf %{_javadir_java_common}/xmlrpc-server.jar \ + plugins/org.python.pydev.shared_interactive_console/xmlrpc-server-3.1.3.jar + +ln -sf %{_javadir_maven}/snakeyaml.jar \ + plugins/org.python.pydev.shared_core/libs/snakeyaml-1.11.jar + +# Fix encodings +iconv -f CP1252 -t UTF-8 LICENSE.txt > LICENSE.txt.utf +mv LICENSE.txt.utf LICENSE.txt +%{?scl:EOF} + + +%build +%{?scl:scl enable %{scl_maven} %{scl} - << "EOF"} +# build native part first +pushd plugins/org.python.pydev/pysrc/pydevd_attach_to_process/linux &>/dev/null +g++ %{optflags} -shared -o attach_linux.so -fPIC -nostartfiles attach_linux.c +mv attach_linux.so ../attach_linux.so +popd &>/dev/null + +# build everything else +%mvn_build -j -f -- -DforceContextQualifier=$(date +%Y%m%d%H00) +%{?scl:EOF} + + +%install +%{?scl:scl enable %{scl_maven} %{scl} - << "EOF"} +%mvn_install + +# fix perms on native lib +find ${RPM_BUILD_ROOT} -name attach_linux.so -exec chmod +x {} \; + +# deal with linked deps +installDir=${RPM_BUILD_ROOT}/%{_libdir}/eclipse/dropins/pydev-core +pushd $installDir/eclipse/plugins + +file=`find . -name commons-logging-1.1.1.jar` +rm $file +ln -sf %{_javadir_java_common}/commons-logging.jar $file + +file=`find . -name ws-commons-util-1.0.2.jar` +rm $file +ln -sf %{_javadir_java_common}/ws-commons-util.jar $file + +file=`find . -name xmlrpc-client-3.1.3.jar` +rm $file +ln -sf %{_javadir_java_common}/xmlrpc-client.jar $file + +file=`find . -name xmlrpc-common-3.1.3.jar` +rm $file +ln -sf %{_javadir_java_common}/xmlrpc-common.jar $file + +file=`find . -name xmlrpc-server-3.1.3.jar` +rm $file +ln -sf %{_javadir_java_common}/xmlrpc-server.jar $file + +file=`find . -name snakeyaml-1.11.jar` +rm $file +ln -sf %{_javadir}/snakeyaml.jar $file + +popd + +# Symlink system jython and libs +pushd $installDir/eclipse/plugins/org.python.pydev.jython_* +rm -rf Lib +ln -sf %{_datadir}/jython/Lib +build-jar-repository -s -p . \ + jython/jython guava jnr-constants jnr-ffi jnr-netdb jnr-posix jffi jline/jline jansi/jansi antlr32/antlr-runtime \ + objectweb-asm5/asm-5 objectweb-asm5/asm-commons-5 objectweb-asm5/asm-util-5 commons-compress icu4j \ + netty/netty-buffer netty/netty-codec netty/netty-common netty/netty-handler netty/netty-transport +popd + +# convert .py$ files from mode 0644 to mode 0755 +sixFourFourfiles=$(find ${RPM_BUILD_ROOT} -name '*\.py' -perm 0644 | xargs) +if [ ${sixFourFourfiles:-0} -ne 0 ]; then + chmod 0755 ${sixFourFourfiles} +fi +%{?scl:EOF} + + +%files -f .mfiles-core +%doc LICENSE.txt README.txt + +%files mylyn -f .mfiles-mylyn +%doc LICENSE.txt + +%changelog +* Wed Oct 21 2015 Mat Booth - 1:4.1.0-2.5 +- Fix for failing to kill django processes +- rhbz#1264446 + +* Wed Aug 12 2015 Mat Booth - 1:4.1.0-2.4 +- Add all necessary symlinks for jython +- Don't bother users with upstream project fund-raising screen +- rhbz#1251408 + +* Fri Jul 17 2015 Mat Booth - 1:4.1.0-2.3 +- Fix perms on native lib to fix binary stripping +- Generate debuginfo + +* Thu Jul 09 2015 Mat Booth - 1:4.1.0-2.2 +- Avoid dependencies on packages from maven30 collection + +* Wed Jul 08 2015 Mat Booth - 1:4.1.0-2.1 +- Import latest from Fedora + +* Wed Jun 17 2015 Fedora Release Engineering - 1:4.1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed May 27 2015 Alexander Kurtakov 1:4.1.0-1 +- Update to upstream 4.1.0 release. + +* Wed May 13 2015 Alexander Kurtakov 1:4.0.0-2 +- Make mylyn subpackage archful as timestamps make diff and fail builds. + +* Wed Apr 15 2015 Mat Booth - 1:4.0.0-1 +- Update to latest upstream release +- No longer necessary to symlink optparse +- Now archful package due to having a native component + +* Mon Dec 8 2014 Alexander Kurtakov 1:3.7.1-2 +- Build with xmvn. + +* Thu Sep 18 2014 Alexander Kurtakov 1:3.7.1-1 +- Update to upstream 3.7.1. + +* Thu Jul 31 2014 Mat Booth - 1:3.6.0-1 +- Update to latest upstream release +- Require jython 2.7 +- Remove no longer needed patches + +* Sat Jun 07 2014 Fedora Release Engineering - 1:3.5.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Jun 04 2014 Mat Booth - 1:3.5.0-3 +- Patch to allow system jython interpreter to be configured in preferences + +* Mon Jun 02 2014 Mat Booth - 1:3.5.0-2 +- Patch to build with latest version of jython +- Install license files +- No longer need to package a portion of jython's lib dir + +* Thu May 29 2014 Alexander Kurtakov 1:3.5.0-1 +- Update to 3.5.0. + +* Thu Mar 20 2014 Alexander Kurtakov 1:3.4.1-1 +- Update to 3.4.1. + +* Wed Feb 12 2014 Alexander Kurtakov 1:3.3.3-1 +- Update to 3.3.3. + +* Mon Dec 30 2013 Alexander Kurtakov 1:3.2.0-1 +- Update to 3.2.0. + +* Fri Dec 13 2013 Alexander Kurtakov 1:3.1.0-1 +- Update to 3.1.0. + +* Mon Nov 11 2013 Alexander Kurtakov 1:3.0-1 +- Update to 3.0. +- Drop old changelog now that we move to tycho builds.