mastodon.gamedev.place is one of the many independent Mastodon servers you can use to participate in the fediverse.
Mastodon server focused on game development and related topics.

Server stats:

5.2K
active users

#meson

0 posts0 participants0 posts today
Continued thread

And now the build of the Imake tool itself, not just its config files, can be done using #meson : gitlab.freedesktop.org/xorg/ut
(automake is still an option for now - will probably do one release that offers both build systems before removing the autotools support for the next one.)

GitLabadd meson build system (!13) · Merge requests · xorg / util / imake · GitLabAlso updates the gitlab CI config to test both build types and compare the generated output/installed files.

I basically spent this afternoon trying to get started with a #cplusplus project 😐 with #Meson 🙂 in #Windows 😓.

Meson is apparently the only C++ build tool that doesn't make you completely insane over time (seems considerably more fun than, say, CMake). It's apparently very nice *if* you use the libraries that already have wrapdb files - it'll just download the stuff and use it automagically. If there's NO premade wrap, however, you get subjected to the full pain and fury of trying to compile shit with Visual C++ toolchain.

So that's where I decided to spend 4+ hours today.

I got a hello world app that did compile! But didn't print hello world. Or anything for that matter. 🤨

THEN I noticed that *all* of the libraries I need actually have #Python bindings, and can just be pulled in via pip.

So I'm going with Python. IF I need to rewrite this thing AGAIN in native-compiled language, I'll probably use Rust, because - surprise! - this stuff is crated.

Continued thread

And then to finish off the week, I merged the changes into the upstream Imake config files repo to remove the autoconf build setup, leaving just the meson build files, since there's been only one bug filed about the meson builds in the two years since they were added.

So yes, if you're still using the ancient Imake build tool, you now need #meson to install the config files it needs (though mainly it's just copying them to the install directory).

gitlab.freedesktop.org/xorg/ut

GitLabremove autoconf build system (!19) · Merge requests · xorg / util / cf · GitLabIt's been two years since the meson build was added, and only one bug in it has been reported and fixed. Signed-off-by: Alan Coopersmith

#Git 2.48 is out[1].

#GitHub has a blog post with a few highlights:

github.blog/open-source/git/hi

* Faster SHA-1s without compromising security

* Bringing --remerge-diff to range-diff

* Memory leak-free tests in Git

* Introducing #Meson into Git

* now-deprecated features are now listed in Documentation/BreakingChanges.txt

* if the remote has a default branch but refs/remotes/origin/HEAD is missing locally, then a fetch will update it.

[1] lore.kernel.org/all/xmqqplku7c

The GitHub Blog · Highlights from Git 2.48The open source Git project just released Git 2.48. Here is GitHub's look at some of the most interesting features and changes introduced since last time.

🎄 Christmas is nearly here and that means it's time to join us for our December meet, hosted by #Nitor!

meetup.com/helpy-meetups/event

❄️ Creating Python modules and libraries using #Rust, by Akseli Lukkarila

❄️ #Meson: a Build system in and for Python, by Jussi Pakkanen

❄️ #JAX: A Python ecosystem for machine learning and numerical computation, by Nazaal Ibrahim @nazaal

❄️ And did someone say something about a quiz?

I suppose I could use my experience to give some #PEP517 build system recommendations.

For pure #Python packages:

1. #flit_core (pypi.org/project/flit-core/) — it's lightweight and simple, and has no dependencies (in modern Python versions, for older Pythons it vendors tomli).

2. #hatchling (pypi.org/project/hatchling/) — it's popular and quite powerful, but has many vendored dependencies and no stand-alone test suite (which makes it painful to maintain in #Gentoo).

For Python packages with C extensions: #meson-python (pypi.org/project/meson-python/) — which combines the power and correctness of meson build system with good very Python integration.

For Python packages with Rust extensions: #maturin (pypi.org/project/maturin/) — which is simply a good builder for precisely that kind of packages.

Now, I strongly discourage:

A. #setuptools — lots of vendored NIH dependencies (that can alternatively be unvendored for cyclic deps), lots of deprecations over time (we're still seeing tons of deprecation warnings all over the place), many unsolved bugs (e.g. parallel C extension builds are broken in a few ways), a lot of technical debt, and if all that wasn't enough, it's slow.

B. #poetry-core — a very tricky build system with lots of pitfalls (I've reported a lot of mistakes done when migrating to it).

