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.