add build-firefox-from-source-on-fedora-linux.gmi

This commit is contained in:
ps 2026-03-28 19:32:02 +02:00
parent b7a75acae0
commit 7625d09c93
5 changed files with 118 additions and 2 deletions

View file

@ -0,0 +1,110 @@
# Збірка Firefox з початкового коду в Linux / Fedora 43
Нарешті, знайшов час підстригти лисиці хвоста. Зокрема тому, що віднедавна відкрив для себе збірку i2pdbrowser: на базі консервативного і мабуть, останнього адекватного релізу ESR 115 - без "соціалізації" та заокруглення Мозілою колись цікавого (в першу чергу для гіків) браузеру:
=> my-personal-i2pdbrowser-fork-for-privacy-oriented-web.gmi Мій форк i2pdbrowser для приватно-орієнтованого Веб
По суті, білд вище - просто задає свою політику для готових офіційних бінарників цієї версії. В ній нормально відображається сучасний Веб; це не якийсь там Dillo чи NetSurf а повноцінний браузер.
Чому мене не влаштували архівні бінарники?
* Я користуюсь багатьма браузерами одночасно для різних мереж (Інтернет, Yggdrasil, Mycelium, Tor, I2P, тощо) і через слабке залізо не користуюсь Flatpak - мені треба якось змінити системний ідентифікатор програми для ізоляції профілів, не використовуючи контейнери;
* В мене давно крались плани покопирсатись у вихідному коді FF і точково адаптувати його під себе. Раніше, такими нюансами була не можливість вимкнення сповіщень про оновлення, які я випиляв тільки даунгрейдом з підтримкою потрібної опції в about:config;
* Також, моїй параної буде спокійніше, враховуючи що я бачу на поточному 149.0 купу заблокованих (завдяки самопалу psocks) спроб телеметрії на домени Mozilla. Хочу бути впевненим, що браузер відповідає задекларованим комітам і не намагається "дбайливо" тягнути мою історію переглядів на свої сервери, під виглядом "синхронізації профілю" чи "Mozilla VPN".
## Збірка
Офіційна інструкція:
=> https://firefox-source-docs.mozilla.org/setup/linux_build.html Building Firefox On Linux
Розмір репозиторію складає ~5 GB, також на (Fedora 43) довстановив:
``` bash
sudo dnf install perl clang-devel llvm-devel
```
* ймовірно, скрипт інсталяції ту команду запропонує автоматично
* `clang-devel llvm-devel` не потрібні, якщо ви збиратиметесь з артефактів
Вся "офіційна" процедура нового встановлення зводиться до чотирьох команд:
``` bash
curl -LO https://raw.githubusercontent.com/mozilla-firefox/firefox/refs/heads/main/python/mozboot/bin/bootstrap.py
python3 bootstrap.py
./mach build
./mach run
```
* при наступних збірках, команда `python3 bootstrap.py` замінюється на `./mach bootstrap`
* також, перед повторними білдами, варто підтягнути оновлення з `git pull`
* збірка з артефактами "Firefox for Desktop Artifact Mode [default]" триває швидко - через підвантаження бінарних наборів
### ESR 115
> Зауважу, що на Fedora 43 мені так і не вдалося розв'язати всі застарілі залежності. Можливо, тут варто спробувати статичний білд на віртуалці або з використанням контейнерів. Планую доповнити згодом, а поки - лишаю нотатки для ESR 115 як є.
В гілці master буде відповідно остання версія Nightly з усіма навісами. Тому я буду збирати собі ESR 115 за образом і подобою i2pdbrowser, бо точно не знаю з якої точно версії Firefox зкурвився.
Офіційний гайд я тут ігнорую і збираюсь так:
``` bash
git clone https://github.com/mozilla-firefox/firefox.git
cd firefox
```
* `git clone` - можливо потребує `--recursive` (не перевіряв, бо просто перехожу в клонований раніше репозиторій)
Тепер потрібно перемкнутись на тег або гілку:
=> build-firefox-from-source-on-fedora-linux/FIREFOX_ESR_115-tags.png Вибір тега на GitHub (скріншот)
``` bash
git checkout ВАШ_ВИБІР
```
* особисто вирішив спробувати тег FIREFOX_115_34_0esr_RELEASE, бо (на момент допису) він оновився лише два тижні тому - можливо наявні критичні виправлення безпеки і я не бачу для себе очевидних причин фрізитись саме на FIREFOX_115_20_0esr_RELEASE; думаю, що ESR 115.20 в i2pdbrowser використовується лише тому, що розробники просто зробили для неї ініціальний пресет і втратили інтерес до супроводу.
Після перемикання гілки (це займе деякий час) я створив файл `mozconfig` наступного вмісту:
``` mozconfig
ac_add_options --with-libclang-path=/usr/lib64
ac_add_options --without-wasm-sandboxed-libraries
```
Зробив даунгрейд Rust:
``` bash
rustup install 1.70.0
rustup default 1.70.0
rustc --version
```
* можливо й новіші працюють, не перевіряв
* переключитись назад можна командою `rustup default stable`
=> install-latest-rust-version-on-linux.gmi Встановлення останньої версії Rust в Linux
Також, збірка буде вимагати ~ Python 3.11:
``` bash
sudo dnf install python3.11-devel
```
і додаткові аргументи середовища:
``` bash
python3.11 ./mach bootstrap --no-system-changes
LDFLAGS="-Wl,--allow-shlib-undefined" HOST_LDFLAGS="-Wl,--allow-shlib-undefined" python3.11 ./mach build
python3.11 ./mach run
```
* на етапі `bootstrap` я обираю "Firefox for Desktop"
* аргумент `--no-system-changes` потрібен, щоб не ставити watchman
У разі зміни конфігурації і перед повторним білдом, варто почистити кеш:
``` bash
rm -rf ~/.mozbuild
rm -rf obj-*
```
Все інше, якщо збірка вдалась - вже підганяємо під своє середовище робочого столу або збираємо пакет rmp/deb.
## Дивіться також
=> left-oriented-close-tab-button-in-firefox.gmi Ліво-стороння орієнтація кнопки "закрити вкладку" в Firefox
=> goodbye-flatpak.gmi Видаляю Flatpak зі свого комп'ютера

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View file

