LINUX.ORG.RU

Стандартный метод сборки Bootstrap GNU Toolchain

 ,


0

1

Подскажите пожалуйста, существует ли стандартный Bootstrap GNU Toolchain которым пользуются сами разработчкики основных GNU проектов? Я имею в виду стандартный набор команд для сборки как минимум gcc, glibc, binutils, make и autotools на любой адекватной Linux системе, без привязки к тому и без перезаписи того, что там уже установлено и желательно с бинарно воспроизводимой сборкой. В дальнейшем этот минимальный GNU Toolchain будет использоваться для сборки ядра и остальных компонентов системы.

Да я знаю про LFS, но это нестандартный путь. Не думаю, что разработчики GNU собирают свои компоненты именно так.


Ответ на: комментарий от aol

Интересный проект, спасибо за ссылку. Но это очередной нестандартный LFS с кучей не принятых в апстрим патчей буквально для всего, что там собирают. К тому же там нет glibc и вместо него используется musl.

zg
() автор топика
Ответ на: комментарий от zg

вот тут тема аналогичная пробегала не так давно Можно ли собрать Линукс совсем с нуля?

предлагается есть мозоли, применяя компилятор си на схеме ))

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от aol

это очень низкое начало

Не мой случай. Я хочу начать с Linux системы, в которой уже есть минимальный набор программ и библиотек необходимых версий для сборки минимального GNU Toolchain. Мне не надо последовательно апгрейдить совсем древний GNU Toolchain менее древним и так до победного конца. Мне надо просто собрать тот минимум, при помощи которого можно будет в chroot собрать ядро, а затем в QEMU собрать всё остальное. Всё это сразу последних или почти последних версий.

zg
() автор топика

Увидел сейчас новость про Alpine Linux, который использует musl вместо glibc и busybox вместо соответствующих GNU утилит. Задумался, а будет ли проще собирать Bootstrap GNU Toolchain на таком Linux, в котором нет ничего библиотечного от GNU?

zg
() автор топика
Ответ на: комментарий от zg
  1. Посмотри, как собирается LFS из любого live CD

1.1. Задумайся – зачем там GCC собирают несколько раз (три) и почему там в процессе сборки возникают циклические зависимости?

  1. Посмотри, как собирается Guix – через Mes и си на лиспе, и лисп на таком минималистичном Си. 2.1. Изучи первоначальный seed и bootstrappable.org и презентацию с FOSDEM про Mes,C,guile и процесс сборки Guix на Guile. 2.2. Изучи как писать ебилды рецепты сборки в Guix и про монады G-expressions 2.3. Про параметризированные рецепты сборки и аналог USE флагов из Gentoo

  2. Посмотри, как собирается Nix и его базовый seed из nix-pkg.

3.1. Зачем там отдельный хаскелеподобный язык, а не лисп или схема как в Guix?

3.2. Nix flakes

3.3. Nix-home-manager

3.4. Ферма сборки hydra и непрерывная интеграция в NixOS

  1. Посмотри, как собирается CRUX, ArchLinux, void.

4.1. Void и xbps-src

  1. Берём простой линукс из 1 или 4. Ставим туда Janet и Hermes

5.1. Изучи его первоначальный seed и то, как собираются пакеты из него: в hpkgs seed.hpkg, seed-out.hpkg, core.hpkg и какой-нибудь hello-world – например, ed.hpkg или busybox.hpkg

Мне надо просто собрать тот минимум, при помощи которого можно будет в chroot собрать ядро, а затем в QEMU собрать всё остальное. Всё это сразу последних или почти последних версий.

  1. изучи, как собирается BuildRoot

6.1. или как делается сборка BuildRoot под Android android-tools.mk

  1. ещё у автора toybox wiki было что-то про сборку именно под QEMU минимального seed в блоге, читай про линукс для аборигенов aboriginal, см. тулчейныhttps://www.landley.net/toybox/downloads/binaries/toolchains/latest/x86_64-linux-musl-cross.tar.xz например, mkroot talk: celf-2015.txt
  1. Why did I do Aboriginal Linux (which led me here)

    260 slide presentation: https://speakerdeck.com/landley/developing-for-non-x86-targets-using-qemu

    How and why to make android self-hosting: http://landley.net/aboriginal/about.html#selfhost

    More backstory than strictly necessary: https://landley.net/aboriginal/history.html

anonymous
()
Ответ на: комментарий от anonymous

2.1. Изучи первоначальный seed и bootstrappable.org и презентацию с FOSDEM про Mes,C,guile и процесс сборки Guix на Guile.

mes и mescc

reduced-binary-seed-bootstrap

guix-reduces-bootstrap-seed-by-50

guix-further-reduces-bootstrap-seed-to-25

fosdem_2017/mes_fosdem.pdf – MES: Maxwell Equations for Software

fosdem_2018/bootstrappable.org

Maxwell equations for software:

LISP-1-5-page-13-bottom.png

fosdem_2019/fosdem19.pdf

guix bootstrappable.org

https://github.com/oriansj/talk-notes/blob/master/fosdem_2021/gnu_mes_fosdem21.pdf

fosdem_2023/RISCV_Bootstrap_guix.pdf

anonymous
()

существует ли стандартный Bootstrap GNU Toolchain которым пользуются сами разработчкики основных GNU проектов?

нет, он весь нестандартный. зачем, по твоему, Eelco Dolstra edolstra.github.io придумал Nix pkg manager, и целый NixOS с Hydra?

для воспроизводимости сборок, reproducible builds

он целый диссер на эту тему написал: pubs/phd-thesis.pdf

публикации pubs презентации talks

вот поставишь ты например CC=мойgcc или с USE-флагами нахимичишь, как в генту.

и всё – сборка уже невоспроизводимой будет, не стандартной.

anonymous
()
Ответ на: комментарий от zg

если хочется не питонового API как EAPI в portage – смотри лучше CRUX или ArchLinux как собирается, там обычные шелл скрипты

в Nix или в Guix тоже, только баш скрипты запускаются из своего велосипеда для воспроизводимости

hermes на Janet и там только сборка как в nix --option substitutes disable из исходников.

плюс там видно простой DSL вида (defsrc ...) на лиспе

anonymous
()
Ответ на: комментарий от anonymous

1.1. Задумайся – зачем там GCC собирают несколько раз (три) и почему там в процессе сборки возникают циклические зависимости?

Enjoy your C++

bootstrappable.org/projects.html :

Current versions of GCC are written in C++, which means that a C++ compiler is needed to build it from source. GCC 4.7 was the last version of the collection that could be built with a plain C compiler, a much simpler task.

и LFS-ники, и гентушники пересобирают по три раза.

чтобы понадёжнее, ога. чтобы уж наверняка.

anonymous
()
Ответ на: комментарий от aol

parts.rst про процесс раскрутки из hex0:

builder-hex0-x86-stage2 runs as the kernel for building the stage0-posix compilers and then mes and tcc. Then the Fiwix https://github.com/mikaku/Fiwix kernel is built and launched. Then Fiwix runs the build until Linux takes over.

fiwix тоже интересная ось и без этих циклических ссылок в процессе сборки, если правильно помню

о,да. оказывается, проще из него собрать чем из-под самого линакса, со всеми его циклическими ссылками :))

хотя, там kexec реализовали. может, поэтому.

It is small in size (less than 50K lines of code), runs on the i386 hardware platform and is compatible with a good base of existing GNU applications.

вот могут же, если захотят.

настанет день, когда за stable API is nonsense будут бить в морду

вот это всё, да.

anonymous
()