arran4 n00b
![n00b n00b](/images/ranks/rank_rect_0.gif)
![](images/avatars/25071891566beefd2ae2be.jpg)
Joined: 19 Sep 2003 Posts: 8 Location: Melbourne, Australia
|
Posted: Thu Aug 15, 2024 6:49 am Post subject: Meta generation tool for ebuilds |
|
|
Not sure if this is the right place to put it. But while job seeing and mostly sleep deprived I ended up writing
https://github.com/arran4/arrans_overlay_workflow_builder
Don't worry this does NOT use AI.
Background:
I was writing GitHub Actions to detect new versions of AppImages on various GitHub repositories. However I kept on making mistakes when writing the scripts, for trivial things. Typos, not changing the correct detail etc.
So I started writing a tool which would take a configuration like this:
Code: |
Type Github AppImage Release
GithubProjectUrl https://github.com/anyproto/anytype-ts
Category app-text
EbuildName anytype-ts-appimage
Description Official Anytype client for MacOS, Linux, and Windows
Workaround Semantic Version Prerelease Hack 1
Homepage https://anytype.io
License Other
ProgramName Anytype
DesktopFile anytype.desktop
Icons hicolor-apps root
Dependencies sys-libs/glibc sys-libs/zlib
Binary amd64=>Anytype-${VERSION}.AppImage > Anytype.AppImage
|
And output the script workflow:
https://github.com/arran4/arrans_overlay/blob/main/.github/workflows/app-text-anytype-ts-appimage-update.yaml
Which then outputs the ebuilds:
https://github.com/arran4/arrans_overlay/tree/main/app-text/anytype-ts-appimage
(I need to figure out clean up logic too it's getting a bit long...)
Having achieved that, I ended up going a step further, and writing a tool that given the url:
https://github.com/anyproto/anytype-ts
Would produce the configuration above.
I then did the same but for any ordinary executable, but mostly in for cases which match a goreleaser project, such as:
- The project is released on github releases
- The project uses semantic versioning
- The project has an elf executable
Which generates the config:
Code: |
Type Github Binary Release
GithubProjectUrl https://github.com/gohugoio/hugo
EbuildName hugo-bin
Category www-apps
Description The world’s fastest framework for building websites.
Homepage https://gohugo.io
License Apache License 2.0
Workaround Programs as Alternatives => amd64:extended arm64:extended
Binary amd64=>hugo_${VERSION}_linux-amd64.tar.gz > hugo > hugo
Binary arm=>hugo_${VERSION}_linux-arm.tar.gz > hugo > hugo
Binary arm64=>hugo_${VERSION}_linux-arm64.tar.gz > hugo > hugo
ProgramName extended
Dependencies sys-libs/glibc sys-devel/gcc sys-libs/glibc sys-devel/gcc sys-libs/glibc sys-devel/gcc
Binary amd64=>hugo_extended_${VERSION}_Linux-64bit.tar.gz > hugo > hugo
Binary arm64=>hugo_extended_${VERSION}_linux-arm64.tar.gz > hugo > hugo
|
Which was a fair bit harder. It also has very basic support for documents, manual pages, and shell completion.
This NOT intended for main use, rather just my own use. But feel free to use, and modify it as you see fit. -- At your own risk it has issues and limitations.
The goal was to take it to the point I needed it and no further. I am not sure I will do too much more active development on it, and I hopefully will have a job soon.
But interested in what people think, and if it's useful to anyone else?[/list] |
|