Skip to content

Commit 63bcdc5

Browse files
committed
More complicated package name substitution for Mac deployment
1 parent 1a6c67c commit 63bcdc5

File tree

15 files changed

+156
-23
lines changed

15 files changed

+156
-23
lines changed

.travis.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,15 @@ matrix:
4141
- compiler: ": No wallet"
4242
env: HOST=x86_64-unknown-linux-gnu DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
4343
- compiler: ": Cross-Mac"
44-
env: HOST=x86_64-apple-darwin11 PACKAGES="cmake libcap-dev libz-dev libbz2-dev" BITCOIN_CONFIG="--enable-reduce-exports" OSX_SDK=10.9 GOAL="deploy"
44+
env: HOST=x86_64-apple-darwin11 PACKAGES="cmake imagemagick libcap-dev libz-dev libbz2-dev libffi-dev libtiff-tools python-dev python-pip" BITCOIN_CONFIG="--enable-reduce-exports" OSX_SDK=10.9 GOAL="deploy"
4545
exclude:
4646
- compiler: gcc
4747
install:
4848
- if [ -n "$PACKAGES" ]; then sudo rm -f /etc/apt/sources.list.d/travis_ci_zeromq3-source.list; fi
4949
- if [ -n "$PPA" ]; then travis_retry sudo add-apt-repository "$PPA" -y; fi
5050
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
5151
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
52+
- if [[ "$HOST" =~ apple ]]; then pip install --user cairosvg mac_alias ds_store; export PATH="$HOME/.local/bin:$PATH"; ( wget 'https://bitbucket.org/al45tair/ds_store/get/c80c23706eae.tar.gz' && tar -xzvpf c80c23706eae.tar.gz && cd al45tair-ds_store-c80c23706eae/ && python setup.py install --user; ) fi
5253
before_script:
5354
- unset CC; unset CXX
5455
- mkdir -p depends/SDKs depends/sdk-sources

Makefile.am

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,18 @@ BITCOIN_QT_BIN=$(top_builddir)/src/qt/bitcoin-qt$(EXEEXT)
1414
BITCOIN_CLI_BIN=$(top_builddir)/src/bitcoin-cli$(EXEEXT)
1515
BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EXEEXT)
1616

17+
empty :=
18+
space := $(empty) $(empty)
19+
1720
OSX_APP=Bitcoin-Qt.app
18-
OSX_DMG=Bitcoin-Core.dmg
21+
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
22+
OSX_DMG = $(OSX_VOLNAME).dmg
23+
OSX_BACKGROUND_SVG=background.svg
1924
OSX_BACKGROUND_IMAGE=background.tiff
25+
OSX_BACKGROUND_IMAGE_DPIS=36 72
26+
OSX_DSSTORE_GEN=$(top_srcdir)/contrib/macdeploy/custom_dsstore.py
2027
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
2128
OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist
22-
OSX_BASE_LPROJ_DIR=$(top_srcdir)/contrib/macdeploy/Base.lproj/InfoPlist.strings
2329
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns
2430
OSX_PLIST=$(top_srcdir)/share/qt/Info.plist #not installed
2531
OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW
@@ -31,9 +37,9 @@ WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \
3137
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp \
3238
$(top_srcdir)/doc/README_windows.txt
3339

34-
OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) $(OSX_BASE_LPROJ_DIR) \
35-
$(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_IMAGE) \
36-
$(top_srcdir)/contrib/macdeploy/DS_Store \
40+
OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) \
41+
$(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_SVG) \
42+
$(OSX_DSSTORE_GEN) \
3743
$(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \
3844
$(top_srcdir)/contrib/macdeploy/detached-sig-create.sh
3945

@@ -87,17 +93,20 @@ $(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(BITCOIN_QT_BIN)
8793
$(MKDIR_P) $(@D)
8894
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@
8995

90-
$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings: $(OSX_BASE_LPROJ_DIR)
96+
$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings:
9197
$(MKDIR_P) $(@D)
92-
$(INSTALL_DATA) $< $@
98+
echo '{ CFBundleDisplayName = "$(PACKAGE_NAME)"; CFBundleName = "$(PACKAGE_NAME)"; }' > $@
9399

94100
OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
95101
$(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \
96102
$(OSX_APP)/Contents/MacOS/Bitcoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings
97103

104+
osx_volname:
105+
echo $(OSX_VOLNAME) >$@
106+
98107
if BUILD_DARWIN
99108
$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING)
100-
$(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -translations-dir=$(QT_TRANSLATION_DIR) -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2
109+
$(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -translations-dir=$(QT_TRANSLATION_DIR) -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2 -volname $(OSX_VOLNAME)
101110

102111
deploydir: $(OSX_DMG)
103112
else
@@ -111,13 +120,17 @@ $(APP_DIST_DIR)/Applications:
111120
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt
112121

113122
$(OSX_DMG): $(APP_DIST_EXTRAS)
114-
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "Bitcoin-Core" -no-pad -r -dir-mode 0755 -apple -o $@ dist
123+
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -apple -o $@ dist
115124

116-
$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_IMAGE)
125+
dpi%.$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_SVG)
126+
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(CAIROSVG) -fpng -d$* - | $(IMAGEMAGICK_CONVERT) - $@
127+
OSX_BACKGROUND_IMAGE_DPIFILES := $(foreach dpi,$(OSX_BACKGROUND_IMAGE_DPIS),dpi$(dpi).$(OSX_BACKGROUND_IMAGE))
128+
$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE_DPIFILES)
117129
$(MKDIR_P) $(@D)
118-
$(INSTALL) $< $@
119-
$(APP_DIST_DIR)/.DS_Store: contrib/macdeploy/DS_Store
120-
$(INSTALL) $< $@
130+
$(TIFFCP) -c none $(OSX_BACKGROUND_IMAGE_DPIFILES) $@
131+
132+
$(APP_DIST_DIR)/.DS_Store: $(OSX_DSSTORE_GEN)
133+
$< "$@" "$(OSX_VOLNAME)"
121134

122135
$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
123136
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2

configure.ac

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,9 @@ case $host in
314314
AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
315315
AC_PATH_TOOL([OTOOL], [otool], otool)
316316
AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
317+
AC_PATH_PROGS([CAIROSVG], [cairosvg cairosvg-py3 cairosvg-py2],cairosvg)
318+
AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert)
319+
AC_PATH_PROGS([TIFFCP], [tiffcp],tiffcp)
317320

