如何在macOS上构建Firefox浏览器?

在开始这项工作之前,我有一个很好的灵感故事。 Mohammad Zahidur Ra​​hman博士参加了我们的软件工程课程。 他始终表示要求他的学生开始使用大型开源软件构建并尝试对其进行编辑。 从那时起,我希望做这种工作。 虽然课程已经完成,但我没有时间工作! 这样,我过去了大约5个月。 当时,我忙于2018年的MozFest-伦敦,因为我被选为该会议的主持人。 由于签证复杂,我无法参加。 因此,这是完成这项工作的宝贵时间。 所以我只是坐下来开始。

起初,我不知道该过程称为构建。 通常,我们使用C / C ++,我们将其称为编译。 经过一番搜索后,我在developer.mozilla.org上看到了一篇文章,名为《为macOS构建Firefox》。 哦,太好了! 开始了! 但是一开始我就遇到了一个很大的错误。 因为我刚从Mercurial克隆并开始构建! 糟糕!

然后再次开始研究。 我一次又一次地敲打了孟加拉Mozilla社区负责人Mak。 最后,他给了我建议敲Mozilla的构建工程师。 还建议使用IRC。 在我们上一次在加尔各答举行的l10n研讨会上,他向我展示了如何使用IRC。 顺便说一句,我是NDA签署的Mozilla志愿者和代表。 因此,我很容易收到构建工程师的电子邮件。 我开始邮寄并得到了一些回应。 他们建议我通过IRC进行联系。

同时,我从他们那里得到了一些重要的指导。 首先,他们说您没有安装Homebrew。 现在该玩了。 在构建适用于macOS的Firefox时,我注意到有一行“单行设置”(首先尝试!)。 Homebrew是macOS的软件包管理器。 顺便说一句,MacPorts也可以。 它也是包管理器。 我安装了两次,然后再次出错。

现在在IRC上,有人建议我卸载MacPorts。 好的。 我卸载了它。 现在我要前进了。
1. xcode之前已安装在我的电脑上,因此也不需要。
2.1。 安装辅助构建工具:已安装Homebrew。
brew install yasm mercurial gawk ccache python

然后安装brew install autoconf@2.13 autoconf是一个脚本配置工具。

2.2安装Mercurial:现在该安装Mercurial了。
brew install mercurial (因此使用自制程序)
要检查hg version写。 如果一切正常,则将显示版本。

3.获得Mozilla源代码的副本:现在是时候从Mercurial克隆Mozilla源代码了。 那你需要去任何文件夹
$ hg克隆https://hg.mozilla.org/mozilla-central/ Mozilla-central
这将需要一些时间。 然后
$ cd Mozilla中央
意味着我们输入了一个文件夹。

4.配置Mozilla源代码树的构建选项:在源代码树的意思是,我们将打开一个新文件.mozconfig 。 我通过命令行touch .mozconfig在终端上打开了它

现在,我们将其以文本模式打开。
open -e .mozconfig

这两个命令不在developer.mozilla.org中。 我通过搜索了解到的。 现在我们将在该文件上写:
# Define where build files should go. This places them in the directory
# "obj-ff-dbg" under the current source directory
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff-dbg

# Enable debug builds
ac_add_options --enable-debug
ac_add_options --with-macos-sdk=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk

mk_add_options AUTOCONF=/usr/local/Cellar/autoconf@2.13/2.13/bin/autoconf213

我们需要告知Still Mozilla使用MacOSX10.11.sdk。 所以你必须去/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs并打开它。
open /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

瞬间,将打开一个文件夹。 现在需要保留MacOSX10.11.sdk。 您可以从https://github.com/phracker/MacOSX-SDKs下载它。 解压缩后保留。

如果不这样做,则在成功构建后会出现黑屏。

现在,将代码保存在.mozconfig 。 现在放松一下。 你做得很棒。

5.构建:这是主要工作。
./mach bootstrap

在终端上写。 然后它将给您按照一些说明。 您需要按照常识遵循所有规则。 然后写

  ./马赫建立 

这将花费很多时间。 一小时左右 如果一切正常,那么您将得到“您的构建成功!”。 现在需要进行隆吉舞😉

现在该写东西了。
./mach run

哎呀,你做到了!

哦,伙计! 您可能会得到很多错误。 |马赫运行| 不是每个人都能得到。

等待! 我要炫耀!
https://paste.ubuntu.com/p/fGY2qRhqpQ/只有46行! 无人! 我建造了3-4次,所以只有46次。 许多文件是预先构建的。

如果您遇到错误,那么您将怎么办?
https://wiki.mozilla.org/IRC这是Mozilla IRC Wiki。 遵循指示。 加入#introduction。 您也可以在#firefox加入。 但是对于Building,您将在#introduction获得解决方案。 您会得到许多Firefox工程师的帮助。

我得到这些错误。
https://bugzilla.mozilla.org/show_bug.cgi?id=1494022
https://bugzilla.mozilla.org/show_bug.cgi?id=1493330
https://bugzilla.mozilla.org/show_bug.cgi?id=1446946
https://bugzilla.mozilla.org/show_bug.cgi?id=1306395
https://bugzilla.mozilla.org/show_bug.cgi?id=1342292

不要沮丧 您可能会遇到任何错误,只需将其粘贴到Google。

感谢所有帮助我完成这项工作的人。 特别是我的课程老师Mohammad Zahidur Ra​​hman博士,Mozilla孟加拉国社区领袖Mahay Alam Khan和Belayet Hossain。 Mozilla工程师大受鼓舞(我不能说他们的名字,因为我是NDA签名的志愿者。)

如果成功完成,别忘了通知我。