Mercurial > hg
comparison tests/test-mac-packages.t @ 29027:db5084d27df5 stable
osx: create a modern package including manpages
Instead of using bdist_mpkg, we use the modern Apple-provided tools to
build an OS X Installer package directly. This has several advantages:
* Avoids bdist_mpkg which seems to be barely maintained and is hard to
use.
* Creates a single unified .pkg instead of a .mpkg.
* The package we produce is in the modern, single-file format instead of
a directory bundle that we have to zip up for download.
In addition, this way of building the package now correctly:
* Installs the manpages, bringing the `make osx`-generated package in
line with the official Mac packages we publish on the website.
* Installs files with the correct permissions instead of encoding the
UID of the user who happened to build the package.
Thanks to Augie for updating the test expectations.
author | Kevin Bullock <kbullock+mercurial@ringworld.org> |
---|---|
date | Wed, 27 Apr 2016 10:20:36 -0500 |
parents | f2549b0ba9ab |
children | 3c9066ed557c |
comparison
equal
deleted
inserted
replaced
29026:80f15aa32edd | 29027:db5084d27df5 |
---|---|
1 #require test-repo slow osx bdistmpkg | 1 #require test-repo slow osx osxpackaging |
2 $ OUTPUTDIR=`pwd` | 2 $ OUTPUTDIR=`pwd` |
3 $ export OUTPUTDIR | 3 $ export OUTPUTDIR |
4 $ KEEPMPKG=yes | 4 $ KEEPMPKG=yes |
5 $ export KEEPMPKG | 5 $ export KEEPMPKG |
6 | 6 |
7 $ cd "$TESTDIR"/.. | 7 $ cd "$TESTDIR"/.. |
8 $ rm -rf dist | |
8 $ make osx > $OUTPUTDIR/build.log 2>&1 | 9 $ make osx > $OUTPUTDIR/build.log 2>&1 |
9 $ cd $OUTPUTDIR | 10 $ cd $OUTPUTDIR |
10 $ ls -d *.dmg *.mpkg | 11 $ ls -d *.pkg |
11 mercurial-*-macosx10.*.dmg (glob) | 12 Mercurial-*-macosx10.*.pkg (glob) |
12 mercurial-*-macosx10.*.mpkg (glob) | 13 |
14 $ xar -xf Mercurial*.pkg | |
13 | 15 |
14 Gather list of all installed files: | 16 Gather list of all installed files: |
15 $ find *.mpkg -name Archive.bom | xargs lsbom > boms.txt | 17 $ lsbom mercurial.pkg/Bom > boms.txt |
16 | |
17 TODO: update to -f 1,2,3 when we're confident the installed owner of | |
18 our files is corect. Right now it looks like it's the id of the user | |
19 that builds the mpkg, which is probably slightly wrong. | |
20 | 18 |
21 Spot-check some randomly selected files: | 19 Spot-check some randomly selected files: |
22 $ grep bdiff boms.txt | cut -d ' ' -f 1,2 | 20 $ grep bdiff boms.txt | cut -d ' ' -f 1,2,3 |
23 ./mercurial/bdiff.so 100775 | 21 ./Library/Python/2.7/site-packages/mercurial/bdiff.so 100755 0/0 |
24 ./mercurial/pure/bdiff.py 100664 | 22 ./Library/Python/2.7/site-packages/mercurial/pure/bdiff.py 100644 0/0 |
25 ./mercurial/pure/bdiff.pyc 100664 | 23 ./Library/Python/2.7/site-packages/mercurial/pure/bdiff.pyc 100644 0/0 |
26 ./mercurial/pure/bdiff.pyo 100664 | 24 ./Library/Python/2.7/site-packages/mercurial/pure/bdiff.pyo 100644 0/0 |
27 TODO: man pages don't get installed | 25 $ egrep 'man[15]' boms.txt | cut -d ' ' -f 1,2,3 |
28 $ egrep 'man[15]' boms.txt | cut -d ' ' -f 1,2 | 26 ./usr/local/share/man/man1 40755 0/0 |
29 $ grep bser boms.txt | cut -d ' ' -f 1,2 | 27 ./usr/local/share/man/man1/hg.1 100644 0/0 |
30 ./hgext/fsmonitor/pywatchman/bser.so 100775 | 28 ./usr/local/share/man/man5 40755 0/0 |
31 ./hgext/fsmonitor/pywatchman/pybser.py 100664 | 29 ./usr/local/share/man/man5/hgignore.5 100644 0/0 |
32 ./hgext/fsmonitor/pywatchman/pybser.pyc 100664 | 30 ./usr/local/share/man/man5/hgrc.5 100644 0/0 |
33 ./hgext/fsmonitor/pywatchman/pybser.pyo 100664 | 31 $ grep bser boms.txt | cut -d ' ' -f 1,2,3 |
34 $ grep localrepo boms.txt | cut -d ' ' -f 1,2 | 32 ./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/bser.so 100755 0/0 |
35 ./mercurial/localrepo.py 100664 | 33 ./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/pybser.py 100644 0/0 |
36 ./mercurial/localrepo.pyc 100664 | 34 ./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/pybser.pyc 100644 0/0 |
37 ./mercurial/localrepo.pyo 100664 | 35 ./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/pybser.pyo 100644 0/0 |
38 $ grep '/hg ' boms.txt | cut -d ' ' -f 1,2 | 36 $ grep localrepo boms.txt | cut -d ' ' -f 1,2,3 |
39 ./hg 100775 | 37 ./Library/Python/2.7/site-packages/mercurial/localrepo.py 100644 0/0 |
38 ./Library/Python/2.7/site-packages/mercurial/localrepo.pyc 100644 0/0 | |
39 ./Library/Python/2.7/site-packages/mercurial/localrepo.pyo 100644 0/0 | |
40 $ grep '/hg ' boms.txt | cut -d ' ' -f 1,2,3 | |
41 ./usr/local/bin/hg 100755 0/0 | |
40 | 42 |
41 Note that we're not currently installing any /etc/mercurial stuff, | 43 Note that we're not currently installing any /etc/mercurial stuff, |
42 including merge-tool configurations. | 44 including merge-tool configurations. |