Revert all of bug 383167 changes because they're not enough... going to try again later.

This commit is contained in:
benjamin@smedbergs.us 2007-06-25 11:40:57 -07:00
parent 040adf8a6c
commit 035e643c90
30 changed files with 600 additions and 2480 deletions

View File

@ -203,4 +203,4 @@ deliver: splitsymbols rebase signnss
endif # WINNT
BUILDID = $(shell $(PYTHON) $(srcdir)/config/printconfigsetting.py $(DIST)/bin/application.ini App BuildID)
BUILDID = $(shell cat $(DEPTH)/config/build_number)

View File

@ -65,16 +65,27 @@ DEFINES += -DAPP_VERSION="$(APP_VERSION)"
APP_UA_NAME = $(shell echo $(MOZ_APP_DISPLAYNAME) | sed -e's/[^A-Za-z]//g')
DEFINES += -DAPP_UA_NAME="$(APP_UA_NAME)"
ifdef LIBXUL_SDK
# Build application.ini for a XULRunner app
DIST_FILES = application.ini
GRE_MILESTONE = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build Milestone)
GRE_BUILDID = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build BuildID)
# GRE_BUILD_ID is only available in nsBuildID.h in a form that we can't use
# directly. So munge it. Beware makefile and shell escaping
AWK_EXPR = '/\#define GRE_BUILD_ID/ { gsub(/"/, "", $$3); print $$3 }'
AWK_CMD = awk $(AWK_EXPR) < $(LIBXUL_DIST)/include/nsBuildID.h
DEFINES += -DGRE_MILESTONE=$(GRE_MILESTONE) -DGRE_BUILDID=$(GRE_BUILDID)
GRE_BUILD_ID = $(shell $(AWK_CMD))
ifndef LIBXUL_SDK
DEFINES += -DGRE_BUILD_ID=$(GRE_BUILD_ID)
include $(topsrcdir)/config/rules.mk
else
# Build a binary bootstrapping with XRE_main
MOZILLA_INTERNAL_API = 1
ifeq ($(USE_SHORT_LIBNAME), 1)
PROGRAM = $(MOZ_APP_NAME)$(BIN_SUFFIX)
else
@ -83,7 +94,6 @@ endif
REQUIRES = \
xpcom \
string \
xulapp \
$(NULL)
@ -110,18 +120,11 @@ ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
TK_LIBS := -framework Cocoa $(TK_LIBS)
endif
ifdef MOZ_ENABLE_LIBXUL
APP_XPCOM_LIBS = $(XPCOM_GLUE_LDOPTS)
else
MOZILLA_INTERNAL_API = 1
APP_XPCOM_LIBS = $(XPCOM_LIBS)
endif
LIBS += \
$(STATIC_COMPONENTS_LINKER_PATH) \
$(EXTRA_DSO_LIBS) \
$(MOZ_JS_LIBS) \
$(APP_XPCOM_LIBS) \
$(XPCOM_LIBS) \
$(NSPR_LIBS) \
$(TK_LIBS) \
$(NULL)

View File

