mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-09 19:37:27 -03: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
|
||||
*.trs
|
||||
*.dmg
|
||||
*.iso
|
||||
|
||||
*.json.h
|
||||
*.raw.h
|
||||
|
|
|
@ -12,7 +12,7 @@ if ENABLE_MAN
|
|||
SUBDIRS += doc/man
|
||||
endif
|
||||
.PHONY: deploy FORCE
|
||||
.INTERMEDIATE: $(OSX_TEMP_ISO) $(COVERAGE_INFO)
|
||||
.INTERMEDIATE: $(COVERAGE_INFO)
|
||||
|
||||
export PYTHONPATH
|
||||
|
||||
|
@ -37,7 +37,6 @@ space := $(empty) $(empty)
|
|||
OSX_APP=Bitcoin-Qt.app
|
||||
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
|
||||
OSX_DMG = $(OSX_VOLNAME).dmg
|
||||
OSX_TEMP_ISO = $(OSX_DMG:.dmg=).temp.iso
|
||||
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
|
||||
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns
|
||||
OSX_PLIST=$(top_builddir)/share/qt/Info.plist #not installed
|
||||
|
@ -130,19 +129,15 @@ deploydir: $(OSX_DMG)
|
|||
else !BUILD_DARWIN
|
||||
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))
|
||||
|
||||
$(OSX_DMG): $(OSX_TEMP_ISO)
|
||||
$(DMG) dmg "$<" "$@"
|
||||
|
||||
$(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)
|
||||
|
||||
deploydir: $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt
|
||||
endif !BUILD_DARWIN
|
||||
|
||||
appbundle: $(OSX_APP_BUILT)
|
||||
deploy: $(OSX_DMG)
|
||||
endif
|
||||
|
||||
|
|
|
@ -778,7 +778,6 @@ case $host in
|
|||
AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], [install_name_tool])
|
||||
AC_PATH_TOOL([OTOOL], [otool], [otool])
|
||||
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 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}"
|
||||
}
|
||||
|
||||
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
|
||||
# includes/libs for $HOST
|
||||
case "$HOST" in
|
||||
|
@ -332,8 +319,7 @@ mkdir -p "$DISTSRC"
|
|||
mkdir -p "unsigned-app-${HOST}"
|
||||
cp --target-directory="unsigned-app-${HOST}" \
|
||||
osx_volname \
|
||||
contrib/macdeploy/detached-sig-create.sh \
|
||||
"${BASEPREFIX}/${HOST}"/native/bin/dmg
|
||||
contrib/macdeploy/detached-sig-create.sh
|
||||
mv --target-directory="unsigned-app-${HOST}" dist
|
||||
(
|
||||
cd "unsigned-app-${HOST}"
|
||||
|
|
|
@ -84,14 +84,11 @@ mkdir -p "$DISTSRC"
|
|||
# Apply detached codesignatures to dist/ (in-place)
|
||||
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 \
|
||||
-o uncompressed.dmg \
|
||||
-o "${OUTDIR}/${DISTNAME}-${HOST}.dmg" \
|
||||
dist \
|
||||
-- -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
|
||||
|
|
|
@ -573,8 +573,6 @@ inspecting signatures in Mach-O binaries.")
|
|||
bzip2
|
||||
gzip
|
||||
xz
|
||||
zlib
|
||||
(list zlib "static")
|
||||
;; Build tools
|
||||
gnu-make
|
||||
libtool
|
||||
|
|
|
@ -95,16 +95,7 @@ redistributed.
|
|||
|
||||
[`xorrisofs`](https://www.gnu.org/software/xorriso/) is used to create the DMG.
|
||||
|
||||
`xorrisofs` cannot compress DMGs, so afterwards, the DMG tool from the
|
||||
`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.
|
||||
A background image is 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
|
||||
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
|
||||
|
||||
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)),)
|
||||
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…
Reference in a new issue