On Sat, January 9, 2016 2:29 pm, Sam Bull wrote: > I'm trying to package a Python app as a click package, what do I need > to make this work? > > Is it just a case of including the interpreter and libraries as part of > the package, and setting my .desktop file to 'Exec=./python myapp.py' > (assuming the Python binary to be in the root of the click package)? > > Also, what's the easiest way to get hold of the armhf binaries? I've > been testing by just copying the files out of /usr/bin/python3 and > /usr/lib/python3/ but obviously the binaries are amd64 on my laptop, so > how would I get these files for armhf? Maybe copy them out of a VM? > > And, is the installed app location read-only? Specifically, is it > better for me to include the __pycache__ in the package for > performance, or will it be able to create it's own when it is run? > (This saves about 6-7% of the package size)--
Hi Sam I don't know what is best practice, but I've packaged GemRB, which is a C and C++ program which calls python modules. I've taken the naive approach and dumped an almost entire python runtime into a subdirectory of the click and used a setup script ("run.sh") to set some environment variables to point to the runtime. If I knew exactly what python libraries were going to be called, I could probably trim the directory size substantially. I would have to rethink the structure if I was going to reformulate the .click as a "fat" package with AMD64 and i386 as well as the ARM binaries. To obtain the python files, I set up a full ARM chroot environment as per https://adoptingubuntu.wordpress.com/2015/07/10/creating-an-emulated-armhf-chroot-for-development/ and simply copied the python runtime files across. I've found it is quite difficult to install all the python runtime in a traditional click chroot as there are a lot of dependency issues between the amrhf and the amd64 packages, so a full chroot (as linked) has been easier. I'm sure there will be some way to trick apt-get into downloading the armhf files without going to such lengths, but I have the chroot anyway so it is a shame not to use it. My app is called "bg1" and is up on the store. Feel free to have a poke around: a click package can be expanded by running "dpkg-deb --extract packagename.click .". If you find a better way to package python, let me know. I'm sure my method could be improved. Good luck NMP -- Mailing list: https://launchpad.net/~ubuntu-phone Post to : ubuntu-phone@lists.launchpad.net Unsubscribe : https://launchpad.net/~ubuntu-phone More help : https://help.launchpad.net/ListHelp