diff --git a/.gitignore b/.gitignore
index c7361af80c79dc..4895d22cdf8cc2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -91,3 +91,9 @@ test.tap
# Xcode workspaces and project folders
*.xcodeproj
*.xcworkspace
+
+# mac installer files
+/tools/osx-pkg/osx-pkg-out.pkgproj
+/tools/osx-pkg/strings/license.rtf
+/tools/osx-pkg/strings/**/*.out.rtf
+/tools/osx-pkg/scripts/nodejs-run-uninstall
diff --git a/Makefile b/Makefile
index cf10346a211768..ba19b9490c15f4 100644
--- a/Makefile
+++ b/Makefile
@@ -435,7 +435,7 @@ BINARYTAR=$(BINARYNAME).tar
XZ=$(shell which xz > /dev/null 2>&1; echo $$?)
XZ_COMPRESSION ?= 9
PKG=$(TARNAME).pkg
-PACKAGEMAKER ?= /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
+PACKAGESBUILD ?= /usr/local/bin/packagesbuild
PKGDIR=out/dist-osx
release-only:
@@ -464,6 +464,26 @@ release-only:
exit 1 ; \
fi
+pre-pkg:
+ touch tools/osx-pkg/scripts/nodejs-run-uninstall # empty file for uninstall step
+ $(NODE) tools/license2rtf.js < LICENSE > tools/osx-pkg/strings/license.rtf
+ cat tools/osx-pkg/osx-pkg.pkgproj | \
+ sed -e 's|__nodeversion__|'$(FULLVERSION)'|g' \
+ -e 's|introduction.rtf|introduction.out.rtf|g' \
+ -e 's|summary.rtf|summary.out.rtf|g' > \
+ tools/osx-pkg/osx-pkg-out.pkgproj
+ $(foreach dir, \
+ $(shell echo tools/osx-pkg/strings/*/), \
+ cat $(dir)introduction.rtf | \
+ sed -e 's|__nodeversion__|'$(FULLVERSION)'|g' | \
+ sed -e 's|__npmversion__|'$(NPMVERSION)'|g' > \
+ $(dir)introduction.out.rtf && \
+ cat $(dir)summary.rtf | \
+ sed -e 's|__nodeversion__|'$(FULLVERSION)'|g' | \
+ sed -e 's|__npmversion__|'$(NPMVERSION)'|g' > \
+ $(dir)summary.out.rtf; \
+ )
+
$(PKG): release-only
rm -rf $(PKGDIR)
rm -rf out/deps out/Release
@@ -472,16 +492,13 @@ $(PKG): release-only
--tag=$(TAG) \
--release-urlbase=$(RELEASE_URLBASE) \
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
- $(MAKE) install V=$(V) DESTDIR=$(PKGDIR)
- SIGN="$(CODESIGN_CERT)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh
- cat tools/osx-pkg.pmdoc/index.xml.tmpl \
- | sed -E "s/\\{nodeversion\\}/$(FULLVERSION)/g" \
- | sed -E "s/\\{npmversion\\}/$(NPMVERSION)/g" \
- > tools/osx-pkg.pmdoc/index.xml
- $(PACKAGEMAKER) \
- --id "org.nodejs.pkg" \
- --doc tools/osx-pkg.pmdoc \
- --out $(PKG)
+ $(MAKE) all V=$(V)
+ NODE_INSTALL_NODE_ONLY=1 $(PYTHON) tools/install.py install '$(PKGDIR)/node' '$(PREFIX)'
+ NODE_INSTALL_HEADERS_ONLY=1 $(PYTHON) tools/install.py install '$(PKGDIR)/node' '$(PREFIX)'
+ NODE_INSTALL_NPM_ONLY=1 $(PYTHON) tools/install.py install '$(PKGDIR)/npm' '$(PREFIX)'
+ $(MAKE) pre-pkg V=$(V)
+ SIGN="$(CODESIGN_CERT)" PKGDIR="$(PKGDIR)/node" bash tools/osx-codesign.sh
+ $(PACKAGESBUILD) tools/osx-pkg/osx-pkg-out.pkgproj
SIGN="$(PRODUCTSIGN_CERT)" PKG="$(PKG)" bash tools/osx-productsign.sh
pkg: $(PKG)
@@ -542,7 +559,7 @@ $(TARBALL)-headers: release-only
--tag=$(TAG) \
--release-urlbase=$(RELEASE_URLBASE) \
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
- HEADERS_ONLY=1 $(PYTHON) tools/install.py install '$(TARNAME)' '/'
+ NODE_INSTALL_HEADERS_ONLY=1 $(PYTHON) tools/install.py install '$(TARNAME)' '/'
find $(TARNAME)/ -type l | xargs rm -f
tar -cf $(TARNAME)-headers.tar $(TARNAME)
rm -rf $(TARNAME)
diff --git a/tools/install.py b/tools/install.py
index f3fa4fe898157b..a03a8c219a952d 100755
--- a/tools/install.py
+++ b/tools/install.py
@@ -31,6 +31,7 @@ def try_unlink(path):
def try_symlink(source_path, link_path):
print 'symlinking %s -> %s' % (source_path, link_path)
+ try_mkdir_r(os.path.dirname(link_path))
try_unlink(link_path)
os.symlink(source_path, link_path)
@@ -106,6 +107,18 @@ def subdir_files(path, dest, action):
action(files, subdir + '/')
def files(action):
+ if os.environ.get('NODE_INSTALL_HEADERS_ONLY'):
+ header_files(action)
+ elif os.environ.get('NODE_INSTALL_NODE_ONLY'):
+ node_files(action)
+ elif os.environ.get('NODE_INSTALL_NPM_ONLY'):
+ npm_files(action)
+ else:
+ node_files(action)
+ header_files(action)
+ if 'true' == variables.get('node_install_headers'): npm_files(action)
+
+def node_files(action):
is_windows = sys.platform == 'win32'
exeext = '.exe' if is_windows else ''
@@ -124,11 +137,7 @@ def files(action):
else:
action(['doc/node.1'], 'share/man/man1/')
- if 'true' == variables.get('node_install_npm'): npm_files(action)
-
- headers(action)
-
-def headers(action):
+def header_files(action):
action([
'common.gypi',
'config.gypi',
@@ -184,12 +193,8 @@ def run(args):
cmd = args[1] if len(args) > 1 else 'install'
- if os.environ.get('HEADERS_ONLY'):
- if cmd == 'install': return headers(install)
- if cmd == 'uninstall': return headers(uninstall)
- else:
- if cmd == 'install': return files(install)
- if cmd == 'uninstall': return files(uninstall)
+ if cmd == 'install': return files(install)
+ if cmd == 'uninstall': return files(uninstall)
raise RuntimeError('Bad command: %s\n' % cmd)
diff --git a/tools/osx-pkg.pmdoc/01local-contents.xml b/tools/osx-pkg.pmdoc/01local-contents.xml
deleted file mode 100644
index ccbb4189961b0a..00000000000000
--- a/tools/osx-pkg.pmdoc/01local-contents.xml
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/tools/osx-pkg.pmdoc/01local.xml b/tools/osx-pkg.pmdoc/01local.xml
deleted file mode 100644
index 537b35508bb714..00000000000000
--- a/tools/osx-pkg.pmdoc/01local.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
- org.nodejs.node.pkg
- 1.0
-
-
-
- ../out/dist-osx/usr/local/
- /usr/local
-
-
-
-
- installTo.isRelativeType
- installTo
- locationType
- relocatable
- installFrom.path
- installTo.isAbsoluteType
- identifier
- parent
- installTo.path
- installFrom.isRelativeType
-
-
diff --git a/tools/osx-pkg.pmdoc/02npm-contents.xml b/tools/osx-pkg.pmdoc/02npm-contents.xml
deleted file mode 100644
index ccbb4189961b0a..00000000000000
--- a/tools/osx-pkg.pmdoc/02npm-contents.xml
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/tools/osx-pkg.pmdoc/02npm.xml b/tools/osx-pkg.pmdoc/02npm.xml
deleted file mode 100644
index fca97e5c27dd11..00000000000000
--- a/tools/osx-pkg.pmdoc/02npm.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
- org.nodejs.npm.pkg
- 1.0
-
-
-
- ../deps/npm
- /usr/local/lib/node_modules/npm
-
-
-
-
- installTo.path
- installFrom.isRelativeType
- installTo
- scripts.postinstall.isRelativeType
- parent
- installTo.isAbsoluteType
-
-
- osx-pkg-postinstall.sh
-
-
diff --git a/tools/osx-pkg.pmdoc/index.xml.tmpl b/tools/osx-pkg.pmdoc/index.xml.tmpl
deleted file mode 100644
index e3b14b2112d694..00000000000000
--- a/tools/osx-pkg.pmdoc/index.xml.tmpl
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
- Node.js
- /Users/nodejs/Desktop/node.pkg
- org.nodejs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ../doc/osx_installer_logo.png
- ../LICENSE
-
-
-
-
-
- - 01local.xml
- - 02npm.xml
- properties.title
- properties.userDomain
- properties.anywhereDomain
- properties.systemDomain
-
diff --git a/tools/osx-pkg/README.md b/tools/osx-pkg/README.md
new file mode 100644
index 00000000000000..3c8d47f6fa9311
--- /dev/null
+++ b/tools/osx-pkg/README.md
@@ -0,0 +1,46 @@
+## osx-pkg
+
+### Build
+
+Prerequisites:
+
+* Packages: http://s.sudre.free.fr/Software/Packages/about.html
+
+In the root folder:
+
+```bash
+make pkg
+```
+
+### Localization
+
+There are two files that can be localized in the OS X installer: the
+introduction, and the summary.
+
+1. Make sure you've installed Packages:
+http://s.sudre.free.fr/Software/Packages/about.html
+2. Duplicate the `strings/en` folder for reference, and rename the folder to
+the language you are localizing (ex. `fr`, `ru`, etc.)
+3. Translate `introduction.rtf` and `summary.rtf`. Do not modify the words
+`__nodeversion__` or `__npmversion__`, as these are automatically replaced
+by the build step with the Node.js and npm versions, respectively.
+4. In the root folder, run `make pre-pkg`. This will generate the
+files needed for Packages.
+5. Open `tools/osx-pkg/osx-pkg.pkgproj` in Packages. (Not
+`osx-pkg-out.pkgproj`, as this is a generated file)
+6. In Packages, go to the Presentation tab, and if not already selected,
+choose "Introduction" from the dropdown on the right-hand side.
+
+7. Press the "+" at the bottom right. This will add a new language entry. Click
+on the flag, and choose which language you are localizing.
+8. Click on the column next to the flag, and ensure "Relative to Project" is
+selected. It's a rectangle with the letter "R" inside of it.
+9. Click on the last column, which will currently have a dash in it, and
+press "Choose...".
+10. Locate the `introduction.rtf` file you translated, and choose it.
+Don't worry about the `introduction.out.rtf` file, as this is an autogenerated
+file, and is dealt with when compiling.
+11. In the dropdown that says "Introduction" at the top, choose "Conclusion"
+and repeat this process for the `conclusion.rtf` file.
+12. Save the project, and commit your changes. The generated files are
+automatically ignored by Git, so you don't have to worry about accidentally committing them in.
diff --git a/tools/osx-pkg/osx-pkg.pkgproj b/tools/osx-pkg/osx-pkg.pkgproj
new file mode 100755
index 00000000000000..f82291be21def9
--- /dev/null
+++ b/tools/osx-pkg/osx-pkg.pkgproj
@@ -0,0 +1,2089 @@
+
+
+
+
+ PACKAGES
+
+
+ PACKAGE_FILES
+
+ DEFAULT_INSTALL_LOCATION
+ /
+ HIERARCHY
+
+ CHILDREN
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 80
+ PATH
+ Utilities
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 80
+ PATH
+ Applications
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 509
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 80
+ PATH
+ Application Support
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Automator
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Documentation
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Filesystems
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Frameworks
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Input Methods
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Internet Plug-Ins
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ LaunchAgents
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ LaunchDaemons
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ PreferencePanes
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Preferences
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 80
+ PATH
+ Printers
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ PrivilegedHelperTools
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ QuickLook
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ QuickTime
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Screen Savers
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Scripts
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Services
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Widgets
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ Library
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Extensions
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ Library
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ System
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Shared
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 1023
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 80
+ PATH
+ Users
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ ../../out/dist-osx/node/usr/local
+ PATH_TYPE
+ 1
+ PERMISSIONS
+ 493
+ TYPE
+ 3
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ usr
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 2
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ /
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+ PAYLOAD_TYPE
+ 0
+ VERSION
+ 3
+
+ PACKAGE_SCRIPTS
+
+ RESOURCES
+
+
+ PACKAGE_SETTINGS
+
+ AUTHENTICATION
+ 1
+ CONCLUSION_ACTION
+ 0
+ IDENTIFIER
+ org.nodejs.node.pkg
+ NAME
+ Node.js
+ OVERWRITE_PERMISSIONS
+
+ VERSION
+ __nodeversion__
+
+ UUID
+ F15133E4-7140-467A-90C3-BB6B53A9C79E
+
+
+ PACKAGE_FILES
+
+ DEFAULT_INSTALL_LOCATION
+ /
+ HIERARCHY
+
+ CHILDREN
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 80
+ PATH
+ Utilities
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 80
+ PATH
+ Applications
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 509
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 80
+ PATH
+ Application Support
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Automator
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Documentation
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Filesystems
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Frameworks
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Input Methods
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Internet Plug-Ins
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ LaunchAgents
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ LaunchDaemons
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ PreferencePanes
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Preferences
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 80
+ PATH
+ Printers
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ PrivilegedHelperTools
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ QuickLook
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ QuickTime
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Screen Savers
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Scripts
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Services
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Widgets
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ Library
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Extensions
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ Library
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ System
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Shared
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 1023
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 80
+ PATH
+ Users
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ ../../out/dist-osx/npm/usr/local
+ PATH_TYPE
+ 1
+ PERMISSIONS
+ 493
+ TYPE
+ 3
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ usr
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 2
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ /
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+ PAYLOAD_TYPE
+ 0
+ VERSION
+ 3
+
+ PACKAGE_SCRIPTS
+
+ POSTINSTALL_PATH
+
+ PATH
+ scripts/npm_postinstall.sh
+ PATH_TYPE
+ 1
+
+ PREINSTALL_PATH
+
+ PATH
+ scripts/npm_preinstall.sh
+ PATH_TYPE
+ 1
+
+ RESOURCES
+
+
+ PACKAGE_SETTINGS
+
+ AUTHENTICATION
+ 1
+ CONCLUSION_ACTION
+ 0
+ IDENTIFIER
+ org.nodejs.npm.pkg
+ LOCATION
+ 0
+ NAME
+ npm
+ OVERWRITE_PERMISSIONS
+
+ VERSION
+ __npmversion__
+
+ TYPE
+ 0
+ UUID
+ 2D16FD51-8800-422D-9E9B-EC59D2157FE8
+
+
+ PACKAGE_FILES
+
+ DEFAULT_INSTALL_LOCATION
+ /
+ HIERARCHY
+
+ CHILDREN
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 80
+ PATH
+ Utilities
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 80
+ PATH
+ Applications
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 509
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 80
+ PATH
+ Application Support
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Automator
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Documentation
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Filesystems
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Frameworks
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Input Methods
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Internet Plug-Ins
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ LaunchAgents
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ LaunchDaemons
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ PreferencePanes
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Preferences
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 80
+ PATH
+ Printers
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ PrivilegedHelperTools
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ QuickLook
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ QuickTime
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Screen Savers
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Scripts
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Services
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Widgets
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ Library
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Extensions
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ Library
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ System
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ scripts/nodejs-run-uninstall
+ PATH_TYPE
+ 1
+ PERMISSIONS
+ 420
+ TYPE
+ 3
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ tmp
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 2
+ UID
+ 0
+
+
+ CHILDREN
+
+
+ CHILDREN
+
+ GID
+ 0
+ PATH
+ Shared
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 1023
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 80
+ PATH
+ Users
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+
+ GID
+ 0
+ PATH
+ /
+ PATH_TYPE
+ 0
+ PERMISSIONS
+ 493
+ TYPE
+ 1
+ UID
+ 0
+
+ PAYLOAD_TYPE
+ 0
+ VERSION
+ 3
+
+ PACKAGE_SCRIPTS
+
+ POSTINSTALL_PATH
+
+ PATH
+ scripts/uninstall.sh
+ PATH_TYPE
+ 1
+
+ RESOURCES
+
+
+ PACKAGE_SETTINGS
+
+ AUTHENTICATION
+ 1
+ CONCLUSION_ACTION
+ 0
+ IDENTIFIER
+ org.nodejs.uninstall.pkg
+ LOCATION
+ 0
+ NAME
+ uninstall
+ OVERWRITE_PERMISSIONS
+
+ VERSION
+ __nodeversion__
+
+ TYPE
+ 0
+ UUID
+ DC223951-DCCA-426C-8A88-B8F4A53FE9C6
+
+
+ PROJECT
+
+ PROJECT_COMMENTS
+
+ NOTES
+
+ PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1M
+ IDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQv
+ c3RyaWN0LmR0ZCI+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1l
+ cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
+ IGNoYXJzZXQ9VVRGLTgiPgo8bWV0YSBodHRwLWVxdWl2PSJDb250
+ ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4KPHRp
+ dGxlPjwvdGl0bGU+CjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29u
+ dGVudD0iQ29jb2EgSFRNTCBXcml0ZXIiPgo8bWV0YSBuYW1lPSJD
+ b2NvYVZlcnNpb24iIGNvbnRlbnQ9IjEzNDguMTciPgo8c3R5bGUg
+ dHlwZT0idGV4dC9jc3MiPgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5
+ Pgo8L2JvZHk+CjwvaHRtbD4K
+
+
+ PROJECT_PRESENTATION
+
+ BACKGROUND
+
+ ALIGNMENT
+ 2
+ BACKGROUND_PATH
+
+ PATH
+ ../../doc/osx_installer_logo.png
+ PATH_TYPE
+ 1
+
+ CUSTOM
+ 1
+ SCALING
+ 2
+
+ INSTALLATION TYPE
+
+ HIERARCHIES
+
+ INSTALLER
+
+ LIST
+
+
+ DESCRIPTION
+
+ OPTIONS
+
+ HIDDEN
+
+ STATE
+ 0
+
+ PACKAGE_UUID
+ F15133E4-7140-467A-90C3-BB6B53A9C79E
+ REQUIREMENTS
+
+ TITLE
+
+
+ LANGUAGE
+ English
+ VALUE
+ Install Node.js
+
+
+ TOOLTIP
+
+ TYPE
+ 0
+ UUID
+ 95681E96-6FC4-494B-8901-D85A1178E7D4
+
+
+ DESCRIPTION
+
+ OPTIONS
+
+ HIDDEN
+
+ STATE
+ 1
+
+ PACKAGE_UUID
+ 2D16FD51-8800-422D-9E9B-EC59D2157FE8
+ REQUIREMENTS
+
+ TITLE
+
+
+ LANGUAGE
+ English
+ VALUE
+ Install npm
+
+
+ TOOLTIP
+
+ TYPE
+ 0
+ UUID
+ E6975970-F10F-41C5-8FD8-8D816D281D47
+
+
+ REMOVED
+
+ DC223951-DCCA-426C-8A88-B8F4A53FE9C6
+
+ DESCRIPTION
+
+ OPTIONS
+
+ HIDDEN
+
+ STATE
+ 1
+
+ PACKAGE_UUID
+ DC223951-DCCA-426C-8A88-B8F4A53FE9C6
+ REQUIREMENTS
+
+ TITLE
+
+
+ LANGUAGE
+ English
+ VALUE
+ Uninstall Node.js
+
+
+ TOOLTIP
+
+ TYPE
+ 0
+ UUID
+ 41286F31-6755-4025-A7D1-04F7055B2AC8
+
+
+
+
+ INSTALLATION TYPE
+ 0
+ MODE
+ 0
+
+ INSTALLATION_STEPS
+
+
+ ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS
+ ICPresentationViewIntroductionController
+ INSTALLER_PLUGIN
+ Introduction
+ LIST_TITLE_KEY
+ InstallerSectionTitle
+
+
+ ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS
+ ICPresentationViewReadMeController
+ INSTALLER_PLUGIN
+ ReadMe
+ LIST_TITLE_KEY
+ InstallerSectionTitle
+
+
+ ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS
+ ICPresentationViewLicenseController
+ INSTALLER_PLUGIN
+ License
+ LIST_TITLE_KEY
+ InstallerSectionTitle
+
+
+ ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS
+ ICPresentationViewDestinationSelectController
+ INSTALLER_PLUGIN
+ TargetSelect
+ LIST_TITLE_KEY
+ InstallerSectionTitle
+
+
+ ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS
+ ICPresentationViewInstallationTypeController
+ INSTALLER_PLUGIN
+ PackageSelection
+ LIST_TITLE_KEY
+ InstallerSectionTitle
+
+
+ ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS
+ ICPresentationViewInstallationController
+ INSTALLER_PLUGIN
+ Install
+ LIST_TITLE_KEY
+ InstallerSectionTitle
+
+
+ ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS
+ ICPresentationViewSummaryController
+ INSTALLER_PLUGIN
+ Summary
+ LIST_TITLE_KEY
+ InstallerSectionTitle
+
+
+ INTRODUCTION
+
+ LOCALIZATIONS
+
+
+ LANGUAGE
+ English
+ VALUE
+
+ PATH
+ strings/en/introduction.rtf
+ PATH_TYPE
+ 1
+
+
+
+
+ LICENSE
+
+ KEYWORDS
+
+ LOCALIZATIONS
+
+
+ LANGUAGE
+ English
+ VALUE
+
+ PATH
+ strings/license.rtf
+ PATH_TYPE
+ 1
+
+
+
+ MODE
+ 0
+ TEMPLATE
+ BSD License
+
+ README
+
+ LOCALIZATIONS
+
+
+ SUMMARY
+
+ LOCALIZATIONS
+
+
+ LANGUAGE
+ English
+ VALUE
+
+ PATH
+ strings/en/summary.rtf
+ PATH_TYPE
+ 1
+
+
+
+
+ TITLE
+
+ LOCALIZATIONS
+
+
+ LANGUAGE
+ English
+ VALUE
+ Node.js
+
+
+
+
+ PROJECT_REQUIREMENTS
+
+ LIST
+
+ POSTINSTALL_PATH
+
+ PREINSTALL_PATH
+
+ RESOURCES
+
+ ROOT_VOLUME_ONLY
+
+
+ PROJECT_SETTINGS
+
+ ADVANCED_OPTIONS
+
+ BUILD_FORMAT
+ 0
+ BUILD_PATH
+
+ PATH
+ ../../
+ PATH_TYPE
+ 1
+
+ EXCLUDED_FILES
+
+
+ PATTERNS_ARRAY
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ .DS_Store
+ TYPE
+ 0
+
+
+ PROTECTED
+
+ PROXY_NAME
+ Remove .DS_Store files
+ PROXY_TOOLTIP
+ Remove ".DS_Store" files created by the Finder.
+ STATE
+
+
+
+ PATTERNS_ARRAY
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ .pbdevelopment
+ TYPE
+ 0
+
+
+ PROTECTED
+
+ PROXY_NAME
+ Remove .pbdevelopment files
+ PROXY_TOOLTIP
+ Remove ".pbdevelopment" files created by ProjectBuilder or Xcode.
+ STATE
+
+
+
+ PATTERNS_ARRAY
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ CVS
+ TYPE
+ 1
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ .cvsignore
+ TYPE
+ 0
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ .cvspass
+ TYPE
+ 0
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ .svn
+ TYPE
+ 1
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ .git
+ TYPE
+ 1
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ .gitignore
+ TYPE
+ 0
+
+
+ PROTECTED
+
+ PROXY_NAME
+ Remove SCM metadata
+ PROXY_TOOLTIP
+ Remove helper files and folders used by the CVS, SVN or Git Source Code Management systems.
+ STATE
+
+
+
+ PATTERNS_ARRAY
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ classes.nib
+ TYPE
+ 0
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ designable.db
+ TYPE
+ 0
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ info.nib
+ TYPE
+ 0
+
+
+ PROTECTED
+
+ PROXY_NAME
+ Optimize nib files
+ PROXY_TOOLTIP
+ Remove "classes.nib", "info.nib" and "designable.nib" files within .nib bundles.
+ STATE
+
+
+
+ PATTERNS_ARRAY
+
+
+ REGULAR_EXPRESSION
+
+ STRING
+ Resources Disabled
+ TYPE
+ 1
+
+
+ PROTECTED
+
+ PROXY_NAME
+ Remove Resources Disabled folders
+ PROXY_TOOLTIP
+ Remove "Resources Disabled" folders.
+ STATE
+
+
+
+ SEPARATOR
+
+
+
+ NAME
+ node-__nodeversion__
+
+
+ SHARED_GLOBAL_DATA
+
+ IC_REQUIREMENT_JAVASCRIPT_SHARED_SOURCE_CODE
+
+
+ TYPE
+ 0
+ VERSION
+ 2
+
+
diff --git a/tools/osx-pkg-postinstall.sh b/tools/osx-pkg/scripts/npm_postinstall.sh
similarity index 100%
rename from tools/osx-pkg-postinstall.sh
rename to tools/osx-pkg/scripts/npm_postinstall.sh
diff --git a/tools/osx-pkg/scripts/npm_preinstall.sh b/tools/osx-pkg/scripts/npm_preinstall.sh
new file mode 100644
index 00000000000000..41cf0ec2c32922
--- /dev/null
+++ b/tools/osx-pkg/scripts/npm_preinstall.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+# TODO Can this be done inside the .pmdoc?
+# TODO Can we extract $PREFIX from the installer?
+
+set -e
+
+rm -rf /usr/local/lib/node_modules/npm
diff --git a/tools/osx-pkg/scripts/uninstall.sh b/tools/osx-pkg/scripts/uninstall.sh
new file mode 100755
index 00000000000000..4a4553f8ba4a31
--- /dev/null
+++ b/tools/osx-pkg/scripts/uninstall.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+if [ -z "$DIR_PREFIX" ]; then
+ DIR_PREFIX=/usr/local
+fi
+
+if [ -f /tmp/nodejs-run-uninstall ]; then
+ rm -f $DIR_PREFIX/bin/node
+ rm -f $DIR_PREFIX/bin/npm
+ rm -rf $DIR_PREFIX/include/node
+ rm -f $DIR_PREFIX/lib/dtrace/node.d
+ rm -f $DIR_PREFIX/share/man/man1/node.1
+ rm -f $DIR_PREFIX/share/systemtap/tapset/node.stp
+ rm -f $DIR_PREFIX/share/doc/node/gdbinit
+
+ rm -rf $DIR_PREFIX/lib/node_modules/npm
+ if [ ! "$(ls -A $DIR_PREFIX/lib/node_modules 2> /dev/null)" ]; then
+ rm -rf $DIR_PREFIX/lib/node_modules
+ fi
+
+ rm -f /tmp/nodejs-run-uninstall
+fi
diff --git a/tools/osx-pkg/strings/en/introduction.rtf b/tools/osx-pkg/strings/en/introduction.rtf
new file mode 100644
index 00000000000000..05d3b6e36b39ce
--- /dev/null
+++ b/tools/osx-pkg/strings/en/introduction.rtf
@@ -0,0 +1,11 @@
+{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170
+\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
+{\colortbl;\red255\green255\blue255;}
+\vieww10800\viewh8400\viewkind0
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+
+\f0\fs26 \cf0 This package will install
+\b Node.js __nodeversion__
+\b0 and
+\b npm __npmversion__
+\b0 into /usr/local/}
\ No newline at end of file
diff --git a/tools/osx-pkg/strings/en/summary.rtf b/tools/osx-pkg/strings/en/summary.rtf
new file mode 100644
index 00000000000000..af898bd59fa722
--- /dev/null
+++ b/tools/osx-pkg/strings/en/summary.rtf
@@ -0,0 +1,18 @@
+{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170
+\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
+{\colortbl;\red255\green255\blue255;}
+\vieww10800\viewh8400\viewkind0
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+
+\f0\b\fs26 \cf0 Node.js __nodeversion__
+\b0 was installed at\
+\
+ /usr/local/bin/node\
+\
+If selected,
+\b npm __npmversion__
+\b0 was installed at\
+\
+ /usr/local/bin/npm\
+\
+Make sure that /usr/local/bin is in your $PATH.}
\ No newline at end of file
diff --git a/tools/test.py b/tools/test.py
index 7553da9a3c58c5..ab3da337bc6a24 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -310,7 +310,7 @@ def HasRun(self, output):
(duration.seconds + duration.days * 24 * 3600) * 10**6) / 10**6
logger.info(' ---')
- logger.info(' duration: %d.%ds' % (total_seconds, duration.microseconds / 1000))
+ logger.info(' duration_ms: %d.%d' % (total_seconds, duration.microseconds / 1000))
logger.info(' ...')
def Done(self):