whateverable
whateverable copied to clipboard
The state of Whateverable (2023 server migration)
As I'm moving to the new server, I'm trying to dockerize everything that I had and migrate it. Whateverable is one of the projects. Note that for now I'll keep hosting it (I think I've been doing a good job at that throughout the years), but once dockerized, the bots can be moved to Raku infrastructure if needed.
The work turned out to be more difficult than I expected do to several regressions or changes in Rakudo that resulted in bitrot. This is a ticket to document the progress and the obstacles.
- [x] ⚠️ Bots work in general, but there are issues with GLIBC
- [x] Bisectable – seems to work
- [x] Committable – seems to work
- [ ] Benchable
- [x] Evalable
- [ ] Statisfiable
- [x] Unicodable – runs and works fine, or so it seems. Haven't tested all the functionality yet.
- [ ] Bloatable
- [ ] Quotable
- [ ] Greppable
- [ ] Coverable
- [x] Releasable
- [ ] Nativecallable
- [x] Squashable – 🪦 This bot has been offline for quite some time, for the time being it's not going to be revived. It was used for squashathons, but as far as I know it's no longer a thing
- [ ] Reportable
- [x] Notable – needed a workaround for “Invocant of method 'match' must be a type object of type 'Any'”
- [x] Shareable
- [x] Undersightable – 🪦 This bot has been offline for quite some time, for the time being it's not going to be revived.
- [x] Tellable – needed a workaround for “Invocant of method 'match' must be a type object of type 'Any'”
- [ ] Sourceable – needed a workaround for “Invocant of method 'match' must be a type object of type 'Any'”
- [x] Linkable – Seems to work
- [x] Buildable – this is a new bot that is probably needed to keep running the build script and to expose the status.
First Rakudo regression:
- good=2023.02
- bad=2023.04
- Reproduction: https://gist.github.com/AlexDaniel/5c25e329cf6ac9470a25adc5695801de
- Reproduced successfully by
coleman
on IRC: https://irclogs.raku.org/raku/2023-09-24.html#23:27
Basically, trying to use Pastebin::Gist results in 100% CPU usage.
Because of this bug I'm forced to use Rakudo star 2023.02 which is unfortunately stuck on Debian bullseye. This doesn't allow me to use the latest GLIBC version… and I have a bunch of builds that were built using the new GLIBC. Current plan is to ignore the rakudo regression and just rebuild all of the affected builds.
Rakudobug: https://github.com/rakudo/rakudo/issues/5463
Notable (and probably other bots) are unable to run because of this issue:
Invocant of method 'match' must be a type object of type 'Any', not an
object instance of type 'IRC::Client::Message::Privmsg::Channel'. Did
you forget a 'multi'?
- https://irclogs.raku.org/raku/2023-09-27.html#12:54-0001
- To me it looks like a Rakudo regression. Why would something be something that is other than “Any”?
Rakudobug: https://github.com/rakudo/rakudo/issues/5464
OK, so I found this branch:
- https://github.com/Raku/whateverable/tree/buildable-rework
- Which has this amazing commit: https://github.com/Raku/whateverable/commit/10a08cb5056abd9d90dca42b4ea50898d12d25ea
Interestingly, all those changes are actually needed (or so I think) to kick off the build process in a service. I think the code there is finished but is simply not tested yet, so that's what I'll do.
All recent changes were pushed to the main Raku/whateverable repo. The secrets are set up and now all commits to this repo will trigger a redeploy of the bots. So far so good, now I just need to bring the buildable-rework branch up to date and make it work.
Buildable is up and running, it'll take a few days to rebuild the builds with the older GLIBC. Otherwise, everything looks good now! I haven't deleted the wrong builds yet, will do that soon.
I have removed all builds that required a newer GLIBC. That was about 2000 builds. They'll be rebuilt automatically. Currently, there is a new build per roughly 6 minutes, so that's like 240 per day. In 10+ days everything will be back to normal. That being said, all bots are already functional, it's just that there are some gaps if you decide to use bisectable.