@ -40,24 +40,18 @@
Vendor=Mozilla
Name=Firefox
Version=@APP_VERSION@
BuildID=@GRE_BUILDID@
BuildID=@BUILD_ID@
Copyright=Copyright (c) 1998 - 2007 mozilla.org
ID={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
[Gecko]
MinVersion=@GRE_MILESTONE@
MaxVersion=@GRE_MILESTONE@
MinVersion=@GRE_BUILD_ID@
MaxVersion=@GRE_BUILD_ID@
[XRE]
EnableProfileMigrator=1
EnableExtensionManager=1
[Crash Reporter]
#if MOZILLA_OFFICIAL
#if XP_WIN
Enabled=1
#elif XP_MACOSX
Enabled=1
#endif
#endif
Enabled=0
ServerURL=https://crash-reports.mozilla.com/submit

View File

@ -41,52 +41,32 @@
#include <windows.h>
#include <stdlib.h>
#endif
#include "nsBuildID.h"
#include <stdio.h>
#include <stdarg.h>
#include "nsCOMPtr.h"
#include "nsILocalFile.h"
#include "nsStringGlue.h"
static void Output(const char *fmt, ... )
{
va_list ap;
va_start(ap, fmt);
#if defined(XP_WIN) && !MOZ_WINCONSOLE
char msg[2048];
vsnprintf(msg, sizeof(msg), fmt, ap);
MessageBox(NULL, msg, "XULRunner", MB_OK | MB_ICONERROR);
#else
vfprintf(stderr, fmt, ap);
static const nsXREAppData kAppData = {
sizeof(nsXREAppData),
nsnull,
"Mozilla",
"Firefox",
NS_STRINGIFY(APP_VERSION),
NS_STRINGIFY(BUILD_ID),
"{ec8030f7-c20a-464f-9b0e-13a3a9e97384}",
"Copyright (c) 1998 - 2007 mozilla.org",
NS_XRE_ENABLE_PROFILE_MIGRATOR |
NS_XRE_ENABLE_EXTENSION_MANAGER
#if defined(MOZILLA_OFFICIAL) && (defined(XP_WIN) || defined(XP_MACOSX))
| NS_XRE_ENABLE_CRASH_REPORTER
#endif
va_end(ap);
}
,
nsnull, // xreDirectory
nsnull, // minVersion
nsnull, // maxVersion
"https://crash-reports.mozilla.com/submit"
};
int main(int argc, char* argv[])
{
nsCOMPtr<nsILocalFile> appini;
nsresult rv = XRE_GetBinaryPath(argv[0], getter_AddRefs(appini));
if (NS_FAILED(rv)) {
Output("Couldn't calculate the application directory.");
return 255;
}
appini->SetNativeLeafName(NS_LITERAL_CSTRING("application.ini"));
nsXREAppData *appData;
rv = XRE_CreateAppData(appini, &appData);
if (NS_FAILED(rv)) {
Output("Couldn't read application.ini");
return 255;
}
int result = XRE_main(argc, argv, appData);
XRE_FreeAppData(appData);
return result;
return XRE_main(argc, argv, &kAppData);
}
#if defined( XP_WIN ) && defined( WIN32 ) && !defined(__GNUC__)

View File

@ -45,7 +45,6 @@ bin/components/libjar50.so
; [Base Browser Files]
bin/@MOZ_APP_NAME@-bin
bin/@MOZ_APP_NAME@
bin/application.ini
bin/mozilla-xremote-client
bin/run-mozilla.sh
bin/plugins/libnullplugin.so

View File

@ -48,7 +48,6 @@ bin\msvcr80.dll
[browser]
; [Base Browser Files]
bin\@MOZ_APP_NAME@.exe
bin\application.ini
bin\plugins\npnul32.dll
bin\res\cmessage.txt
bin\res\effective_tld_names.dat

View File

@ -457,7 +457,6 @@ ifndef MAKE
MAKE := gmake
endif
PERL ?= perl
PYTHON ?= python
CONFIG_GUESS_SCRIPT := $(wildcard $(TOPSRCDIR)/build/autoconf/config.guess)
ifdef CONFIG_GUESS_SCRIPT
@ -941,7 +940,7 @@ else
ifdef MOZ_UNIFY_BDATE
ifndef MOZ_BUILD_DATE
ifdef MOZ_BUILD_PROJECTS
MOZ_BUILD_DATE = $(shell $(PYTHON) $(TOPSRCDIR)/toolkit/xre/make-platformini.py --print-buildid)
MOZ_BUILD_DATE = $(shell $(PERL) -I$(TOPSRCDIR)/config $(TOPSRCDIR)/config/bdate.pl)
export MOZ_BUILD_DATE
endif
endif

View File

@ -59,6 +59,9 @@ PLSRCS = nfspwd.pl revdepth.pl
TARGETS = $(HOST_PROGRAM) $(PLSRCS:.pl=) $(SIMPLE_PROGRAMS)
# Generate the build number on the fly.
TARGETS += build_number nsBuildID.h
ifndef CROSS_COMPILE
ifdef USE_ELF_DYNSTR_GC
TARGETS += elf-dynstr-gc
@ -93,6 +96,7 @@ NSPR_CFLAGS += -I$(srcdir)/../nsprpub/pr/include/md
endif
HEADERS = \
nsBuildID.h \
$(DEPTH)/mozilla-config.h \
$(srcdir)/nsStaticComponents.h \
$(NULL)
@ -119,12 +123,35 @@ export::
$(INSTALL) system_wrappers $(DIST)/include
endif
# we don't use an explicit dependency here because then we would
# regenerate nsBuildID.h during the make install phase and that would
# be bad.
install::
@if test ! -f nsBuildID.h; then\
echo "You must have done at least a make export before trying to do a make install."; \
echo "(nsBuildID.h is missing.)"; \
exit 1; \
fi;
$(SYSINSTALL) $(IFLAGS1) $(DEPTH)/mozilla-config.h $(DESTDIR)$(includedir)
GARBAGE += \
GARBAGE += build_number nsBuildID \
$(FINAL_LINK_COMPS) $(FINAL_LINK_LIBS) $(FINAL_LINK_COMP_NAMES)
ifneq (,$(BUILD_OFFICIAL)$(MOZILLA_OFFICIAL))
_BN_OFFICIAL=1
else
_BN_OFFICIAL=
endif
build_number: FORCE
$(PERL) -I$(srcdir) $(srcdir)/bdate.pl $@ $(_BN_OFFICIAL)
nsBuildID.h: nsBuildID.h.in build_number $(srcdir)/milestone.txt Makefile
$(RM) $@
MOZ_MILESTONE_RELEASE=$(MOZ_MILESTONE_RELEASE); \
export MOZ_MILESTONE_RELEASE; \
$(PERL) -I$(srcdir) $(srcdir)/aboutime.pl -m $(srcdir)/milestone.txt $@ build_number $(srcdir)/nsBuildID.h.in
ifndef CROSS_COMPILE
ifdef USE_ELF_DYNSTR_GC
elf-dynstr-gc: elf-dynstr-gc.c Makefile Makefile.in

24
config/aboutime.pl Executable file
View File

@ -0,0 +1,24 @@
use strict;
use Getopt::Std;
require mozBDate;
require "Moz/Milestone.pm";
my $mfile;
getopts('m:');
if (defined($::opt_m)) {
$mfile = $::opt_m;
}
my $outfile = $ARGV[0];
my $build_num_file = $ARGV[1];
my $infile = "";
$infile = $ARGV[2] if ("$ARGV[2]" ne "");
if (defined($mfile)) {
my $milestone = &Moz::Milestone::getOfficialMilestone($mfile);
&mozBDate::SetMilestone($milestone);
}
&mozBDate::SubstituteBuildNumber($outfile, $build_num_file, $infile);

63
config/bdate.c Normal file
View File

@ -0,0 +1,63 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** 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 mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of 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 ***** */
/*
**
** bdate.c: Possibly cross-platform date-based build number
** generator. Output is YYJJJ, where YY == 2-digit
** year, and JJJ is the Julian date (day of the year).
**
** Author: briano@netscape.com
**
*/
#include <stdio.h>
#include <time.h>
#ifdef SUNOS4
#include "sunos4.h"
#endif
void main(void)
{
time_t t = time(NULL);
struct tm *tms;
tms = localtime(&t);
printf("500%02d%03d%02d\n", tms->tm_year, 1+tms->tm_yday, tms->tm_hour);
exit(0);
}

44
config/bdate.pl Executable file
View File

@ -0,0 +1,44 @@
#
# ***** 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of 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 *****
use mozBDate;
# Both "generate" args are optional
$file = $ARGV[0] if ("$ARGV[0]" ne "");
$official = 1 if ("$ARGV[1]" ne "");
&mozBDate::UpdateBuildNumber($file, $official);

54
config/build-number.pl Normal file
View File

@ -0,0 +1,54 @@
#
# ***** 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 Mozilla Communicator client code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of 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 *****
my $progname = $0;
my $contents;
# this script needs to be run in config
my $numberfile = "build_number";
# This is the preferences file that gets read and written.
open(NUMBER, "<$numberfile") || die "no build_number file\n";
while ( <NUMBER> ) {
$build_number = $_
}
close (NUMBER);
chop($build_number);

View File

@ -871,6 +871,12 @@ ifdef LOCALE_SRCDIR
MAKE_JARS_FLAGS += -c $(LOCALE_SRCDIR)
endif
#
# Add BUILD_ID to set of DEFINES
#
BUILD_ID := $(shell cat $(DEPTH)/config/build_number)
DEFINES += -DBUILD_ID=$(BUILD_ID)
ifeq (,$(filter WINCE WINNT OS2,$(OS_ARCH)))
RUN_TEST_PROGRAM = $(DIST)/bin/run-mozilla.sh
endif

File diff suppressed because it is too large Load Diff

172
config/mozBDate.pm Executable file
View File

@ -0,0 +1,172 @@
#
# ***** 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998-2000
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of 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 *****
package mozBDate;
use strict;
use IO::File;
BEGIN {
use Exporter ();
use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $milestone);
$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = qw(&UpdateBuildNumber &SubstituteBuildNumber &SetMilestone);
%EXPORT_TAGS = ( );
@EXPORT_OK = qw();
}
local $mozBDate::milestone = "0.0";
sub write_number($) {
my ($file, $num) = @_;
unlink($file);
open(OUT, ">$file") || die "$file: $!\n";
print OUT "$num\n";
close(OUT);
}
sub UpdateBuildNumber($$) {
my ($outfile, $official) = @_;
my $given_date = $ENV{"MOZ_BUILD_DATE"};
my $build_number;
if ($given_date eq "") {
# XP way of doing the build date.
# 1998091509 = 1998, September, 15th, 9am local time zone
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
# localtime returns year minus 1900
$year = $year + 1900;
$build_number = sprintf("%04d%02d%02d%02d", $year, 1+$mon,
$mday, $hour);
}
else {
$build_number = $given_date;
}
if ("$outfile" eq "") {
print "$build_number\n";
return;
}
if (!$official) {
$build_number = "0000000000";
}
my $old_num = "";
# Don't overwrite $outfile if its contents won't change
if ( -e $outfile ) {
open(OLD, "<$outfile") || die "$outfile: $!\n";
$old_num = <OLD>;
chomp($old_num);
close(OLD);
}
if ($old_num ne $build_number) {
&write_number($outfile, $build_number);
}
return;
}
sub SubstituteBuildNumber($$$) {
my ($outfile, $build_num, $infile) = @_;
my $INFILE = new IO::File;
my $OUTFILE = new IO::File;
open $INFILE, "<$build_num";
my $build = <$INFILE>;
close $INFILE;
chomp $build;
chop $build if (substr($build, -1, 1) eq "\r");
if ($infile ne "") {
open($INFILE, "< $infile") || die "$infile: $!\n";
} else {
open($INFILE, "< $outfile") || die "$outfile: $!\n";
}
open $OUTFILE, ">${outfile}.old" || die;
while (<$INFILE>) {
my $id = $_;
my $temp;
if ($id =~ "Build ID:") {
$temp = "Build ID: " . $build;
$id =~ s/Build ID:\s\d+/$temp/;
print $OUTFILE $id;
}
elsif ($id =~ "NS_BUILD_ID") {
$temp = "NS_BUILD_ID " . $build;
$id =~ s/NS_BUILD_ID\s\d+/$temp/;
print $OUTFILE $id;
}
elsif ($id =~ "GRE_BUILD_ID") {
if (defined($ENV{'MOZ_MILESTONE_RELEASE'}) &&
$ENV{'MOZ_MILESTONE_RELEASE'} ne "") {
$temp = "GRE_BUILD_ID \"$milestone\"";
} else {
$temp = "GRE_BUILD_ID \"${milestone}_${build}\"";
}
$id =~ s/GRE_BUILD_ID\s\"\d+\"/$temp/;
print $OUTFILE $id;
}
else {
print $OUTFILE $_;
}
}
close $INFILE;
close $OUTFILE;
unlink $outfile;
rename "${outfile}.old", "$outfile";
}
sub SetMilestone($) {
my ($mstone) = (@_);
$milestone = $mstone if ($mstone ne "");
}
END {};
1;

