[[!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 . 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