Merge #8617: Include instructions to extract Mac OS X SDK on Linux using 7zip and SleuthKit

b729fcd Include instructions to extract Mac OS X SDK on Linux using 7zip and SleuthKit (Luke Dashjr)
This commit is contained in:
Pieter Wuille 2016-08-29 16:17:06 +02:00 committed by Alexander Block
parent 707e2945a4
commit e7da915844
2 changed files with 45 additions and 1 deletions

View File

@ -0,0 +1,29 @@
#!/bin/bash
set -e
INPUTFILE="Xcode_7.3.1.dmg"
HFSFILENAME="5.hfs"
SDKDIR="Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk"
7z x "${INPUTFILE}" "${HFSFILENAME}"
SDKNAME="$(basename "${SDKDIR}")"
SDKDIRINODE=$(ifind -n "${SDKDIR}" "${HFSFILENAME}")
fls "${HFSFILENAME}" -rpF ${SDKDIRINODE} |
while read type inode filename; do
inode="${inode::-1}"
if [ "${filename:0:14}" = "usr/share/man/" ]; then
continue
fi
filename="${SDKNAME}/$filename"
echo "Extracting $filename ..."
mkdir -p "$(dirname "$filename")"
if [ "$type" = "l/l" ]; then
ln -s "$(icat "${HFSFILENAME}" $inode)" "$filename"
else
icat "${HFSFILENAME}" $inode >"$filename"
fi
done
echo "Building ${SDKNAME}.tar.gz ..."
MTIME="$(istat "${HFSFILENAME}" "${SDKDIRINODE}" | perl -nle 'm/Content Modified:\s+(.*?)\s\(/ && print $1')"
find "${SDKNAME}" | sort | tar --no-recursion --mtime="${MTIME}" --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > "${SDKNAME}.tar.gz"
echo 'All done!'

View File

@ -36,11 +36,26 @@ Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.1
```
Unfortunately, the usual linux tools (7zip, hpmount, loopback mount) are incapable of opening this file.
To create a tarball suitable for Gitian input, mount the dmg in OS X, then create it with:
To create a tarball suitable for Gitian input, there are two options:
Using Mac OS X, you can mount the dmg, and then create it with:
```
$ hdiutil attach Xcode_7.3.1.dmg
$ tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.11.sdk.tar.gz MacOSX10.11.sdk
```
Alternatively, you can use 7zip and SleuthKit to extract the files one by one.
The script contrib/macdeploy/extract-osx-sdk.sh automates this. First ensure
the dmg file is in the current directory, and then run the script. You may wish
to delete the intermediate 5.hfs file and MacOSX10.11.sdk (the directory) when
you've confirmed the extraction succeeded.
```bash
apt-get install p7zip-full sleuthkit
contrib/macdeploy/extract-osx-sdk.sh
rm -rf 5.hfs MacOSX10.11.sdk
```
The Gitian descriptors build 2 sets of files: Linux tools, then Apple binaries
which are created using these tools. The build process has been designed to
avoid including the SDK's files in Gitian's outputs. All interim tarballs are