Difference between revisions of "User:Sardisson/Building with mozilla-central"

From Camino Wiki
Jump to navigation Jump to search
(→‎To do: chrome)
(→‎To do: jars)
Line 49: Line 49:
 
## Remove xpautocomplete, suitetypeaheadfind, xmlextras, mork (libs, dylibs, xpts, modules)
 
## Remove xpautocomplete, suitetypeaheadfind, xmlextras, mork (libs, dylibs, xpts, modules)
 
## s/dist\/Embed/dist\/bin/
 
## s/dist\/Embed/dist\/bin/
## replace installed chrome with dist/bin/chrome/{classic,en-US,toolkit}.manifest
+
## replace installed-chrome.txt with dist/bin/chrome/{classic,en-US,toolkit}.manifest
 
##* also need one for flashblock once it's re-enabled
 
##* also need one for flashblock once it's re-enabled
 +
## replace embed.jar with dist/bin/chrome/{classic,en-US,toolkit}.jar
 
# Figure out what other extraneous parts of toolkit/ we can leave out (e.g., alerts, updater) and whether we need to disable them in the mozconfig (only purely optional items) or confvars.sh (better)
 
# Figure out what other extraneous parts of toolkit/ we can leave out (e.g., alerts, updater) and whether we need to disable them in the mozconfig (only purely optional items) or confvars.sh (better)
 
# Figure out which patches only landed in certain places and whether we need/can get them elsewhere (query fixed1.9.0.x keywords in Camino, maybe fixed1.9.0.x but not fixed1.9.1.x in W:C and Toolkit?)
 
# Figure out which patches only landed in certain places and whether we need/can get them elsewhere (query fixed1.9.0.x keywords in Camino, maybe fixed1.9.0.x but not fixed1.9.1.x in W:C and Toolkit?)

Revision as of 15:13, 6 February 2010

To start building Camino against Gecko 1.9.n, n>0, a number of basic build-config changes will be required.

Checkout and mozconfig

To get started, first pull mozilla-central (or mozilla-1.9.x) from Hg.

For mozilla-central that means: hg clone http://hg.mozilla.org/mozilla-central/ mozilla-central

Then pull mozilla/camino, mozilla/extensions/typeaheadfind, and mozilla/extensions/wallet from cvs into the Hg checkout (at the moment you can skip the typeaheadfind part of this step, because we are disabling typeaheadfind in confvars.sh since it doesn't build).

N.B. If you are building mozilla-central, you will need to adjust your .mozconfig to use gcc-4.2, Mac OS X 10.5 sdk, and a target of Mac OS X 10.5, the defaults on that branch. You should also add ac_add_options --disable-crashreporter to disable building the toolkit crash reporter, which doesn't build in the "10.6, gcc-4.2, 10.5sdk, 10.5 target" configuration; Bug 491774.

Build-config changes in mozilla/camino

  1. In camino/confvars.sh, comment out the MOZ_EXTENSIONS_DEFAULT=" typeaheadfind" line.
  2. In camino/build.mk, remove "embedding/config" from the "tier_app_dirs" rule
  3. Add a new file, camino/app-config.mk that looks like this but replaces all instances of SUITE with MACBROWSER
  4. In camino/Makefile.in
    1. Remove "flashblock", "pinstripe", and "striptease" from the "DIRS" variable.
      This disables flashblock, which will have to be disabled until it is made to use the new toolkit chrome manifests, and pinstripe, which will largely be obsolete but which will need to be adapted to do the new-style toolkit chrome override stuff for the app-license stuff.
      striptease's build will need fixing with 10.5/gcc4.2, or we'll need to switch installer/Makefile.in back to strip and lose Mac OS X crash reports (Firefox recently reverted their uber-strip in order to get useful OS crash reports and sample/shark traces, so I think we want to fix striptease).
    2. Remove the following lines from the "libs::" rule:
      $(RSYNC_ALL) $(srcdir)/embed-replacements/ embed-replacements.tmp
      cd embed-replacements.tmp && \
       $(ZIP) -r0DX ../../dist/Embed/chrome/embed.jar *
      This disables embed-replacements, which will have to be reworked for the new toolkit jar structure, or turned into new-style toolkit chrome overrides along with the app-license stuff in pinstripe.

The above changes should allow you to make it into the xcodebuild phase of the Camino build; at this point, real errors should start appearing!

Known code-related build breakages

  • On 1.9.1 and up, the build breaks in history (mork-based history has been removed from toolkit) - patch in Bug 351351
  • On 1.9.1 and up, the build breaks in wallet - errors (MOZ_DECL_CTOR_COUNTER was removed in Bug 443058) - fixed by Bug 544690
  • On 1.9.1 and up, GetClientWidth is gone (GeckoUtils calls it on an element); - patch in Bug 544712
  • On 1.9.2 and up, the build also breaks from enn's focus rewrite

To do

  1. In camino/confvars.sh
    XXXtodo: See if we can set the app name to Camino
    XXXtodo: What other changes from hendy's confvars.sh are required to get the right Gecko build (e.g., MOZ_PLACES)
  2. mozconfig
    1. export MOZ_DEBUG_SYMBOLS for NSS (Bug 468701)
    2. ac_add_options --disable-crashreporter (we don't need it, and it doesn't build on 10.6 in certain configs, anyway)
  3. Makefile.in
    • All the items mentioned in Build-config changes in mozilla/camino, plus
      1. CVS_TAG and CVS_TIME will need re-implementing for Hg
      2. Need to rework wallet table copying to adjust for them being part of Camino now
  4. Project/xcconfig/nsStaticComponents
    1. Remove xpautocomplete, suitetypeaheadfind, xmlextras, mork (libs, dylibs, xpts, modules)
    2. s/dist\/Embed/dist\/bin/
    3. replace installed-chrome.txt with dist/bin/chrome/{classic,en-US,toolkit}.manifest
      • also need one for flashblock once it's re-enabled
    4. replace embed.jar with dist/bin/chrome/{classic,en-US,toolkit}.jar
  5. Figure out what other extraneous parts of toolkit/ we can leave out (e.g., alerts, updater) and whether we need to disable them in the mozconfig (only purely optional items) or confvars.sh (better)
  6. Figure out which patches only landed in certain places and whether we need/can get them elsewhere (query fixed1.9.0.x keywords in Camino, maybe fixed1.9.0.x but not fixed1.9.1.x in W:C and Toolkit?)
    • Bug 425958 - Content area flashes grey when opening new blank tabs (1.9.0, 1.9.3)
    • Bug 459744 - Javascript can consume all keystrokes in content area, including tab and app menu shortcuts (1.9.0; josh won't take patch elsewhere; major)
    • Bug 453222 - nsCocoaWindow_NSWindow_sendEvent: changes exception behavior in code having nothing to do with core (1.9.0, waiting for others; crashes)
    • Bug 496582 - nsCocoaWindow_NSWindow_sendEvent should not assume |self| will remain valid (1.9.0, waiting for others; crashes)