View File

@ -1,21 +0,0 @@
import configobj, sys
try:
(file, section, key) = sys.argv[1:]
except ValueError:
print "Usage: printconfigsetting.py <file> <section> <setting>"
sys.exit(1)
c = configobj.ConfigObj(file)
try:
s = c[section]
except KeyError:
print >>sys.stderr, "Section [%s] not found." % section
sys.exit(1)
try:
print s[key]
except KeyError:
print >>sys.stderr, "Key %s not found." % key
sys.exit(1)

View File

@ -138,6 +138,7 @@ if ($bits eq "16") { $fileos="VOS__WINDOWS16"; }
my $bufferstr=" ";
my $MILESTONE_FILE = "$topsrcdir/config/milestone.txt";
my $BUILDID_FILE = "$depth/config/build_number";
#Read module.ver file
#Version file overrides for WIN32:
@ -242,7 +243,17 @@ if ($official eq "1") {
}
$mfversion = $mpversion = "$milestone";
my ($buildid, $buildid_hi, $buildid_lo);
open(NUMBER, "<$BUILDID_FILE") || die "No build number file\n";
while ( <NUMBER> ) { $buildid = $_ }
close (NUMBER);
$buildid =~ s/^\s*(.*)\s*$/$1/;
$buildid_hi = substr($buildid, 0, 5);
$buildid_lo = substr($buildid, 5);
$mfversion = $mpversion = "$milestone: $buildid";
my @pvarray = split(',', $productversion);
$fileversion = "$pvarray[0],$pvarray[1],$buildid_hi,$buildid_lo";
}
my $copyright = "License: MPL 1.1/GPL 2.0/LGPL 2.1";
@ -379,6 +390,7 @@ print RCFILE qq{
//
1 VERSIONINFO
FILEVERSION $fileversion
PRODUCTVERSION $productversion
FILEFLAGSMASK 0x3fL
FILEFLAGS $fileflags

View File

@ -157,7 +157,6 @@
#include "nsCDefaultURIFixup.h"
#include "nsEventDispatcher.h"
#include "nsIObserverService.h"
#include "nsIXULAppInfo.h"
#include "nsNetUtil.h"
#include "plbase64.h"
@ -194,6 +193,8 @@
static PRLogModuleInfo* gDOMLeakPRLog;
#endif
#include "nsBuildID.h"
nsIFactory *nsGlobalWindow::sComputedDOMStyleFactory = nsnull;
static nsIEntropyCollector *gEntropyCollector = nsnull;
@ -8246,18 +8247,8 @@ nsNavigator::GetOnLine(PRBool* aOnline)
NS_IMETHODIMP
nsNavigator::GetBuildID(nsAString& aBuildID)
{
nsCOMPtr<nsIXULAppInfo> appInfo =
do_GetService("@mozilla.org/xre/app-info;1");
if (!appInfo)
return NS_ERROR_NOT_IMPLEMENTED;
aBuildID = NS_LITERAL_STRING(NS_STRINGIFY(NS_BUILD_ID));
nsCAutoString buildID;
nsresult rv = appInfo->GetAppBuildID(buildID);
if (NS_FAILED(rv))
return rv;
aBuildID.Truncate();
AppendASCIItoUTF16(buildID, aBuildID);
return NS_OK;
}

View File

@ -73,6 +73,10 @@
#include "nsCRT.h"
#include "nsFontMetricsPS.h"
#ifndef NS_BUILD_ID
#include "nsBuildID.h"
#endif /* !NS_BUILD_ID */
#include "nsPrintfCString.h"
#include "prenv.h"
@ -409,8 +413,8 @@ nsPostScriptObj::write_prolog(FILE *aHandle, PRBool aFTPEnable)
fpCString(fWidth).get(),
fpCString(fHeight).get());
fprintf(f, "%%%%Creator: Mozilla PostScript module (%s)\n",
"rv:" MOZILLA_VERSION);
fprintf(f, "%%%%Creator: Mozilla PostScript module (%s/%lu)\n",
"rv:" MOZILLA_VERSION, (unsigned long)NS_BUILD_ID);
fprintf(f, "%%%%DocumentData: Clean8Bit\n");
fprintf(f, "%%%%DocumentPaperSizes: %s\n", mPrintSetup->paper_name);
fprintf(f, "%%%%Orientation: %s\n",

View File

@ -606,10 +606,17 @@ int strncasecmp(const char *str1, const char *str2, int length)
#include "NSReg.h"
#include "VerReg.h"
#include "nsBuildID.h"
char *TheRegistry = "registry";
char *Flist;
/* WARNING: build hackery */
#if defined(STANDALONE_REGISTRY) && !defined(XP_MAC) && !defined(XP_MACOSX)
long BUILDNUM = NS_BUILD_ID;
#endif
REGERR vr_ParseVersion(char *verstr, VERSION *result);
#if defined(XP_UNIX) && !defined(XP_MACOSX)

View File

@ -93,6 +93,7 @@ FORCE_STATIC_LIB = 1
XPIDLSRCS = \
nsINativeAppSupport.idl \
nsIXULAppInfo.idl \
nsIXULRuntime.idl \
$(NULL)
@ -252,12 +253,3 @@ endif
export:: $(addprefix $(topsrcdir)/xpfe/bootstrap/, $(SHAREDCPPSRCS)) $(STACKWALK_CPPSRCS)
$(INSTALL) $^ .
platform.ini: FORCE
$(PYTHON) $(srcdir)/make-platformini.py $(topsrcdir)/config/milestone.txt > $@
libs:: platform.ini
$(INSTALL) $^ $(DIST)/bin
install::
$(INSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)

View File

@ -1,31 +0,0 @@
#!/usr/bin/python
from optparse import OptionParser
from datetime import datetime
import sys
import os
o = OptionParser()
o.add_option("--print-buildid", action="store_true", dest="print_buildid")
(options, args) = o.parse_args()
buildid = os.environ.get('MOZ_BUILD_DATE', datetime.now().strftime('%Y%m%d%H'))
if options.print_buildid:
print buildid
sys.exit(0)
(milestoneFile,) = args
for line in open(milestoneFile, 'r'):
if line[0] == '#':
continue
line = line.strip()
if line == '':
continue
milestone = line
print """[Build]
BuildID=%s
Milestone=%s""" % (buildid, milestone)

View File

@ -46,6 +46,7 @@
#include "nsAppRunner.h"
#include "nsUpdateDriver.h"
#include "nsBuildID.h"
#ifdef XP_MACOSX
#include "MacLaunchHelper.h"
@ -264,9 +265,6 @@ extern "C" {
int gArgc;
char **gArgv;
static char gToolkitVersion[20];
static char gToolkitBuildID[40];
static int gRestartArgc;
static char **gRestartArgv;
@ -575,7 +573,7 @@ nsXULAppInfo::GetVersion(nsACString& aResult)
NS_IMETHODIMP
nsXULAppInfo::GetPlatformVersion(nsACString& aResult)
{
aResult.AssignLiteral(gToolkitVersion);
aResult.AssignLiteral(TOOLKIT_EM_VERSION);
return NS_OK;
}
@ -591,7 +589,7 @@ nsXULAppInfo::GetAppBuildID(nsACString& aResult)
NS_IMETHODIMP
nsXULAppInfo::GetPlatformBuildID(nsACString& aResult)
{
aResult.Assign(gToolkitBuildID);
aResult.Assign(NS_STRINGIFY(BUILD_ID));
return NS_OK;
}
@ -1938,7 +1936,7 @@ static void BuildVersion(nsCString &aBuf)
aBuf.Append('_');
aBuf.Append(gAppData->buildID);
aBuf.Append('/');
aBuf.Append(gToolkitBuildID);
aBuf.AppendLiteral(GRE_BUILD_ID);
}
static void
@ -2263,6 +2261,27 @@ XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
return 1;
}
if (appData.size > offsetof(nsXREAppData, minVersion)) {
if (!appData.minVersion) {
Output(PR_TRUE, "Error: Gecko:MinVersion not specified in application.ini\n");
return 1;
}
if (!appData.maxVersion) {
// If no maxVersion is specified, we assume the app is only compatible
// with the initial preview release. Do not increment this number ever!
SetAllocatedString(appData.maxVersion, "1.*");
}
if (NS_CompareVersions(appData.minVersion, TOOLKIT_EM_VERSION) > 0 ||
NS_CompareVersions(appData.maxVersion, TOOLKIT_EM_VERSION) < 0) {
Output(PR_TRUE, "Error: Platform version " TOOLKIT_EM_VERSION " is not compatible with\n"
"minVersion >= %s\nmaxVersion <= %s\n",
appData.minVersion, appData.maxVersion);
return 1;
}
}
ScopedLogging log;
if (!appData.xreDirectory) {
@ -2281,54 +2300,6 @@ XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
return 2;
}
nsCOMPtr<nsIFile> iniFile;
rv = appData.xreDirectory->Clone(getter_AddRefs(iniFile));
if (NS_FAILED(rv))
return 2;
iniFile->AppendNative(NS_LITERAL_CSTRING("platform.ini"));
nsCOMPtr<nsILocalFile> localIniFile = do_QueryInterface(iniFile);
if (!localIniFile)
return 2;
nsINIParser parser;
rv = parser.Init(localIniFile);
if (NS_SUCCEEDED(rv)) {
rv = parser.GetString("Build", "Milestone",
gToolkitVersion, sizeof(gToolkitVersion));
NS_ASSERTION(NS_SUCCEEDED(rv), "Failed to get toolkit version");
rv = parser.GetString("Build", "BuildID",
gToolkitBuildID, sizeof(gToolkitBuildID));
NS_ASSERTION(NS_SUCCEEDED(rv), "Failed to get toolkit buildid");
}
else {
NS_ERROR("Couldn't parse platform.ini!");
}
if (appData.size > offsetof(nsXREAppData, minVersion)) {
if (!appData.minVersion) {
Output(PR_TRUE, "Error: Gecko:MinVersion not specified in application.ini\n");
return 1;
}
if (!appData.maxVersion) {
// If no maxVersion is specified, we assume the app is only compatible
// with the initial preview release. Do not increment this number ever!
SetAllocatedString(appData.maxVersion, "1.*");
}
if (NS_CompareVersions(appData.minVersion, gToolkitVersion) > 0 ||
NS_CompareVersions(appData.maxVersion, gToolkitVersion) < 0) {
Output(PR_TRUE, "Error: Platform version '%s' is not compatible with\n"
"minVersion >= %s\nmaxVersion <= %s\n",
gToolkitVersion,
appData.minVersion, appData.maxVersion);
return 1;
}
}
#ifdef MOZ_AIRBAG
const char* airbagEnv = PR_GetEnv("MOZ_CRASHREPORTER");
if (airbagEnv && *airbagEnv) {

View File

@ -84,6 +84,7 @@ CSRCS = \
CPPSRCS = \
$(XPCOM_GLUE_SRC_LCPPSRCS) \
nsXPCOMGlue.cpp \
nsGREDirServiceProvider.cpp \
$(LINKSRC) \
$(NULL)

View File

@ -42,6 +42,7 @@
#include "nspr.h"
#include "nsDebug.h"
#include "nsIServiceManager.h"
#include "nsGREDirServiceProvider.h"
#include "nsXPCOMPrivate.h"
#include "nsCOMPtr.h"
#include <stdlib.h>
@ -517,3 +518,68 @@ NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
return xpcomFunctions.invokeByIndexFunc(that, methodIndex,
paramCount, params);
}
// Default GRE startup/shutdown code
extern "C"
nsresult GRE_Startup()
{
const char* xpcomLocation = GRE_GetXPCOMPath();
// Startup the XPCOM Glue that links us up with XPCOM.
nsresult rv = XPCOMGlueStartup(xpcomLocation);
if (NS_FAILED(rv)) {
NS_WARNING("gre: XPCOMGlueStartup failed");
return rv;
}
#ifdef XP_WIN
// On windows we have legacy GRE code that does not load the GRE dependent
// libs (seamonkey GRE, not libxul)... add the GRE to the PATH.
// See bug 301043.
const char *lastSlash = strrchr(xpcomLocation, '\\');
if (lastSlash) {
int xpcomPathLen = lastSlash - xpcomLocation;
DWORD pathLen = GetEnvironmentVariable("PATH", nsnull, 0);
char *newPath = (char*) _alloca(xpcomPathLen + pathLen + 1);
strncpy(newPath, xpcomLocation, xpcomPathLen);
// in case GetEnvironmentVariable fails
newPath[xpcomPathLen] = ';';
newPath[xpcomPathLen + 1] = '\0';
GetEnvironmentVariable("PATH", newPath + xpcomPathLen + 1, pathLen);
SetEnvironmentVariable("PATH", newPath);
}
#endif
nsGREDirServiceProvider *provider = new nsGREDirServiceProvider();
if ( !provider ) {
NS_WARNING("GRE_Startup failed");
XPCOMGlueShutdown();
return NS_ERROR_OUT_OF_MEMORY;
}
nsCOMPtr<nsIServiceManager> servMan;
NS_ADDREF( provider );
rv = NS_InitXPCOM2(getter_AddRefs(servMan), nsnull, provider);
NS_RELEASE(provider);
if ( NS_FAILED(rv) || !servMan) {
NS_WARNING("gre: NS_InitXPCOM failed");
XPCOMGlueShutdown();
return rv;
}
return NS_OK;
}
extern "C"
nsresult GRE_Shutdown()
{
NS_ShutdownXPCOM(nsnull);
XPCOMGlueShutdown();
return NS_OK;
}

