commit: 1e4be11aff238863cd796913c055e744173b9ef1
parent 134bf38defc212728db153fba5fd3ed82a082745
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date: Sat, 25 Mar 2023 10:30:20 +0100
notes/bootstrapping: Add id on each heading
Diffstat:
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/notes/bootstrapping.shtml b/notes/bootstrapping.shtml
@@ -28,14 +28,14 @@
<dd>One of <a href="https://reproducible-builds.org/">reproducibility</a>'s effect is allowing to audit source code instead of binaries, but said source code needs to be actually used.</dd>
</dl>
- <h2>Tools</h2>
+ <h2 id="tools">Tools</h2>
<ul>
<li><a href="https://hacktivis.me/projects/deblob">deblob</a>: Remove binary executable files (including bytecode)</li>
</ul>
<h2>Problematic software</h2>
- <h3>Erlang</h3>
+ <h3 id="erlang">Erlang</h3>
<p>Documented as originally implemented in prolog, now version <i class="math">n</i> requires binaries version <i class="math">n-1</i> or <i class="math">n</i> to build. No alternative compiler known so far.</p>
<h3 id="rust">Rust</h3>
@@ -58,28 +58,28 @@
This isn't a system that scales, this is just creating a gigantic blob of software that cannot be reasonably audited, right in the toolchain.
</p>
- <h3>Java</h3>
+ <h3 id="java">Java</h3>
<p>Requires compilers abandonned ~10 years ago, currently doesn't builds to OpenJDK for me.</p>
<h3>Free-Pascal Compiler / Object Pascal</h3>
<p><a href="https://bootstrapping.miraheze.org/wiki/Aesop">Aesop</a> seems to still be at the vaporware stage, no code is available.</p>
- <h3>Nim</h3>
+ <h3 id="nim">Nim</h3>
<p>
The transpiled C non-source code used for bootstrapping contained in <code>./c_code/</code> is pretty much what you would get with C++ mangled symbols auto-decompiled to C.<br />
<a href="https://bootstrapping.miraheze.org/wiki/Bootstrapping_Nim">Real Bootstrapping</a> would need a bootstrap path for Object Pascal, which doesn't exists.
</p>
- <h3>QEMU</h3>
+ <h3 id="qemu">QEMU</h3>
<p>
QEMU 7.0 <a href="https://github.com/gentoo/gentoo/commit/11c7bca43160b3d893dc8d846d8da2838332123c">needs a quick fix on the <code>pc-bios/meson.build</code> file</a> so you can choose to not use the binaries it ships, fixed in QEMU 7.1.<br />
They are still required so it means identifying the source of all of them and having proper from-source packaging, it's already done in gentoo for Seabios and EDK2-OVMF (UEFI) which is enough to boot machines but not for full-x86 support, non-x86 being even more problematic (ie. which upstream is used for OpenBIOS/OpenFirmware as used for sparc32, sparc64 and ppc32).
</p>
- <h3>app-emulation/wine-mono</h3>
+ <h3 id="wine-mono">wine-mono</h3>
<p>In gentoo it's a collection of binaries. Upstream repository is at <a href="https://github.com/madewokherd/wine-mono">https://github.com/madewokherd/wine-mono</a> but still includes binaries…</p>
- <h3>mono / .NET</h3>
+ <h3 id="mono">mono / .NET</h3>
<p>
Source-only building is unsupported and nearly impossible (massive chain + intermediary unstable versions).<br />
Should also be noted that Mono started itself with the Microsoft C# compiler (<a href="https://www.mono-project.com/docs/about-mono/history/">History | Mono</a>) instead of <a href="https://www.gnu.org/software/dotgnu/">dotGNU</a> (which is dead since 2012).
@@ -90,19 +90,19 @@
<li><a href="https://github.com/dotnet/source-build/issues/1930">Full source bootstrap · Issue #1930 · dotnet/source-build</a></li>
</ul>
- <h3>Chez Scheme</h3>
+ <h3 id="chez">Chez Scheme</h3>
<p>Requires bootstrap files, <a href="https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/chez.scm">GNU GuixSD packaging</a> doesn't seems to have it figured out yet.</p>
- <h3>NekoVM</h3>
+ <h3 id="neko">NekoVM</h3>
<p>Doesn't seems possible to build without <code>boot/*.n</code> files being present, which are NekoVM bytecode files.</p>
- <h3>GNU gnulib</h3>
+ <h3 id="gnulib">GNU gnulib</h3>
<p><code>lib/javaversion.class</code>. Made <a href="https://hacktivis.me/tmp/0001-lib-javaversion.class-Remove-build-from-source.patch">[PATCH] lib/javaversion.class: Remove, build from source</a> to have it built from source.</p>
- <h3>GNU gettext</h3>
+ <h3 id="gettext">GNU gettext</h3>
<p>gnulib java blob; 3 Java class files in <code>gettext-tools/examples</code>; <code>gettext-tools/m4/csharpexec-test.exe</code> which doesn't have source code (C# is effectively proprietary anyway). Did <a href="https://github.com/gentoo/gentoo/commit/54b36e80f7c3910ae1557c2faafda3d6d62daf49">sys-devel/gettext: deblob</a> to fix it.</p>
- <h3>TypeScript</h3>
+ <h3 id="typescript">TypeScript</h3>
<p>Compiler itself is written in TypeScript, no bootstrap path possible as the <a href="https://github.com/microsoft/TypeScript/commit/214df64e287804577afa1fea0184c18c40f7d1ca">commit introducing the compiler</a> is TypeScript code. Want TypeScript compiler? Get a blob from <code>npmjs.org</code>, like the <a href="https://github.com/microsoft/TypeScript/commit/99ec3a96880649eeaa08c3df30e3ae802048f4fe">Initial commit</a> tells you.</p>
<p>
Alternative might be <a href="https://github.com/swc-project/swc">swc</a> (<a href="#rust">Rust</a>). Note that <a href="https://deno.land/">Deno</a> (also <a href="#rust">Rust</a>) just <a href="https://github.com/denoland/deno/blob/main/tools/update_typescript.md">grabs pre-transpiled JS from Microsoft</a> and <a href="https://babeljs.io/">Babel</a> simply seems to depend on the <code>typescript</code> package.<br />
@@ -111,11 +111,11 @@
<h2>Historically problematic</h2>
- <h3>Firefox >=68 <=78</h3>
+ <h3 id="firefox_python2">Firefox >=68 <=78</h3>
<p>Firefox would bundle python2 and refuse to build if removed. See <a href="https://salsa.debian.org/mozilla-team/firefox/-/commits/esr78/master/obj-x86_64-pc-linux-gnu/_virtualenvs/init/bin">Debian firefox-esr source history</a></p>
<h2>Non-Problematic / Praise</h2>
- <h3>Go</h3>
+ <h3 id="go">Go</h3>
<p><a href="https://golang.org/doc/install/source">Installing Go from source</a> in the official Go documentation details it, both GCCGO and a branching out of Go 1.4 are supported.</p>
</main>
<!--#include file="/templates/en/footer.shtml" -->