www/jetty8 comes with a control script (/usr/local/sbin/jettyctl) written in python. The package Makefile does not seem to depend on a specific version of python, but said control script makes use of python2 syntax. When trying to start jetty, I get: Starting jetty. File "/usr/local/sbin/jettyctl", line 83 executable = stat.S_IMODE(finfo) & 0111 ^ SyntaxError: invalid token /usr/local/etc/rc.d/jetty: WARNING: failed to start jetty I do not know much python, but in python3 leading zeros are no longer accepted, so I guess an octal bitmask for file permissions would need to be written as 0o0111. However, while doing so will fix the particular error message, the script still does not work. Upstream, there is a shell script for starting and stopping jetty. Maybe that would be a better approach? If, as may well be, this control script is the only reason why jetty needs to pull in python as a dependency, using a shell script instead sounds like a reasonable thing to do?
*** Bug 242015 has been marked as a duplicate of this bug. ***
- Is jettyctl FreeBSD authored/provided, or upstream provided? - Does upstream claim/document support for Python 3? - Can we find references that say only Python 2.x is currently supported? - Are there any upstream bug reports, PR's or commits that add Python 3 support?
(In reply to Kubilay Kocak from comment #2) jettyctl is provided by the FreeBSD package as www/jetty8/files/jettyctl.in. I could not find any reference to jettyctl in the upstream tarball: https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/8.1.15.v20140411/jetty-distribution-8.1.15.v20140411.tar.gz (nor does the tarball contain the string 'python' anywhere :D) Indeed, jetty9 no longer has a python based script in FreeBSD either, but patches the upstream-provided jetty.sh. I will try to adapt that and see if I can come up with a patch to the package to make it work the same way as jetty9.
Created attachment 209203 [details] proposed patch: use the upstream start/stop script I am unsure if there are other things in the Makefile that should be adjusted, but with this patch, jetty8 will use the upstream start/stop script. poudriere testport worked without problems (tested on a 12.1-RELEASE jail), as did starting and stopping jetty.
Hi Jimmy, Any progress on this one?
Is removing USES=python correct if it needs Python at runtime for the control script? Does it only support a particular subset of Python versions? Does USES=python need a :<version-spec>? If it's only required at runtime, ',run' may be required. However, if the script produces .pyc/pyo files upon first invocation, the files should be run through Pythons standard 'compileall' function to produce and package these, otherwise the resulting files will be orphaned on the system on deinstall. Note also that any scripts invoking Python should invoke (shebang) using the specific version of Python the port has been built with, or uses, using either: - PYTHON_CMD, or - LOCALBASE/sbin/foo-{PYTHON_VER} (with an additional LOCALBASE/sbin/foo version pointing to it). See USE_PYTHON=concurrent We should also match upstream's documentation with respect to what the name of the script is (with or without .sh extension)
No activity in over two years, EOL upstream for almost ten years, and this port expired today.