summaryrefslogtreecommitdiffstats
path: root/build/unix/build-hfsplus/build-hfsplus.sh
diff options
context:
space:
mode:
Diffstat (limited to 'build/unix/build-hfsplus/build-hfsplus.sh')
-rwxr-xr-xbuild/unix/build-hfsplus/build-hfsplus.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/build/unix/build-hfsplus/build-hfsplus.sh b/build/unix/build-hfsplus/build-hfsplus.sh
new file mode 100755
index 0000000000..5d3417e63e
--- /dev/null
+++ b/build/unix/build-hfsplus/build-hfsplus.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+# hfsplus needs to be rebuilt when changing the clang version used to build it.
+# Until bug 1471905 is addressed, increase the following number
+# when that happens: 1
+
+set -e
+set -x
+
+hfplus_version=540.1.linux3
+dirname=diskdev_cmds-${hfplus_version}
+make_flags="-j$(nproc)"
+
+root_dir="$1"
+if [ -z "$root_dir" -o ! -d "$root_dir" ]; then
+ root_dir=$(mktemp -d)
+fi
+cd $root_dir
+
+if test -z $TMPDIR; then
+ TMPDIR=/tmp/
+fi
+
+# Build
+cd $dirname
+# We want to statically link against libcrypto. On CentOS, that requires zlib
+# and libdl, because of FIPS functions pulling in more than necessary from
+# libcrypto (only SHA1 functions are used), but not on Debian, thus
+# --as-needed.
+patch -p1 << 'EOF'
+--- a/newfs_hfs.tproj/Makefile.lnx
++++ b/newfs_hfs.tproj/Makefile.lnx
+@@ -6,3 +6,3 @@
+ newfs_hfs: $(OFILES)
+- ${CC} ${CFLAGS} ${LDFLAGS} -o newfs_hfs ${OFILES} -lcrypto
++ ${CC} ${CFLAGS} ${LDFLAGS} -o newfs_hfs ${OFILES} -Wl,-Bstatic -lcrypto -Wl,-Bdynamic,--as-needed,-lz,-ldl
+
+EOF
+grep -rl sysctl.h . | xargs sed -i /sysctl.h/d
+make $make_flags || exit 1
+cd ..
+
+mkdir hfsplus
+cp $dirname/newfs_hfs.tproj/newfs_hfs hfsplus/newfs_hfs
+## XXX fsck_hfs is unused, but is small and built from the package.
+cp $dirname/fsck_hfs.tproj/fsck_hfs hfsplus/fsck_hfs
+
+# Make a package of the built utils
+cd $root_dir
+tar caf $root_dir/hfsplus.tar.zst hfsplus