从源代码构建 Firefox

从源代码构建 Firefox

我只想获取代码,编辑一些内容,然后构建它,仅此而已,为什么这么复杂?

我试过本指南这似乎是我需要的,但如果你看到原始指南bzr它使用和东西,完全不同且复杂。

我按照脚本来:

sudo apt-get build-dep firefox
sudo apt-get install -y fakeroot
apt-get source firefox
# here it gets firefox_55.0.2+build1-0ubuntu0.16.04.1.debian.tar.xz, firefox_55.0.2+build1-0ubuntu0.16.04.1.dsc and firefox_55.0.2+build1.orig.tar.xz
tar xf firefox_55.0.2+build1-0ubuntu0.16.04.1.debian.tar.xz
tar xf firefox_55.0.2+build1.orig.tar.xz
vim debian/config/mozconfig.in
# trying to fix https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/1710993
# echo 'ac_add_options --enable-alsa' >> debian/config/mozconfig.in
dpkg-buildpackage -b -us -uc
# some bugs of missing SOURCE_CHANGESET file
touch SOURCE_CHANGESET
dpkg-buildpackage -b -us -uc
# some issues with missing browser/config/version.txt file
ln -s firefox-55.0.2+build1 browser
touch browser/config/version.txt
dpkg-buildpackage -b -us -uc

它似乎依赖于很多地方并不断地批评信息debian/build/rules.mk:366: *** We aren't in the full source directory. Please use "TARBALL=<path_to_orig.tar.bzr>". Stop.

我在提取文件的同一目录中,源就在那里,我现在不需要更改任何其他包,我该如何构建它?

答案1

编译 Firefox 的开发版本(“Nightly”)需要经过一些精心的准备。(这是为“上游”制作补丁和改进时使用的最佳版本)。必须在远离 Ubuntu 生产安装的地方执行这样的任务,我会强烈推荐使用专用于此任务的虚拟机。

以下技术已在 Ubuntu Zesty Zerus 17.04(在专用虚拟机中运行)上进行了测试,最好始终使用最新版本的 Ubuntu 来编译 Firefox,因为所使用的依赖项大部分都是相当现代的。我没有尝试过无数的构建选项,但您可以随意在自己的构建中尝试!

笔记:构建系统需要大量 RAM 以及大量磁盘空间。我建议使用 8GB RAM、30GB 可用磁盘空间和 VM 允许的尽可能多的核心,这种组合在我的系统上肯定有效。注意:如果 RAM、HDD 空间和可用核心的配额较少,构建系统将失败...

1.建立依赖关系:

首先安装一些构建依赖项,从最新的稳定 rust 编译器开始:

wget -O - https://static.rust-lang.org/rustup.sh | sh

然后从 Ubuntu 存储库进行更标准的安装:

sudo apt-get install autoconf2.13 libgtk-3-dev mercurial llvm-4.0 clang-4.0 \
libgconf2-dev libdbus-glib-1-dev libpulse-dev yasm build-essential libgtk2.0-dev \
libxt-dev

2.克隆 Firefox 开发存储库:

接下来克隆 Firefox Mercurial 存储库,在下载期间给自己泡杯茶:

cd $HOME && hg clone https://hg.mozilla.org/mozilla-central

3. 构建 Firefox:

最后,为了构建源代码本身,需要再喝一杯茶,可能还需要吃一个三明治,因为即使在最快的计算机上构建这也需要很长时间:

cd $HOME/mozilla-central && ./mach build

完成后你会看到以下消息:

43:58.38 We know it took a while, but your build finally finished successfully!
To view resource usage of the build, run |mach resource-usage|.
To take your build for a test drive, run: |mach run|

包含一些提示的链接下一步去哪里……

4. 运行 Firefox:

现在只需运行:

cd $HOME/mozilla-central && ./mach run

并且您正在运行最新开发版本的 Firefox!您现在可以开始破解源代码如果您的补丁达到标准,您可以提交它们并将您的工作包含在此出色的浏览器中。

5.更新源:

您应该定期更新源代码,方法是切换到源目录并使用标准 mercurial 存储库命令进行更新。以下一行应该可以为您完成此操作:

cd $HOME/mozilla-central && hg pull && hg update

这是在我自己的系统上运行的标准更新:

andrew@ithaca:~/mozilla-central$ hg pull
pulling from https://hg.mozilla.org/mozilla-central
searching for changes
adding changesets
adding manifests
adding file changes
added 767 changesets with 4619 changes to 3590 files                            
(run 'hg update' to get a working copy)
andrew@ithaca:~/mozilla-central$ hg update
3581 files updated, 0 files merged, 141 files removed, 0 files unresolved

接下来你应该重新编译:

cd $HOME/mozilla-central && ./mach build

也许在重新编译时可以出去走走:)。

6. 免费截图:

下面是在我 17.04 系统上运行的最新“Nightly”的屏幕截图:

在此处输入图片描述

记住:“玩得开心!”

笔记:

  • 为 Mozilla 代码库做出贡献:将补丁合并到 Firefox 代码库的起始步骤...
  • Mozilla Firefox:Linux 构建准备:虽然需要进行一些修改和添加,但对于这个项目来说这是一个很好的开始。我无法让bootstrap.py安装程序工作,因此给出了相关说明手动
  • Ubuntu 17.04 中的 rust 编译器太旧了,因此提供了直接从 rust 站点安装的说明。Rust 的发布周期为 6 周,因此对于那些喜欢前沿技术的人来说,这可能是更好的选择。一些注意事项这里...
  • Firefox Nightly:有关 Firefox Nightly 开发和发布模型的更多细节。

相关内容