|Marked as misclassified
OS X is now failing in certain cases, namely yolk, because of a regression on #1112 For now, this may require patching setuptools for Jython itself, as was done earlier; see #2298
To reproduce (and this should be part of any release testing, as a smoke test):
1. Build an installer (in dist/jython-installer.jar):
$ ant all-jars # will emit warnings like crazy, mostly around doc tags
2. Run the installer. There are many ways to run this, and they should all be ideally tested. More info on possible installer options:
$ java -jar dist/jython-installer.jar --help
However, the CLI is the easiest way to do any testing - especially since the installer has been very stable, with only pip/setuptools integration being added to it in the last 10 or so years:
$ java -jar dist/jython-installer.jar -s -d ~/jython-2.7.1-test-RC1
Performing silent installation
Generating start scripts ...
Installing pip and setuptools
Installing collected packages: setuptools, pip
Successfully installed pip-9.0.1 setuptools-28.8.0
Congratulations! You successfully installed Jython 2.7.1rc1 to directory /Users/jbaker/jython-2.7.1-test-RC1.
3. OK, let's try it out. First, does pip work?
$ cd ~/jython-2.7.1-test-RC1/
jimbaker:jython-2.7.1-test-RC1 jbaker$ bin/pip install yolk
/Users/jbaker/jython-2.7.1-test-RC1/Lib/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:310: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#snimissingwarning.
Using cached yolk-0.4.3.tar.gz
Requirement already satisfied: setuptools in ./Lib/site-packages (from yolk)
Installing collected packages: yolk
Running setup.py install for yolk ... done
Successfully installed yolk-0.4.3
This SNI warning is due to the fact I'm running on Java 7; if you use Java 8, it goes away, and SNI is used (as in fact is tested in our regrtest).
4. Does setuptools work, in conjunction with yolk?
The reason I chose yolk is that it creates a executable in the bin directory for Jython:
$ ls -ls bin/yolk
8 -rwxr-xr-x 1 jbaker staff 397 Mar 13 16:31 bin/yolk
However, right now it's not working on OS X, because yolk is being interpreted as a **shell script**:
bin/yolk: line 3: __requires__: command not found
Version: ImageMagick 6.9.3-6 Q16 x86_64 2016-02-28 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2016 ImageMagick Studio LLC
... # most output elided but more of the same as the confusing text below!
By default, 'file' is written in the MIFF image format. To
specify a particular image format, precede the filename with an image
format name and a colon (i.e. ps:image) or specify the image type as
the filename suffix (i.e. image.ps). Specify 'file' as '-' for
standard input or output.
import: delegate library support not built-in `' (X11) @ error/import.c/ImportImageCommand/1297.
from: can't read /var/mail/pkg_resources
./yolk: line 9: syntax error near unexpected token `('
./yolk: line 9: ` sys.argv = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv)'
This bug is because OS X does not properly support recursive shebangs, as noted in #1112 (and also https://www.in-ulm.de/~mascheck/various/shebang/#interpreter-script). To fix, instead of a shebang like the following:
We need this:
With just this small change, yolk will now work:
$ bin/yolk --list
pip 9.0.1 has no metadata
setuptools 28.8.0 has no metadata
wsgiref - 0.1.2 - active development (/Users/jbaker/jython-2.7.1-test-RC1/Lib)
yolk - 0.4.3 - active
|2017-03-13 23:08:44||zyasoft||set||messageid: <firstname.lastname@example.org>|
|2017-03-13 23:08:44||zyasoft||link||issue2570 messages|