318321
dnl libtool will try to strip the static lib, which is a problem for
319322
dnl cross-builds because strip attempts to call a hard-coded ld,

contrib/gitian-descriptors/gitian-osx-signer.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ script: |
3333
SIGNED=bitcoin-osx-signed.dmg
3434
3535
tar -xf ${UNSIGNED}
36+
OSX_VOLNAME="$(cat osx_volname)"
3637
./detached-sig-apply.sh ${UNSIGNED} signature/osx
37-
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "Bitcoin-Core" -no-pad -r -apple -o uncompressed.dmg signed-app
38+
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "${OSX_VOLNAME}" -no-pad -r -apple -o uncompressed.dmg signed-app
3839
${WRAP_DIR}/dmg dmg uncompressed.dmg ${OUTDIR}/${SIGNED}

contrib/gitian-descriptors/gitian-osx.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,33 @@ packages:
1010
- "git-core"
1111
- "pkg-config"
1212
- "autoconf"
13+
- "libffi-dev"
14+
- "libtiff-tools"
1315
- "libtool"
1416
- "automake"
1517
- "faketime"
1618
- "bsdmainutils"
1719
- "cmake"
20+
- "imagemagick"
1821
- "libcap-dev"
22+
- "libxslt-dev"
1923
- "libz-dev"
2024
- "libbz2-dev"
25+
- "python-cairo"
26+
- "python-dev"
27+
- "python-pip"
28+
- "fonts-tuffy"
2129
reference_datetime: "2015-06-01 00:00:00"
2230
remotes:
2331
- "url": "https://github.com/bitcoin/bitcoin.git"
2432
"dir": "bitcoin"
2533
files:
2634
- "MacOSX10.9.sdk.tar.gz"
2735
script: |
36+
# FIXME: We should probably install these in some other (cachable) way, but the depends system doesn't appear to make native packages available to Core's build system itself?
37+
pip install --user mac_alias ds_store cairosvg cssselect tinycss lxml
38+
export PATH="$HOME/.local/bin:$PATH"
39+
2840
WRAP_DIR=$HOME/wrapped
2941
HOSTS="x86_64-apple-darwin11"
3042
CONFIGFLAGS="--enable-reduce-exports GENISOIMAGE=$WRAP_DIR/genisoimage"
@@ -107,8 +119,11 @@ script: |
107119
make ${MAKEOPTS}
108120
make install-strip
109121
122+
make osx_volname
110123
make deploydir
124+
OSX_VOLNAME="$(cat osx_volname)"
111125
mkdir -p unsigned-app-${i}
126+
cp osx_volname unsigned-app-${i}/
112127
cp contrib/macdeploy/detached-sig-apply.sh unsigned-app-${i}
113128
cp contrib/macdeploy/detached-sig-create.sh unsigned-app-${i}
114129
cp ${BASEPREFIX}/${i}/native/bin/dmg ${BASEPREFIX}/${i}/native/bin/genisoimage unsigned-app-${i}
@@ -120,7 +135,7 @@ script: |
120135
popd
121136
122137
make deploy
123-
${WRAP_DIR}/dmg dmg Bitcoin-Core.dmg ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg
138+
${WRAP_DIR}/dmg dmg "${OSX_VOLNAME}.dmg" ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg
124139
125140
cd installed
126141
find . -name "lib*.la" -delete

contrib/macdeploy/Base.lproj/InfoPlist.strings

Lines changed: 0 additions & 1 deletion
This file was deleted.

contrib/macdeploy/DS_Store

-10 KB
Binary file not shown.

contrib/macdeploy/background.png

-47.5 KB
Binary file not shown.

contrib/macdeploy/background.psd

-959 KB
Binary file not shown.

contrib/macdeploy/background.svg

Lines changed: 34 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)