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:
commit
de07fdcf77
2 changed files with 45 additions and 1 deletions
29
contrib/macdeploy/extract-osx-sdk.sh
Executable file
29
contrib/macdeploy/extract-osx-sdk.sh
Executable 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!'
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue