PackMan package building & publishing tools
Jeffrey Lee (213) 6048 posts |
In this other thread a few people have mentioned a desire for an easier way of building packages, which is suitable for use in scripted build systems (makefiles, etc.). Basically I agree with this, and have a few issues of my own that I’d like to share. My story: A couple of years ago I started to look at converting the various bits of software on my website to be packman packages. This resulted in an article moaning about the sorry state of the RiscPkg website (Sorry Alan!), and a couple of more constructive articles about the RISC OS-based package build system I built, and a C/C++ tool to help with publishing packages. There’s more work that I need to do on both the packaging tools and my website (so far it’s just SunEd and skopt which are packaged, and neither of them are available via PackMan’s default distributions yet), but since work on RISC OS generally takes priority over work on my website, I haven’t found the time for it yet. A summary of things:
So I don’t think we necessarily need someone to create a tool to build PackMan packages. But since building packages is a non-trivial task, it would be nice if there was a “PackMan/RiscPkg-approved” standard set of makefile rules / scripts available which people can easily integrate into their projects. And obviously I think things are a bit lacking with regard to publishing packages (but hopefully skopt will fix that, once it’s gained a few extra features). |
GavinWraith (26) 1563 posts |
Predictably, may I suggest Lua as an appropriate minimal packaging tool. Whether in RISC OS, Linux or Windows there are libraries for:
and manipulating databases using labelled records. |
Paolo Fabio Zaino (28) 1882 posts |
@ Jeffrey Lee Thanks for posting this and +1 on your summary of requests/requirements for the packaging tool :)
I actually have wrote few packaging automation tools in the past for companies I have worked for, so I have gained some experience on the matter. To reduce timing costs and optimize sustainability over time we shoul dhave a tool to build Packages I’m afraid… If we decide for a full Packaging automation tool then it should: PRE-REQUISITES - Determine (via template/playbook/recipe) build dependencies (for example requires static libraries, building environments etc.) BUILD PROCESS - Fetch the source code from versioning repositories (github/gitlab/svn/cvs etc.) (and be capable of specifying the tag we want to build (git can do that) and/or the branch we want to build (maintenance purposes) PACKAGING PROCESS - Interface (control) the packaging of the binary and separately the source Another relatively new way of doing this is via DevOps, which in the most simplistic form that will lead DevOps people to hate me for presenting it so (lol apologies for that to the DevOps community) means rebuild everything every time and make sure your build process and results (artifacts) are repeatable. Not sure if my experience on the matter is useful and/or required, but if so I can offer my help once I have finished to understand RiscPkg, which I am using by like 4 weeks (I left RISC OS scene when RisckPkg was being designed) and for which I already managed to create my own repos and packages and everything seems to be working fine although if the full automation is still missing. So I would define myself a newbie with RiscPkg. @ Gavin Wraith I personally have no issues with using Lua, which I kind of prefer given that I can expand it in C/C++ relatively easily. Generally what’s required from a programming language to be a good tool for Build/Packaging automation are: Lua is above and beyond the requirements above, so if it’s stable enough on RISC OS I think it’s a good choice |
Alan Buckley (167) 233 posts |
Jeffrey
No need to apologies to me, I don’t control the RiscPkg web site. I don’t think people realise that PackMan is just the client side of the Packaging system. I have little or no control over any of the websites that host packages. All PackMan knows about is where the index is and how to get it and what to do with the information it’s given.
I haven’t either and PackMan has nothing in it to handle them. With the prevalence of the internet now I’m thinking of adding a few control fields to the package to specify where the source is and how to get it. I’ll probably open a discussion on this at some stage in the future.
From the various discussion and your comments above I think this is a very good idea. I don’t have any real websites myself, so I can’t host it though I’m happy to look at/comment on anything that is created. |
Theo Markettos (89) 919 posts |
Paolo, the GCCSDK autobuilder supports almost everything you mention. It’s also hooked into a Jenkins CI (currently broken as I need some time to fix networking on the backends). Source URLs go in, packages come out. The one thing we don’t have is automated testing – something I looked into but didn’t make a huge amount of progress with). However it’s not a panacea for the kind of RISC OS programs that are written in BASIC or similar – there’s nothing to build, so why a complicated build system that you have to run on Linux? A relatively lightweight automatic package building framework as Jeffrey suggests would complement the autobuilder just fine. Jeffrey, the ROOL package index file just goes into the GCCSDK build-website scripts, that take a pile of .zips and make a website and index files. If anyone wants to rework that using JSON or whatever, using extra metadata and nice icons and stuff, that’s completely up for grabs. It is simply a very minimal bit of python on the server to fetch the packages into a tree, then run build-website. |
Paolo Fabio Zaino (28) 1882 posts |
Theo, thanks for the info and saw some of it on my copy of the GCCSDK, but that’s GCCSDK (that runs on Linux). I mean’t a build process to run on RISC OS itself and to use to package everything included ROOL DDE based programs, Lua, Python, BASIC and also a couple of new (old) programming languages/compilers I am porting (Prolog and Forth). But ok, not a biggie, if the community doesn’t want it I’ll just build it for myself. |
Steve Pampling (1551) 8172 posts |
I think you’ve assumed something there. The Linux based stuff people have done is basically utilising something on another platform which those specific people have experience of. “the community” is largely inexperienced with Linux and would probably appreciate something that runs on a platform they do know – RISC OS. |
Theo Markettos (89) 919 posts |
GCCSDK was originally conceived to work around several problems. The slowness of RISC OS hardware (in the RPC era compared with GHz multicore PCs), and the dependencies of existing libraries on build systems that wouldn’t run in RISC OS (bash, autoconf, etc). Both of those are still true to an extent. The other thing it buys is repeatable scriptable CI-able builds. A lot of RISC OS native builds are being hand driven and often difficult to build on anything but the author’s machine. It’s a good idea to improve the tooling for those builds, especially to remove some of the quirks so that software can be built natively simply and more repeatably. But until such time as the RO CLI is up to the point where it can handle projects of scale (elsewhere I regularly build LLVM with 3000 C++ source files – having 36 cores helps a lot!) there will still be a place for cross building. Making life easier for native builds helps in a complimentary way. |
Paolo Fabio Zaino (28) 1882 posts |
@ Steve Pampling
That is my understanding too. My answer was to Theo only, I simply didn’t want to start a debate between “full build process” vs “small tool” on RISC OS, to me everyone is entitled to their own opinion so I’ll just try to build what I personally need and share it with others via my PackMan sources, whoever will want to try to use it is welcome :) |
Paolo Fabio Zaino (28) 1882 posts |
@ Theo
Yes and it does solves a lot of problems as you’ve mentioned, for who have such a need. But as Steve mentioned there are also people that simply want to use only RISC OS, which is ok too IMHO and that also do not want to spend too much time playing with the technical details of RiscPkg. IMHO this doesn’t conflicts or reduces at all the value of the GCCSDK. |
David J. Ruck (33) 1636 posts |
Finding it takes longer to get the damn thing to build than make the changes you want, isn’t fun, and isn’t condusive to encouraging developers to retrun to RISC OS. |
Rick Murray (539) 13850 posts |
I’ve given up on trying to get WebJames built using the original (DDE) method. Never managed to track down whatever RegEx library it wanted (I found…two, I think, both have various errors about missing definitions and such). For my software, I try to make it build with nothing more than the DDE and my incarnation of DeskLib (which is available as both a fully installable thing and a library file), because I got sick (back around Y2K) of trying to track down obscure stuff that was required that “might be on hensa, or arcade, or maybe some random Geocities site that no longer exists…”. This is cyclical, GOTO previous paragraph.
You want pain, use the Arduino IDE to build something for the ESP32. On my PC (a 2.4GHz P4 with ~3GiB running XP), it takes longer to build my NetRadio code (what, about 10K of C?) than to build the entirety of RISC OS from scratch on a Pi2 using a class 10 SD card. There’s a lot of stuff I’d like to do, such as caching (at the moment it fetches 32 bytes and chucks them directly at the audio chip) which is maybe a 100th of a second of data (if that) which makes it sensitive to other WiFi users. If I hit refresh on this page, the audio would probably hiccup. [it’s not antivirus, I already disable that prior to building, the difference was negligible] |
David J. Ruck (33) 1636 posts |
It’s not the slowness of the build I’m complaining about, it’s your first point about finding all the stuff you need to build it, then recreating the highly customised development environment people have forgotten they have spent the last 30 years setting up. Not that my software will be any easier to build when I finally get around to open sourcing it. |