C. Practically any other build system — writing new backends is trivial, so everyone and their grandmother must have one. And then, they often carry a lot of NIH dependencies (if you're reinventing a build system, you may reinvent everything else), lack experience and reintroduce the same bugs. And if that wasn't enough, packaging them in distributions is a lot of work for no real benefit to anyone.

PyPIflit-coreDistribution-building parts of Flit. See flit package for more information

W sumie mogę dać parę rekomendacji systemów budowania #PEP517.

Dla paczek w samym Pythonie:

1. #flit_core (pypi.org/project/flit-core/) — leciutki, prosty, i nie ma zależności (za wyjątkiem włączonego tomli dla starszych wersji Pythona).

2. #hatchling (pypi.org/project/hatchling/) — popularny, duża funkcjonalność, ale ma sporo włączonych zależności, a testy są zależne od reszty projektu hatch (przez co w #Gentoo się mocno z tym męczymy).

Dla paczek z rozszerzeniami w C: #meson-python (pypi.org/project/meson-python/) — połączenie szerokiej funkcjonalności i poprawności mesona z dobrą integracją z Pythonem.

Dla paczek z rozserzeniami w Ruście: #maturin (pypi.org/project/maturin/) — po prostu dobry system budowania dla tego typu paczek.

Stanowczo odradzam:

A. #setuptools — mnóstwo włączonych do projektu zależności, które wynajdują koło na nowo (które można zastąpić zewnętrznymi, które z kolei mają cykliczną zależność od setuptools), ciągłe wycofywanie starej funkcjonalności (której wciąż używa mnóstwo paczek), wiele nierozwiązanych problemów (np. równoległe budowanie plików C jest częściowo popsute), sporo długu technicznego, a jeżeli to nie wystarcza, to do tego strasznie powolny.

B. #poetry-core — trudny do poprawnego użycia system budowania, w którym bardzo łatwo popełnić błąd (a zgłaszałem już wiele pomyłek, które ludzie robili migrując swoje projekty).

C. Praktycznie każdy inny system budowania — pisanie nowych backendów stało się banalne, więc każdy musi mieć swój. Do tego często mają mnóstwo zależności, które wynajdują koło na nowo (jak już ktoś chce wynaleźć własny system budowania, to może równie dobrze pójść na całość i wynaleźć wszystko), brak doświadczenia i tym samym powtarzają te same błędy przeszłości. A jeżeli tego nie wystarczy, to dodawanie pod nie paczek do dystrybucji to tylko kupa roboty bez żadnej realnej korzyści.

PyPIflit-coreDistribution-building parts of Flit. See flit package for more information

#fvwm3 #autotools #meson #muon #buildsystem

Hey all! Please note that although fvwm3-1.1.1 is close to being relesaed, there's still a few more things left to do.

Before that point, I'd like to take the opportunity to mention that as of fvwm3-1.1.1 fvwm3 is officially using meson/muon as the buildsystem of choice.

Autotools has been a tremendous help over the years. Heck, fvwm as a project started long before autotools existed.

But as technology changes, newer buildsystem alternatives have come along making better use of hardware, compilation speeds, etc.

Indeed, because of fvwm's age -- there's a tonne of custom m4 macros -- some of which are to work around issues long since gone. With autotools recently deprecating many of these, maintaining this was becoming difficult. Hence the change.

A six-month window exists once fvwm3-1.1.1 is released for downstream packagers to make the move from autotools to meson.

The `main` branch in the fvwm3 repository contains both buildsystems. Please give meson some testing!

A huge thanks goes to Kanjie (Matt Jolly) -- without whom none of this work would have been possible. Thanks, Matt!

For more specific details. please see: github.com/fvwmorg/fvwm3/discu

Questions? I'm here...

GitHubBuildsystem: deprecating autotools for meson/muon · fvwmorg fvwm3 · Discussion #1068A Tale of Three Build Systems This is not a detailed technical explanation as to the rationale, but rather outlines some of the reasons why fvwm has officially moved away from autotools. Timeline F...

Już drugi tydzień, najnowsze wydanie #setuptools cierpi z powodu poważnego wyścigu. Jasne, to nie pierwszy tego typu problem w tej paczce, ale ten ma znaną przyczynę, z jasnym wyjaśnieniem, i powoduje regresję w wielu paczkach, które wcześniej działały.

A najbardziej absurdalne w tym jest to, że dla wielu ludzi wsparcie budowania rozszerzeń w C to jedyny powód użycia setuptools, i ta jedyna zaleta tego systemu budowania jest zepsuta na tak wiele sposobów. Pozostaje mi zasugerować użycie #meson, i jego backendu #PEP517, meson-python.

github.com/pypa/setuptools/iss

GitHub[BUG] Since setuptools 75.0.0, packages fail to build with race condition: "No such file or directory" · Issue #4653 · pypa/setuptoolsBy eli-schwartz

For two weeks now, the latest #setuptools release has a major race condition bug. Sure, it's not the first race condition in C extension builds. However, this one has a known cause, with clear explanation why the change was wrong, and causes a regression for many packages that weren't affected before.

And perhaps the most absurd part is that many people are using setuptools only for their C extension building support, and that one feature that's keeping the project still relevant today keeps being broken in so many ways. At this point, I'm going to suggest using #meson and its #PEP517 backend, meson-python.

github.com/pypa/setuptools/iss

GitHub[BUG] Since setuptools 75.0.0, packages fail to build with race condition: "No such file or directory" · Issue #4653 · pypa/setuptoolsBy eli-schwartz

oof... I'm also not excited to see that there is an effort for #meson to use cargo....

Cargo needs to get yeeted into the sun. Or just replaced entirely with a version that does nothing more than 'cargo vendor' and the world moves on to using an actual build system that doesn't require compiling binaries that print out compiler flags to stdout in order to actually work.

I hate cargo so much.

Not a strong vote of confidence for #meson when their tutorial can't be completed without an error that doesn't make any sense to someone unfamiliar with the tool:

subprojects/SDL2-2.30.6/meson.build:1306:6: ERROR: Tried to override dependency 'sdl2' which has already been resolved or overridden at /home/chipc/workspaces/slowgames/depot/mason/meson.build:4:

Some interesting features I wanted to try out but, I'm not sure I can maintain the motivation to overcome this.

Does anyone have an example they can point me to for bundling a CSS stylesheet with a GTK library that *isn’t* a full theme? Specifically this would be for styling a custom widget. I know how to package a stylesheet with an application, but I can’t seem to figure out how to make it work when developing a library.