View File

@ -127,5 +127,45 @@ XPCOMGlueLoadXULFunctions(const nsDynamicFunctionLoad *symbols);
extern "C" NS_HIDDEN_(nsresult)
XPCOMGlueShutdown();
/**
* Locate the path of the XPCOM shared library of a compatible GRE.
* The result of this function is normally passed directly to
* XPCOMGlueStartup. This looks for the GRE version in
* nsBuildID.h, which is generated at build time. Unless you set
* MOZ_MILESTONE_RELEASE this will probably not be a useful GRE version string.
*
* @return string buffer pointing to the XPCOM DLL path. Callers do
* not need to free this buffer.
* @status DEPRECATED - Use GRE_GetGREPathWithProperties
*/
extern "C" NS_HIDDEN_(char const *)
GRE_GetXPCOMPath();
/**
* Locate the directory of a compatible GRE as an nsIFile
*
* @param _retval Ordinary XPCOM getter, returns an addrefed interface.
*/
extern "C" NS_HIDDEN_(nsresult)
GRE_GetGREDirectory(nsILocalFile* *_retval);
/**
* Embedding applications which don't need a custom
* directoryserviceprovider may use GRE_Startup to start the XPCOM
* glue and initialize the GRE in one step.
*/
extern "C" NS_HIDDEN_(nsresult)
GRE_Startup();
/**
* Shut down XPCOM and the XPCOM glue in one step.
*/
extern "C" NS_HIDDEN_(nsresult)
GRE_Shutdown();
#endif // XPCOM_GLUE
#endif // nsXPCOMGlue_h__

View File

@ -45,7 +45,6 @@ include $(DEPTH)/config/autoconf.mk
MODULE = xpcom
XPIDLSRCS = \
nsIXULAppInfo.idl \
nsIGConfService.idl \
nsIGnomeVFSService.idl \
$(NULL)

View File

@ -41,6 +41,7 @@
#include "nscore.h"
#include "nsIScriptContext.h"
#include "nsBuildID.h"
#include "nsString.h"
#include "nsReadableUtils.h"
#include "nsInstall.h"
@ -1855,6 +1856,8 @@ static JSConstDoubleSpec install_constants[] =
{ CHROME_DELAYED, "DELAYED_CHROME" },
{ CHROME_SELECT, "SELECT_CHROME" },
{ NS_BUILD_ID, "buildID" },
{0}
};

View File

@ -69,6 +69,7 @@
#include "nsTopProgressNotifier.h"
#include "nsLoggingProgressNotifier.h"
#include "nsBuildID.h"
#include "nsProcess.h"
/* For Javascript Namespace Access */