@ -16,6 +16,7 @@
### Нотатки
=> build-firefox-from-source-on-fedora-linux.gmi 2026-03-28 Збірка Firefox з початкового коду в Linux / Fedora 43
=> psocks-v0.5.0-release-with-multi-list-features.gmi 2026-03-28 Реліз psocks v0.5.0 з підтримкою мульти-списків
=> my-solution-for-icecast-m3u-xspf-vclt-buttons-in-multi-host-mode.gmi 2026-03-28 Моє "виправлення" кнопок M3U/XSPF/VCLT Icecast при роботі в мульти-хост режимі
=> icecast-http-over-tor-socks.gmi 2026-03-25 Прокидання потоку Icecast/HTTP через Tor/SOCKS з socat

View file

@ -89,3 +89,4 @@
## Дивіться також
=> left-oriented-close-tab-button-in-thunderbird.gmi Ліво-стороння орієнтація кнопки "закрити вкладку" в Thunderbird
=> build-firefox-from-source-on-fedora-linux.gmi Збірка Firefox з початкового коду в Linux / Fedora 43

View file

@ -25,3 +25,7 @@
=> https://github.com/YGGverse/i2pdbrowser/tree/ps
P.S. Особисто мені було приємно повернутись на старий фокс без вікон авторизації, круглядських табів, ші, груповух і невбиваємих попапів аптейтів. Рекомендую, бо єдиний відомий мені кандидат Librewolf - ставить з коробки uBlock а це великий гріх. Всі інші Dillo, NetSurf - інша опера, і не про сучасний Веб.
## Дивіться також
=> build-firefox-from-source-on-fedora-linux.gmi Збірка Firefox з початкового коду в Linux / Fedora 43