mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
Merge bitcoin/bitcoin#24031: build: don't compress macOS DMG
1dd8cbfbc6
build: don't compress macOS DMG (fanquake) Pull request description: Skip compressing the macOS DMG, and drop related build steps and dependencies. Uncompressed the DMG increases from ~16mb to ~30mb, which compared to other software a user may download, (Firefox 125mb, VLC 52mb, Open Office 176mb), is still relatively small. When contrasted against the 100's of GB of blockchain data a node will download, an additional 15mb to get the release binary, isn't much additional overhead. Note that if / when we build with LTO enabled for releases, this size will shrink back down significantly again. `native_libdmg-hfsplus` is not maintained, and I doubt the DMG creation feature will ever be fixed. If at some point `xorrisofs` supports compressing dmgs, we could enable that. Guix Build on x86_64: ```bash 25b7c8bb7bc8ea014d43cebb844a842d2ac8d5a343039a820d24b649c9e6bc8a guix-build-1dd8cbfbc631/output/arm64-apple-darwin/SHA256SUMS.part 16beb5c52c9bf51b5ce9ef5a0d17c0038238a833383586a1b14acbca78533e4b guix-build-1dd8cbfbc631/output/arm64-apple-darwin/bitcoin-1dd8cbfbc631-arm64-apple-darwin-unsigned.dmg d8f89a61a7448d6334dbb3639386a7b6340542393933f35421a9e6dfc724e455 guix-build-1dd8cbfbc631/output/arm64-apple-darwin/bitcoin-1dd8cbfbc631-arm64-apple-darwin-unsigned.tar.gz 11617dc261ef602433f5bb29956a40a9085dbc783f519f75fbe06e80970148d0 guix-build-1dd8cbfbc631/output/arm64-apple-darwin/bitcoin-1dd8cbfbc631-arm64-apple-darwin.tar.gz aa8550d4a394d3161d14ec5e6012ed07354135afb022e905a1946785b4665664 guix-build-1dd8cbfbc631/output/dist-archive/bitcoin-1dd8cbfbc631.tar.gz 2b837f2f971a9738d0b7b8497f7ded740ef5e67c8baa7f30ca33e6b7d826eec8 guix-build-1dd8cbfbc631/output/x86_64-apple-darwin/SHA256SUMS.part db972b2c06dbde5525a3f9e6ceb9c20a8120bc9a6f15e1d852a4bfac09d88569 guix-build-1dd8cbfbc631/output/x86_64-apple-darwin/bitcoin-1dd8cbfbc631-x86_64-apple-darwin-unsigned.dmg 50fe990c3f9923ee92195125faf6517396e7c1b017a8f4f7d52e991ebce52f0c guix-build-1dd8cbfbc631/output/x86_64-apple-darwin/bitcoin-1dd8cbfbc631-x86_64-apple-darwin-unsigned.tar.gz 1d9022b0ae46ead41046c40f82291ce363760660a3cd6e6ef6a5b1128b90faef guix-build-1dd8cbfbc631/output/x86_64-apple-darwin/bitcoin-1dd8cbfbc631-x86_64-apple-darwin.tar.gz ``` Guix Build on arm64: ```bash ``` ACKs for top commit: Sjors: re-tACK1dd8cbfbc6
on Intel macOS laanwj: Build system changes code review ACK1dd8cbfbc6
, I don't know anything about MacOS application formats and their internals so do not have an opinion on the contents of this change. jarolrod: ACK1dd8cbfbc6
Tree-SHA512: 04c5bf78f26a9877777093ec4c50c457107bef59d720839ea5e7d7e4f7961dfee9f86b40cf791524a9e60e9e77403a797e9fcdae3849b60b759f9f66cc31b6ab
This commit is contained in:
commit
bfbce6cbfe
10 changed files with 7 additions and 111 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -77,7 +77,6 @@ src/qt/bitcoin-qt.includes
|
||||||
*.log
|
*.log
|
||||||
*.trs
|
*.trs
|
||||||
*.dmg
|
*.dmg
|
||||||
*.iso
|
|
||||||
|
|
||||||
*.json.h
|
*.json.h
|
||||||
*.raw.h
|
*.raw.h
|
||||||
|
|
|
@ -12,7 +12,7 @@ if ENABLE_MAN
|
||||||
SUBDIRS += doc/man
|
SUBDIRS += doc/man
|
||||||
endif
|
endif
|
||||||
.PHONY: deploy FORCE
|
.PHONY: deploy FORCE
|
||||||
.INTERMEDIATE: $(OSX_TEMP_ISO) $(COVERAGE_INFO)
|
.INTERMEDIATE: $(COVERAGE_INFO)
|
||||||
|
|
||||||
export PYTHONPATH
|
export PYTHONPATH
|
||||||
|
|
||||||
|
@ -37,7 +37,6 @@ space := $(empty) $(empty)
|
||||||
OSX_APP=Bitcoin-Qt.app
|
OSX_APP=Bitcoin-Qt.app
|
||||||
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
|
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
|
||||||
OSX_DMG = $(OSX_VOLNAME).dmg
|
OSX_DMG = $(OSX_VOLNAME).dmg
|
||||||
OSX_TEMP_ISO = $(OSX_DMG:.dmg=).temp.iso
|
|
||||||
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
|
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
|
||||||
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns
|
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns
|
||||||
OSX_PLIST=$(top_builddir)/share/qt/Info.plist #not installed
|
OSX_PLIST=$(top_builddir)/share/qt/Info.plist #not installed
|
||||||
|
@ -130,19 +129,15 @@ deploydir: $(OSX_DMG)
|
||||||
else !BUILD_DARWIN
|
else !BUILD_DARWIN
|
||||||
APP_DIST_DIR=$(top_builddir)/dist
|
APP_DIST_DIR=$(top_builddir)/dist
|
||||||
|
|
||||||
$(OSX_TEMP_ISO): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt
|
$(OSX_DMG): deploydir
|
||||||
$(XORRISOFS) -D -l -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -o $@ $(APP_DIST_DIR) -- $(if $(SOURCE_DATE_EPOCH),-volume_date all_file_dates =$(SOURCE_DATE_EPOCH))
|
$(XORRISOFS) -D -l -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -o $@ $(APP_DIST_DIR) -- $(if $(SOURCE_DATE_EPOCH),-volume_date all_file_dates =$(SOURCE_DATE_EPOCH))
|
||||||
|
|
||||||
$(OSX_DMG): $(OSX_TEMP_ISO)
|
|
||||||
$(DMG) dmg "$<" "$@"
|
|
||||||
|
|
||||||
$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
|
$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
|
||||||
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) $(OSX_VOLNAME) -translations-dir=$(QT_TRANSLATION_DIR)
|
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) $(OSX_VOLNAME) -translations-dir=$(QT_TRANSLATION_DIR)
|
||||||
|
|
||||||
deploydir: $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt
|
deploydir: $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt
|
||||||
endif !BUILD_DARWIN
|
endif !BUILD_DARWIN
|
||||||
|
|
||||||
appbundle: $(OSX_APP_BUILT)
|
|
||||||
deploy: $(OSX_DMG)
|
deploy: $(OSX_DMG)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -778,7 +778,6 @@ case $host in
|
||||||
AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], [install_name_tool])
|
AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], [install_name_tool])
|
||||||
AC_PATH_TOOL([OTOOL], [otool], [otool])
|
AC_PATH_TOOL([OTOOL], [otool], [otool])
|
||||||
AC_PATH_PROGS([XORRISOFS], [xorrisofs], [xorrisofs])
|
AC_PATH_PROGS([XORRISOFS], [xorrisofs], [xorrisofs])
|
||||||
AC_PATH_PROGS([DMG], [dmg], [dmg])
|
|
||||||
|
|
||||||
dnl libtool will try to strip the static lib, which is a problem for
|
dnl libtool will try to strip the static lib, which is a problem for
|
||||||
dnl cross-builds because strip attempts to call a hard-coded ld,
|
dnl cross-builds because strip attempts to call a hard-coded ld,
|
||||||
|
|
|
@ -79,19 +79,6 @@ prepend_to_search_env_var() {
|
||||||
export "${1}=${2}${!1:+:}${!1}"
|
export "${1}=${2}${!1:+:}${!1}"
|
||||||
}
|
}
|
||||||
|
|
||||||
case "$HOST" in
|
|
||||||
*darwin*)
|
|
||||||
# When targeting darwin, zlib is required by native_libdmg-hfsplus.
|
|
||||||
zlib_store_path=$(store_path "zlib")
|
|
||||||
zlib_static_store_path=$(store_path "zlib" static)
|
|
||||||
|
|
||||||
prepend_to_search_env_var LIBRARY_PATH "${zlib_static_store_path}/lib:${zlib_store_path}/lib"
|
|
||||||
prepend_to_search_env_var C_INCLUDE_PATH "${zlib_store_path}/include"
|
|
||||||
prepend_to_search_env_var CPLUS_INCLUDE_PATH "${zlib_store_path}/include"
|
|
||||||
prepend_to_search_env_var OBJC_INCLUDE_PATH "${zlib_store_path}/include"
|
|
||||||
prepend_to_search_env_var OBJCPLUS_INCLUDE_PATH "${zlib_store_path}/include"
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Set environment variables to point the CROSS toolchain to the right
|
# Set environment variables to point the CROSS toolchain to the right
|
||||||
# includes/libs for $HOST
|
# includes/libs for $HOST
|
||||||
case "$HOST" in
|
case "$HOST" in
|
||||||
|
@ -332,8 +319,7 @@ mkdir -p "$DISTSRC"
|
||||||
mkdir -p "unsigned-app-${HOST}"
|
mkdir -p "unsigned-app-${HOST}"
|
||||||
cp --target-directory="unsigned-app-${HOST}" \
|
cp --target-directory="unsigned-app-${HOST}" \
|
||||||
osx_volname \
|
osx_volname \
|
||||||
contrib/macdeploy/detached-sig-create.sh \
|
contrib/macdeploy/detached-sig-create.sh
|
||||||
"${BASEPREFIX}/${HOST}"/native/bin/dmg
|
|
||||||
mv --target-directory="unsigned-app-${HOST}" dist
|
mv --target-directory="unsigned-app-${HOST}" dist
|
||||||
(
|
(
|
||||||
cd "unsigned-app-${HOST}"
|
cd "unsigned-app-${HOST}"
|
||||||
|
|
|
@ -84,14 +84,11 @@ mkdir -p "$DISTSRC"
|
||||||
# Apply detached codesignatures to dist/ (in-place)
|
# Apply detached codesignatures to dist/ (in-place)
|
||||||
signapple apply dist/Bitcoin-Qt.app codesignatures/osx/dist
|
signapple apply dist/Bitcoin-Qt.app codesignatures/osx/dist
|
||||||
|
|
||||||
# Make an uncompressed DMG from dist/
|
# Make a DMG from dist/
|
||||||
xorrisofs -D -l -V "$(< osx_volname)" -no-pad -r -dir-mode 0755 \
|
xorrisofs -D -l -V "$(< osx_volname)" -no-pad -r -dir-mode 0755 \
|
||||||
-o uncompressed.dmg \
|
-o "${OUTDIR}/${DISTNAME}-${HOST}.dmg" \
|
||||||
dist \
|
dist \
|
||||||
-- -volume_date all_file_dates ="$SOURCE_DATE_EPOCH"
|
-- -volume_date all_file_dates ="$SOURCE_DATE_EPOCH"
|
||||||
|
|
||||||
# Compress uncompressed.dmg and output to OUTDIR
|
|
||||||
./dmg dmg uncompressed.dmg "${OUTDIR}/${DISTNAME}-${HOST}.dmg"
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -573,8 +573,6 @@ inspecting signatures in Mach-O binaries.")
|
||||||
bzip2
|
bzip2
|
||||||
gzip
|
gzip
|
||||||
xz
|
xz
|
||||||
zlib
|
|
||||||
(list zlib "static")
|
|
||||||
;; Build tools
|
;; Build tools
|
||||||
gnu-make
|
gnu-make
|
||||||
libtool
|
libtool
|
||||||
|
|
|
@ -95,16 +95,7 @@ redistributed.
|
||||||
|
|
||||||
[`xorrisofs`](https://www.gnu.org/software/xorriso/) is used to create the DMG.
|
[`xorrisofs`](https://www.gnu.org/software/xorriso/) is used to create the DMG.
|
||||||
|
|
||||||
`xorrisofs` cannot compress DMGs, so afterwards, the DMG tool from the
|
A background image is added to DMG files by inserting a `.DS_Store` during creation.
|
||||||
`libdmg-hfsplus` project is used to compress it. There are several bugs in this
|
|
||||||
tool and its maintainer has seemingly abandoned the project.
|
|
||||||
|
|
||||||
The DMG tool has the ability to create DMGs from scratch as well, but this functionality is
|
|
||||||
broken. Only the compression feature is currently used. Ideally, the creation could be fixed
|
|
||||||
and `xorrisofs` would no longer be necessary.
|
|
||||||
|
|
||||||
Background images and other features can be added to DMG files by inserting a
|
|
||||||
`.DS_Store` during creation.
|
|
||||||
|
|
||||||
As of OS X 10.9 Mavericks, using an Apple-blessed key to sign binaries is a requirement in
|
As of OS X 10.9 Mavericks, using an Apple-blessed key to sign binaries is a requirement in
|
||||||
order to satisfy the new Gatekeeper requirements. Because this private key cannot be
|
order to satisfy the new Gatekeeper requirements. Because this private key cannot be
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
package=native_libdmg-hfsplus
|
|
||||||
$(package)_version=7ac55ec64c96f7800d9818ce64c79670e7f02b67
|
|
||||||
$(package)_download_path=https://github.com/planetbeing/libdmg-hfsplus/archive
|
|
||||||
$(package)_file_name=$($(package)_version).tar.gz
|
|
||||||
$(package)_sha256_hash=56fbdc48ec110966342f0ecddd6f8f89202f4143ed2a3336e42bbf88f940850c
|
|
||||||
$(package)_build_subdir=build
|
|
||||||
$(package)_patches=remove-libcrypto-dependency.patch
|
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
|
||||||
patch -p1 < $($(package)_patch_dir)/remove-libcrypto-dependency.patch && \
|
|
||||||
mkdir build
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_config_cmds
|
|
||||||
$($(package)_cmake) -DCMAKE_C_FLAGS="$$($(1)_cflags) -Wl,--build-id=none" -DCMAKE_SKIP_RPATH="ON" -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_FIND_LIBRARY_SUFFIXES=".a" ..
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_build_cmds
|
|
||||||
$(MAKE) -C dmg
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
|
||||||
$(MAKE) DESTDIR=$($(package)_staging_dir) -C dmg install
|
|
||||||
endef
|
|
|
@ -26,7 +26,7 @@ usdt_linux_packages=systemtap
|
||||||
darwin_native_packages = native_ds_store native_mac_alias
|
darwin_native_packages = native_ds_store native_mac_alias
|
||||||
|
|
||||||
ifneq ($(build_os),darwin)
|
ifneq ($(build_os),darwin)
|
||||||
darwin_native_packages += native_cctools native_libtapi native_libdmg-hfsplus
|
darwin_native_packages += native_cctools native_libtapi
|
||||||
|
|
||||||
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
|
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
|
||||||
darwin_native_packages+= native_clang
|
darwin_native_packages+= native_clang
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
From 3e5fd3fb56bc9ff03beb535979e33dcf83fe1f70 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Cory Fields <cory-nospam-@coryfields.com>
|
|
||||||
Date: Thu, 8 May 2014 12:39:42 -0400
|
|
||||||
Subject: [PATCH] dmg: remove libcrypto dependency
|
|
||||||
|
|
||||||
---
|
|
||||||
dmg/CMakeLists.txt | 16 ----------------
|
|
||||||
1 file changed, 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dmg/CMakeLists.txt b/dmg/CMakeLists.txt
|
|
||||||
index eec62d6..3969f64 100644
|
|
||||||
--- a/dmg/CMakeLists.txt
|
|
||||||
+++ b/dmg/CMakeLists.txt
|
|
||||||
@@ -1,12 +1,5 @@
|
|
||||||
-INCLUDE(FindOpenSSL)
|
|
||||||
INCLUDE(FindZLIB)
|
|
||||||
|
|
||||||
-FIND_LIBRARY(CRYPTO_LIBRARIES crypto
|
|
||||||
- PATHS
|
|
||||||
- /usr/lib
|
|
||||||
- /usr/local/lib
|
|
||||||
- )
|
|
||||||
-
|
|
||||||
IF(NOT ZLIB_FOUND)
|
|
||||||
message(FATAL_ERROR "zlib is required for dmg!")
|
|
||||||
ENDIF(NOT ZLIB_FOUND)
|
|
||||||
@@ -18,15 +11,6 @@ link_directories(${PROJECT_BINARY_DIR}/common ${PROJECT_BINARY_DIR}/hfs)
|
|
||||||
|
|
||||||
add_library(dmg adc.c base64.c checksum.c dmgfile.c dmglib.c filevault.c io.c partition.c resources.c udif.c)
|
|
||||||
|
|
||||||
-IF(OPENSSL_FOUND)
|
|
||||||
- add_definitions(-DHAVE_CRYPT)
|
|
||||||
- include_directories(${OPENSSL_INCLUDE_DIR})
|
|
||||||
- target_link_libraries(dmg ${CRYPTO_LIBRARIES})
|
|
||||||
- IF(WIN32)
|
|
||||||
- TARGET_LINK_LIBRARIES(dmg gdi32)
|
|
||||||
- ENDIF(WIN32)
|
|
||||||
-ENDIF(OPENSSL_FOUND)
|
|
||||||
-
|
|
||||||
target_link_libraries(dmg common hfs z)
|
|
||||||
|
|
||||||
add_executable(dmg-bin dmg.c)
|
|
||||||
--
|
|
||||||
2.22.0
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue