From c85a8342dce2fcd16fce1f55dc6e64fbfc7638a4 Mon Sep 17 00:00:00 2001 From: "bsmedberg%covad.net" Date: Mon, 22 Aug 2005 17:39:28 +0000 Subject: [PATCH] Bug 304160 - Build XULRunner bundle as an installer.pkg which installs the framework r=mento+chase git-svn-id: svn://10.0.0.236/trunk@178613 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/toolkit/mozapps/installer/packager.mk | 9 +- mozilla/xulrunner/installer/Makefile.in | 6 + .../installer/mac/Description.plist.in | 12 ++ mozilla/xulrunner/installer/mac/Info.plist.in | 30 ++++ mozilla/xulrunner/installer/mac/Makefile.in | 132 ++++++++++++++++++ 5 files changed, 184 insertions(+), 5 deletions(-) create mode 100644 mozilla/xulrunner/installer/mac/Description.plist.in create mode 100644 mozilla/xulrunner/installer/mac/Info.plist.in create mode 100644 mozilla/xulrunner/installer/mac/Makefile.in diff --git a/mozilla/toolkit/mozapps/installer/packager.mk b/mozilla/toolkit/mozapps/installer/packager.mk index a7d37db64f0..9c5bbdc56bd 100644 --- a/mozilla/toolkit/mozapps/installer/packager.mk +++ b/mozilla/toolkit/mozapps/installer/packager.mk @@ -90,11 +90,13 @@ MAKE_PACKAGE = $(ZIP) -r9D $(PACKAGE) $(MOZ_PKG_APPNAME) UNMAKE_PACKAGE = $(UNZIP) $(UNPACKAGE) endif ifeq ($(MOZ_PKG_FORMAT),DMG) +ifndef _APPNAME ifdef MOZ_DEBUG _APPNAME = $(MOZ_APP_DISPLAYNAME)Debug.app else _APPNAME = $(MOZ_APP_DISPLAYNAME).app endif +endif PKG_SUFFIX = .dmg PKG_DMG_FLAGS = ifneq (,$(MOZ_PKG_MAC_DSSTORE)) @@ -146,11 +148,6 @@ SIGN_NSS += $(SIGN_CMD) $(SOFTOKN); \ endif # MOZ_PSM endif # !CROSS_COMPILE -NSPR_LDIR = $(findstring -L,$(NSPR_LIBS)) -ifneq ($(NSPR_LDIR),) -NSPR_LDIR = $(subst -L,,$(word 1,$(NSPR_LIBS))) -endif - NO_PKG_FILES += \ core \ bsdecho \ @@ -234,6 +231,7 @@ else @cd $(DIST)/bin && tar $(TAR_CREATE_FLAGS) - * | (cd ../$(MOZ_PKG_APPNAME); tar -xf -) endif # DMG endif # MOZ_PKG_MANIFEST +ifndef PKG_SKIP_STRIP @echo "Stripping package directory..." @cd $(DIST)/$(MOZ_PKG_APPNAME); find . ! -type d \ ! -name "*.js" \ @@ -259,6 +257,7 @@ endif # MOZ_PKG_MANIFEST $(PLATFORM_EXCLUDE_LIST) \ -exec $(STRIP) $(STRIP_FLAGS) {} >/dev/null 2>&1 \; $(SIGN_NSS) +endif @echo "Removing unpackaged files..." ifeq ($(MOZ_PKG_FORMAT),DMG) cd $(DIST)/$(MOZ_PKG_APPNAME)/$(_APPNAME)/Contents/MacOS; rm -rf $(NO_PKG_FILES) diff --git a/mozilla/xulrunner/installer/Makefile.in b/mozilla/xulrunner/installer/Makefile.in index 1d1d03b98a0..07dcfd83c65 100644 --- a/mozilla/xulrunner/installer/Makefile.in +++ b/mozilla/xulrunner/installer/Makefile.in @@ -54,6 +54,12 @@ NO_PKG_FILES = \ xpt_link* \ $(NULL) +ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))) +DIRS += mac +_APPNAME = $(PKG_BASENAME).pkg +PKG_SKIP_STRIP = 1 +endif + include $(topsrcdir)/config/rules.mk include $(topsrcdir)/toolkit/mozapps/installer/packager.mk diff --git a/mozilla/xulrunner/installer/mac/Description.plist.in b/mozilla/xulrunner/installer/mac/Description.plist.in new file mode 100644 index 00000000000..3a82f3f72c2 --- /dev/null +++ b/mozilla/xulrunner/installer/mac/Description.plist.in @@ -0,0 +1,12 @@ + + +#filter substitution + + + + + + IFPkgDescriptionTitle + Mozilla XULRunner @MOZ_APP_VERSION@ + + diff --git a/mozilla/xulrunner/installer/mac/Info.plist.in b/mozilla/xulrunner/installer/mac/Info.plist.in new file mode 100644 index 00000000000..0b2c102d889 --- /dev/null +++ b/mozilla/xulrunner/installer/mac/Info.plist.in @@ -0,0 +1,30 @@ + + +#filter substitution + + + + + + CFBundleIdentifier + org.mozilla.xulrunner + + CFBundleName + Mozilla XULRunner + + CFBundleShortVersionString + @MOZ_APP_VERSION@ + + IFPkgFlagAuthorizationAction + RootAuthorization + + IFPkgFlagDefaultLocation + /Library/Frameworks + + IFPkgFlagFollowLinks + + + IFPkgFormatVersion + 0.10000000149011612 + + diff --git a/mozilla/xulrunner/installer/mac/Makefile.in b/mozilla/xulrunner/installer/mac/Makefile.in new file mode 100644 index 00000000000..97253e57d22 --- /dev/null +++ b/mozilla/xulrunner/installer/mac/Makefile.in @@ -0,0 +1,132 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Mozilla Browser code. +# +# The Initial Developer of the Original Code is +# IBM Corporation. +# Portions created by the Initial Developer are Copyright (C) 2004 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Brian Ryner +# Benjamin Smedberg +# Darin Fisher +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +DEFINES += -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) + +NO_PKG_FILES = \ + xulrunner-config \ + regchrome* \ + regxpcom* \ + xpcshell* \ + xpidl* \ + xpt_dump* \ + xpt_link* \ + $(NULL) + +include $(topsrcdir)/config/rules.mk + +%.plist: %.plist.in + $(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) $< > $@ + +PACKAGER_NO_LIBS=1 + +# Include this solely for additional NO_PKG_FILES +include $(topsrcdir)/toolkit/mozapps/installer/packager.mk + +BINARY_DIR = $(DIST)/package-stage/XUL.framework/Versions/$(MOZILLA_VERSION) + +SOFTOKN = $(BINARY_DIR)/$(DLL_PREFIX)softokn3$(DLL_SUFFIX) +FREEBL_HYBRID = $(BINARY_DIR)/$(DLL_PREFIX)freebl_hybrid_3$(DLL_SUFFIX) +FREEBL_PURE = $(BINARY_DIR)/$(DLL_PREFIX)freebl_pure32_3$(DLL_SUFFIX) + +_ABS_OBJDIR := $(shell pwd) +_ABS_DIST := $(shell cd $(DIST) && pwd) + +# Syntax "chown_root " +# Should be equivalent to "chown -R root:admin " +CHOWN_ROOT ?= $(error CHOWN_ROOT must be set to a setuid script.) + +# Syntax "chown_revert " +# Should be equivalent to "chown -R " +CHOWN_REVERT ?= $(error CHOWN_REVERT must be set to a setuid script.) + +# Do the real work here: we take $(DIST)/XUL.framework and make it into an +# installer .pkg bundle. The xulrunner/installer makefile will then pack the +# installer into a DMG. +libs:: Info.plist Description.plist + $(RM) -rf resource-stage + mkdir resource-stage + $(RM) -rf $(DIST)/package-stage + mkdir $(DIST)/package-stage + rsync --copy-unsafe-links -a $(DIST)/XUL.framework $(DIST)/package-stage + cd $(BINARY_DIR) && $(RM) -rf $(NO_PKG_FILES) + echo "Stripping package directory..." + find $(BINARY_DIR) ! -type d \ + ! -name "*.js" \ + ! -name "*.xpt" \ + ! -name "*.gif" \ + ! -name "*.jpg" \ + ! -name "*.png" \ + ! -name "*.xpm" \ + ! -name "*.txt" \ + ! -name "*.rdf" \ + ! -name "*.sh" \ + ! -name "*.properties" \ + ! -name "*.dtd" \ + ! -name "*.html" \ + ! -name "*.xul" \ + ! -name "*.css" \ + ! -name "*.xml" \ + ! -name "*.jar" \ + ! -name "*.dat" \ + ! -name "*.tbl" \ + ! -name "*.src" \ + ! -name "*.reg" \ + $(PLATFORM_EXCLUDE_LIST) \ + -exec $(STRIP) $(STRIP_FLAGS) {} >/dev/null 2>&1 \; + $(SIGN_NSS) + chmod -R a+rX,u+w,go-w,-s,-t $(DIST)/package-stage +# For some unknown reason, PackageMaker requires absolute paths to everything. + $(CHOWN_ROOT) $(DIST)/package-stage && \ + /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -build \ + -p $(_ABS_DIST)/$(PKG_BASENAME).pkg \ + -f $(_ABS_DIST)/package-stage \ + -r $(_ABS_OBJDIR)/resource-stage \ + -i $(_ABS_OBJDIR)/Info.plist \ + -d $(_ABS_OBJDIR)/Description.plist; \ + SAVED=$$?; \ + $(CHOWN_REVERT) $(DIST)/package-stage; \ + exit $$SAVED