Re: Packaging pythonpy
Gianfranco, On 25 March 2016 at 19:07, Gianfranco Costamagnawrote: > up to your sponsor :) Tried one or two new approaches and it didn't worked. In the I've created a patch[1] changing "#!/usr/bin/env python2" to "#!/usr/bin/env python". This should work as long as Python 2 is the default interpreter, something which may change in the next years, but isn't a problem at least for Stretch. I'm all in for another options if someone doesn't like this patch. > swap Files: debian/* > and Files: * > > first the more comprehensive and later the less. > (lintian might be more specific) This is awesome. I would never figure out by myself that it was so simple to fix. :-) > I did fix the python apps in blah section with section "utils", and uploaded > on debomatic again. > Now that lintian warning is not there anymore. Yup. I've did that as well[2]. > (I won't download the package, I think I already answered the points) No problem. You answers were very helpful, as always. I've uploaded a new version of the package to mentors.d.n[3]. There are the following lintian messages now: * "newer-standards-version": which can be ignored, as mentors.d.n doesn't consider 3.9.7 as the current standard. * "debian-watch-file-is-missing" and "no-upstream-changelog": which will be fixed in the near future with upstream help regarding tagged releases. * "binary-without-manpage": which I'll be fixing, adding a manpage before submitting an RFS. Thank you very much, Gianfranco! Regards, Tiago. [1]: https://github.com/myhro/deb-pythonpy/commit/5450656 [2]: https://github.com/myhro/deb-pythonpy/commit/0e2d987 [3]: http://mentors.debian.net/package/pythonpy -- Tiago "Myhro" Ilieve Blog: https://blog.myhro.info/ GitHub: https://github.com/myhro LinkedIn: https://br.linkedin.com/in/myhro Montes Claros - MG, Brasil
Re: Packaging pythonpy
Hi, >I really appreciate your effort in trying to package it yourself, but >you didn't solved the main problem, which is the >"python-script-but-no-python-dep". indeed, control file line two. it is an application, so choose some Section from there https://qa.debian.org/developer.php?login=python-apps-team%40lists.alioth.debian.org Section: python is for libraries (e.g. called python-foo or python3-foo) >The "dh_auto_install" override is used to place it in>"/usr/share/pythonpy" >which is the proper place for Python >*applications*[1]. Without it, it goes to the place where *libraries* >should be located. ok >The "remove_entry_points_scripts.patch" avoids the creation of >py{2,2.7} binaries that aren't needed. Without it and removing the >override for "dh_fixperms", the package becomes useless. There's no >way to call the "py" command, as its main script doesn't have >execution permissions. ok, but why some of them have the +x set? http://debomatic-amd64.debian.net/distribution#unstable/pythonpy/0.4.4-1/contents I wouls suggest patching the setup file to perform correctly instead of overriding stuff. >Looks like it would be way easier to fix the entry point scripts to >created a binary named "py", avoiding just the other ones. We can also >ignore the override that changes the target folder, but doing this >feels wrong, is like we are ignoring the best practices for packaging >Python applications. That's why I'm wrecking my head with this issue, >removing every file that would be useless, instead of following the >easiest path. up to your sponsor :) >About the lintian output: >* "unused-file-paragraph-in-dep5-copyright": this info doesn't appear >even when I run lintian with the same arguments on my machine. This is >strange, as I'm running "v2.5.42.1" from sid and debomatic-amd64.d.n >is using "v2.5.42.1~bpo8+1", which should be the same version. Do you >know how can I do this? swap Files: debian/* and Files: * first the more comprehensive and later the less. (lintian might be more specific) >* "debian-watch-file-is-missing": this is right. I've asked[2]>upstream to tag >every release on GitHub, so we can fetch information >about new versions from there. >* "application-in-library-section": fixed[3]. >* "no-upstream-changelog": the upstream added a changelog file in the >last version (0.4.9, which I have packaged this afternoon), but it >doesn't comes with the tarball available in PyPI. This will be solved >when the releases are tagged and we grab them from GitHub. >* "package-installs-into-obsolete-dir": fixed using dh_bash-completion[4]. > >I've uploaded the last (0.4.9-1) package version to mentors.d.n[5]. I did fix the python apps in blah section with section "utils", and uploaded on debomatic again. Now that lintian warning is not there anymore. (I won't download the package, I think I already answered the points) cheers, G.
Re: Packaging pythonpy
Hi Gianfranco, On 25 March 2016 at 16:21, Gianfranco Costamagnawrote: > http://debomatic-amd64.debian.net/distribution#unstable/pythonpy/0.4.4-1/lintian > please dget it from there and start again :) > > I fixed a lot of issues, and many more are there now! I really appreciate your effort in trying to package it yourself, but you didn't solved the main problem, which is the "python-script-but-no-python-dep". The "dh_auto_install" override is used to place it in "/usr/share/pythonpy" which is the proper place for Python *applications*[1]. Without it, it goes to the place where *libraries* should be located. The "remove_entry_points_scripts.patch" avoids the creation of py{2,2.7} binaries that aren't needed. Without it and removing the override for "dh_fixperms", the package becomes useless. There's no way to call the "py" command, as its main script doesn't have execution permissions. Looks like it would be way easier to fix the entry point scripts to created a binary named "py", avoiding just the other ones. We can also ignore the override that changes the target folder, but doing this feels wrong, is like we are ignoring the best practices for packaging Python applications. That's why I'm wrecking my head with this issue, removing every file that would be useless, instead of following the easiest path. About the lintian output: * "unused-file-paragraph-in-dep5-copyright": this info doesn't appear even when I run lintian with the same arguments on my machine. This is strange, as I'm running "v2.5.42.1" from sid and debomatic-amd64.d.n is using "v2.5.42.1~bpo8+1", which should be the same version. Do you know how can I do this? * "debian-watch-file-is-missing": this is right. I've asked[2] upstream to tag every release on GitHub, so we can fetch information about new versions from there. * "application-in-library-section": fixed[3]. * "no-upstream-changelog": the upstream added a changelog file in the last version (0.4.9, which I have packaged this afternoon), but it doesn't comes with the tarball available in PyPI. This will be solved when the releases are tagged and we grab them from GitHub. * "package-installs-into-obsolete-dir": fixed using dh_bash-completion[4]. I've uploaded the last (0.4.9-1) package version to mentors.d.n[5]. Thanks, Tiago. [1]: https://wiki.debian.org/Python/Packaging#Example_2:_Python_application [2]: https://github.com/Russell91/pythonpy/issues/76 [3]: https://github.com/myhro/deb-pythonpy/commit/0e2d987 [4]: https://github.com/myhro/deb-pythonpy/commit/954e424 [5]: http://mentors.debian.net/package/pythonpy -- Tiago "Myhro" Ilieve Blog: https://blog.myhro.info/ GitHub: https://github.com/myhro LinkedIn: https://br.linkedin.com/in/myhro Montes Claros - MG, Brasil
Re: Packaging pythonpy
http://debomatic-amd64.debian.net/distribution#unstable/pythonpy/0.4.4-1/lintian please dget it from there and start again :) I fixed a lot of issues, and many more are there now! cheers, G. Il Venerdì 25 Marzo 2016 18:48, Tiago Ilieveha scritto: Hi Gianfranco, On 25 March 2016 at 06:25, Gianfranco Costamagna wrote: > > adding python to the dependencies? > do you have python to build dependencies, dh-python and python:Depends on the > binary package? This is what is strange. I've made the following changes: - diff --git a/debian/control b/debian/control index f0c1b3f..5205298 100644 --- a/debian/control +++ b/debian/control @@ -3,6 +3,7 @@ Section: python Priority: optional Maintainer: Tiago Ilieve Build-Depends: debhelper (>= 9), + dh-python, python (>= 2.7.3), python-setuptools (>= 0.6.24) Standards-Version: 3.9.7 @@ -13,7 +14,9 @@ Vcs-Browser: https://github.com/myhro/deb-pythonpy Package: pythonpy Architecture: all -Depends: ${misc:Depends}, ${python:Depends} +Depends: python (>= 2.7.3), + ${misc:Depends}, + ${python:Depends} Description: 'python -c', with tab completion and shorthand pythonpy is an utility that facilitates the usage of Python one-liners. The command 'py' evaluates a string consisting of any Python expression. It can do - But this didn't helped at all. The lintian.d.o page for "python-script-but-no-python-dep"[1] says: "Packages with Python scripts should depend on the package python. Those with scripts that specify a specific version of Python must depend on that version of Python (exactly). For example, if a script in the package uses #!/usr/bin/python, the package needs a dependency on python. If a script uses #!/usr/bin/python2.6, the package needs a dependency on python2.6. A dependency on python (>= 2.6) is not correct, since later versions of Python may not provide the /usr/bin/python2.6 binary." What is the "exactly" version of Python for a script which has "#!/usr/bin/env python2" as its shebang? > it is generated *during/after* the build, so the clean target won't work. > > a "package.pyremove" file might help, not sure > > codesearch.debian.net might help > egg path:pyremove$ > > https://codesearch.debian.net/results/egg%20path%3Apyremove%24/page_0 "pyremove" didn't worked, but in the same page that I found references to it[2], there's a suggestion to override "dh_python", which is what I did[3]. Thanks for the suggestion. :-) Regards, Tiago. [1]: https://lintian.debian.org/tags/python-script-but-no-python-dep.html [2]: https://wiki.debian.org/Python/LibraryStyleGuide#Python_3.3.2F3.4_unittest_fixers_for_2to3 [3]: https://github.com/myhro/deb-pythonpy/commit/68db18e -- Tiago "Myhro" Ilieve Blog: https://blog.myhro.info/ GitHub: https://github.com/myhro LinkedIn: https://br.linkedin.com/in/myhro Montes Claros - MG, Brasil
Re: Packaging pythonpy
Hi Gianfranco, On 25 March 2016 at 06:25, Gianfranco Costamagnawrote: > > adding python to the dependencies? > do you have python to build dependencies, dh-python and python:Depends on the > binary package? This is what is strange. I've made the following changes: - diff --git a/debian/control b/debian/control index f0c1b3f..5205298 100644 --- a/debian/control +++ b/debian/control @@ -3,6 +3,7 @@ Section: python Priority: optional Maintainer: Tiago Ilieve Build-Depends: debhelper (>= 9), + dh-python, python (>= 2.7.3), python-setuptools (>= 0.6.24) Standards-Version: 3.9.7 @@ -13,7 +14,9 @@ Vcs-Browser: https://github.com/myhro/deb-pythonpy Package: pythonpy Architecture: all -Depends: ${misc:Depends}, ${python:Depends} +Depends: python (>= 2.7.3), + ${misc:Depends}, + ${python:Depends} Description: 'python -c', with tab completion and shorthand pythonpy is an utility that facilitates the usage of Python one-liners. The command 'py' evaluates a string consisting of any Python expression. It can do - But this didn't helped at all. The lintian.d.o page for "python-script-but-no-python-dep"[1] says: "Packages with Python scripts should depend on the package python. Those with scripts that specify a specific version of Python must depend on that version of Python (exactly). For example, if a script in the package uses #!/usr/bin/python, the package needs a dependency on python. If a script uses #!/usr/bin/python2.6, the package needs a dependency on python2.6. A dependency on python (>= 2.6) is not correct, since later versions of Python may not provide the /usr/bin/python2.6 binary." What is the "exactly" version of Python for a script which has "#!/usr/bin/env python2" as its shebang? > it is generated *during/after* the build, so the clean target won't work. > > a "package.pyremove" file might help, not sure > > codesearch.debian.net might help > egg path:pyremove$ > > https://codesearch.debian.net/results/egg%20path%3Apyremove%24/page_0 "pyremove" didn't worked, but in the same page that I found references to it[2], there's a suggestion to override "dh_python", which is what I did[3]. Thanks for the suggestion. :-) Regards, Tiago. [1]: https://lintian.debian.org/tags/python-script-but-no-python-dep.html [2]: https://wiki.debian.org/Python/LibraryStyleGuide#Python_3.3.2F3.4_unittest_fixers_for_2to3 [3]: https://github.com/myhro/deb-pythonpy/commit/68db18e -- Tiago "Myhro" Ilieve Blog: https://blog.myhro.info/ GitHub: https://github.com/myhro LinkedIn: https://br.linkedin.com/in/myhro Montes Claros - MG, Brasil
Re: Packaging pythonpy
Hi Tiago, >* How to fix the "python-script-but-no-python-dep" lintian error? I've >tried with and without pybuild and the error still persists. adding python to the dependencies? do you have python to build dependencies, dh-python and python:Depends on the binary package? >* How to get rid of the ".egg-info/" folder that is being packaged?>Looks like >"debian/clean" rules aren't working. it is generated *during/after* the build, so the clean target won't work. a "package.pyremove" file might help, not sure codesearch.debian.net might help egg path:pyremove$ https://codesearch.debian.net/results/egg%20path%3Apyremove%24/page_0 cheers, G. There's a GitHub repository for the package[1]. I have intention on asking for a repository on collab-maint when the package is ready (I have write permissions to it). Regards, Tiago. [1]: https://github.com/myhro/deb-pythonpy -- Tiago "Myhro" Ilieve Blog: https://blog.myhro.info/ GitHub: https://github.com/myhro LinkedIn: https://br.linkedin.com/in/myhro Montes Claros - MG, Brasil
Re: Packaging pythonpy
Hi, Can someone please help me on this one? I'm pretty close to finish the initial packaging work. After fixing the following issues, it will be a matter of adding a manpage and filling a RFS. * How to fix the "python-script-but-no-python-dep" lintian error? I've tried with and without pybuild and the error still persists. * How to get rid of the ".egg-info/" folder that is being packaged? Looks like "debian/clean" rules aren't working. There's a GitHub repository for the package[1]. I have intention on asking for a repository on collab-maint when the package is ready (I have write permissions to it). Regards, Tiago. [1]: https://github.com/myhro/deb-pythonpy -- Tiago "Myhro" Ilieve Blog: https://blog.myhro.info/ GitHub: https://github.com/myhro LinkedIn: https://br.linkedin.com/in/myhro Montes Claros - MG, Brasil
Re: Packaging pythonpy
Hi Ben, On 10 March 2016 at 22:19, Ben Finneywrote: > Not by itself. You need to run something that will actually use that > substitution variable. > > By default you should be using Pybuild in new packages for Python code. > This will bring many benefits, including interpolate the substvars for > Python. Following the Pybuild wiki page[1], I've added "dh-python" as a build dependency and added the following to "debian/rules": diff --git a/debian/rules b/debian/rules index cc0781a..ae03e14 100755 --- a/debian/rules +++ b/debian/rules @@ -1,7 +1,10 @@ #!/usr/bin/make -f +export PYBUILD_NAME=pythonpy + %: - dh $@ --with python2 + dh $@ --with python2 --buildsystem=pybuild override_dh_auto_build: But that doesn't changed anything. The "python-script-but-no-python-dep" error still persists. Am I missing something here? > Still needed. Build dependencies are not affected by Debhelper. If the > build depends on ‘foo’, use of Debhelper won't take away the need to > declare “Build-Depends: foo”. Got it. > That directory is effectively auto-generated garbage for a Debian > package, it needs to be cleaned. > > Use the ‘clean’ target to remove files you don't need. Debhelper's > ‘dh_clean’ is useful here, see its man page. The Python FAQ wiki page has a section about "debian/clean" and Python eggs[2], which I was already following. What is strange is that the upstream tarball has five files in its ".egg-info/" folder: - dependency_links.txt - entry_points.txt - PKG-INFO - SOURCES.txt - top_level.txt But the built package has only three: - dependency_links.txt - PKG-INFO - top_level.txt So, it looks like the original files are being properly removed, but are created again later. Any idea about how to overcome this? Regards, Tiago. [1]: https://wiki.debian.org/Python/Pybuild [2]: https://wiki.debian.org/Python/FAQ#How_should_we_package_Python_eggs.3F -- Tiago "Myhro" Ilieve Blog: https://blog.myhro.info/ GitHub: https://github.com/myhro LinkedIn: https://br.linkedin.com/in/myhro Montes Claros - MG, Brasil
Re: Packaging pythonpy
Tiago Ilievewrites: > - A lintian error "python-script-but-no-python-dep" is being shown for > both binaries (symlinks in "/usr/bin"). The "${python:Depends}" in the > binary package shouldn't be sufficient to fix this? Not by itself. You need to run something that will actually use that substitution variable. By default you should be using Pybuild in new packages for Python code. This will bring many benefits, including interpolate the substvars for Python. > - Is it right to declare "python-setuptools" as a build dependency, or > this is supposed to be superseded by "dh-python" somehow? Still needed. Build dependencies are not affected by Debhelper. If the build depends on ‘foo’, use of Debhelper won't take away the need to declare “Build-Depends: foo”. > - The folder "/usr/share/pythonpy/pythonpy-0.4.4.egg-info/" should be > part of the binary package or should it be stripped? If it has to be > removed, how can I do this? That directory is effectively auto-generated garbage for a Debian package, it needs to be cleaned. Use the ‘clean’ target to remove files you don't need. Debhelper's ‘dh_clean’ is useful here, see its man page. -- \ “The Vatican is not a state.… a state must have people. There | `\are no Vaticanians.… No-one gets born in the Vatican except by | _o__)an unfortunate accident.” —Geoffrey Robertson, 2010-09-18 | Ben Finney