4 ms·
Debian uses a tool called `strip-nondeterminism` to help with this in part: https://salsa.debian.org/reproducible-builds/strip-nondeterminism https://salsa.debi
by jzb 2y ago
Debian uses a tool called `strip-nondeterminism` to help with this in part: https://salsa.debian.org/reproducible-builds/strip-nondeterminism https://salsa.debian.org/reproducible-builds/strip-nondeterm...
There's lots of info on the Debian site about their reproducibility efforts, and there's a story from 2024's DebConf that may be of interest: https://lwn.net/Articles/985739/ https://lwn.net/Articles/985739/
- frakkingcylons 2y agoI see this is written in Perl, is that the case with most Debian tooling?
- dannyobrien 2y agosome, but not all. There's a bunch of historical code which means that Perl is in the base install, but modern tooling has a lot of Python too, as well as POSIX shell (not bash).
- alfiedotwtf 2y agoThough a lot of the apt tooling is definitely written in Perl the last time I had to deep dive
- johnisgood 2y agoAnd a lot of OpenBSD-related stuff is written in Perl, too. I do not think it is a bad thing at all.
- alfiedotwtf 2y agoI absolutely love Perl. I'm just so sad Python won because Google blessed it as a language and at the time everyone wanted to work for Google. Perl always gets hate on HN, but I actually wonder of those commenter, who has actually spent over a single hours using Perl after they've read the Camel book. Honest opinion: if you're going to be spending time in Linux in your career, then you should read the Camel book at least once. Then and only then should you get to have an opinion on Perl!
- freedomben 2y agoI mostly agree with you, though I do think Perl is genuinely harder to read than many other languages. Perl was often my goto for scripts before I learned Ruby (which has many glorious perl-isms in it even if most rubyists nowadays don't know or want to acknowledge that :-D ), and even looking back at some of my own code and knowing what it does, I have to read it a lot slower and more carefully than most other langs. Perl to me feels wonderfully optimized for writing, sometimes at the expense of reading. I love Perl's power and expressiveness, especially the string processing libs, and while I appreciate the flexibility in how many different ways there are to do things, it does mean that Perl code written by someone else with different approaches can sometimes be difficult to grok. For my own scripts I don't care about any of those issues and I often optimize for writing anyway, but there are plenty of applications where I would recommend against Perl, despite my affection for it. And yes agree, people should read the camel book!
- johnisgood 2y ago> there are plenty of applications where I would recommend against Perl Yes of course, I would not write any type of servers in Perl, I would pick Go or Elixir or Erlang for such an use-case.
- fooker 2y agoIt’s helpful to think of Perl as a superior bash, rather than a worse python, when it comes to scripting.
- eviks 2y agoHow is that helpful to ignore a better alternative just because a worse one exists?
- palata 2y agoThey precisely say they use it as a better alternative to bash. Obviously they don't think that Python is a better alternative here... or did I misunderstand the question?
- eviks 2y agoNot obvious to me that they think Python is worse than Perl, and make the phrase even less sensible.
- dizhn 2y agoWeird wording yes. I read it as "yes perl is better than bash" (I assume for tasks that need actual programming languages), "no it's not worse than python".
- ben0x539 2y agoI'm not reading it as "it's not worse than python", I am reading it as "the choice was between bash and perl, python was not an option for reasons unrelated to its merits"
- palata 2y agoSo you genuinely believe that they think Python is a better choice in this case, but still chose to go for Perl because they believe it's worse? How does that work?
- londons_explore 2y agoPackaging and making build scripts is perhaps one of the most unrewarding tasks out there. As an open source project where most work is done for free, debian can't afford to be prescriptive about what languages are used for this sort of task.
- account42 2y agoActually it can and it is. Build system dependencies, especially ones that apply to all packages, are something that concerns the distribution as a whole and not something where each developer can just add their favorite one.
- jeltz 2y agoLast time I checked a lot was also written in Python.
- johnisgood 2y agoI checked the code. Perl is suitable for these kind of tasks.
- lamby 2y agoOne of the authors of strip nondeterminism is here. The primary reason it's written in Perl is that given that strip-nondeterminism is used when building 99.9% of all Debian packages, using any other language would have essentially made that language's runtime a dependency for all building Debian packages. (Perl is already required by the build process, whilst Python is not.)
- flkenosad 2y agoQuestion: is Perl the only runtime the Debian build process relies on?
- yrro 2y agoAny packages with "Essential: yes" (run 'apt list ~E' to see them) are required on any Debian system. Additionally, the 'build-essential' pulls in other packages that must be present to build Debian packages via its dependencies: https://packages.debian.org/sid/build-essential https://packages.debian.org/sid/build-essential