[[!meta title="How to update pkgsrc/www/firefox"]]
This article shows how to update pkgsrc/www/firefox package to latest release.
You can use Mozilla's Mercurial (hg) repositories to track upstream changes.
You should have pkgsrc/meta-pkgs/pkg_developer package.
# Clone hg tree
See <https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial>.
You should follow "Using Bookmarks to Manage Multiple Repositories from a Single Clone" section.
# Update trees to latest
$ hg pull central
$ hg pull inbound
$ hg pull aurora
$ hg pull beta
$ hg pull release
$ hg update
# Checkout last release source, and create your branch
Find latest release.
$ hg branches | grep 2901
GECKO2901_2014050617_RELBRANCH 207485:3fd2b5510ccf
(snip)
Checkout the branch.
$ hg checkout GECKO2901_2014050617_RELBRANCH
Create named branch for applying pkgsrc patches
$ hg branch pkgsrc_firefox-29.0.1
$ hg commit -m "Create pkgsrc_firefox-29.0.1 branch for applying pkgsrc patches"
Add .*\.orig$ to .hgignore, and commit this change
$ hg commit -m "Ignore .orig files" .hgignore
# Apply pkgsrc patches
$ pushd /usr/pkgsrc/www/firefox
$ mkpatches -c
$ popd
$ cat /usr/pkgsrc/www/firefox/patches/patch-*|patch -p0
$ hg add ...(necessary files)
$ hg commit -m "Apply pkgsrc patches for firefox-29.0.1nb2"
# Checkout latest beta source, and create your branch
Find latest branch.
$ hg branches | grep 300b9
GECKO300b9_2014052918_RELBRANCH 199964:b7037f050049
Checkout the branch.
$ hg checkout GECKO300b9_2014052918_RELBRANCH
Create named branch for working.
$ hg branch ryoon_firefox-30.b9
Create named branch for applying pkgsrc patches
$ hg branch ryoon_firefox-30.0
$ hg commit -m "Create ryoon_firefox-30.0 branch for applying freebsd-gecko patches"
Add .*\.orig$ to .hgignore, and commit this change
$ hg commit -m "Ignore .orig files" .hgignore
Apply patches from freebsd-gecko
$ cat ~/repos/freebsd-gecko/trunk/www/firefox/files/patch-*|patch -p0
Fix rejected patches manually
$ hg status | grep rej$
$ vi path/to/a/certain/file.c
Commit the patches
$ hg add (necessary files)
$ hg commit -m "Apply freebsd-gecko patches for firefox-30.0"
# Merge your patches
$ hg merge pkgsrc_firefox-29.0.1
$ hg resolve -l
$ vi file/marked/as/U
$ hg resolve --mark file/marked/as/U
(loop)
$ hg commit -m "Merge pkgsrc_firefox-29.0.1 brnach to 30.0"
# Create patch file for patch -p0
$ hg diff -r (revision of first commit in ryoon_freebsd-30.0) | \
sed -e 's!^--- a/!--- !' -e 's!^+++ b/!+++ !' > ~/firefox-30.0.diff
$ vi ~/firefox-30.0.diff
(Remove patch to .hgignore)
(Remove patch to .hgtags)
# Create patches/patch-* for pkgsrc/www/firefox
$ cd /usr/pkgsrc/www/firefox
$ vi Makefile
(Update version)
(Remove PKGREVISION)
(Fix WRKSRC)
$ make mdi
$ make extract
$ pushd ${WRKOBJDIR}/www/firefox/work/mozilla-beta
$ patch -p0 < ~/firefox-30.0.diff
$ popd
$ mkpatches
$ patchdiff
$ make mps
# Test your patches
$ make clean && make package
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb