More complicated package name substitution for Mac deployment
This commit is contained in:
parent
1a6c67c8f5
commit
63bcdc5227
15 changed files with 156 additions and 23 deletions
|
@ -41,7 +41,7 @@ matrix:
|
||||||
- compiler: ": No wallet"
|
- compiler: ": No wallet"
|
||||||
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"
|
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"
|
||||||
- compiler: ": Cross-Mac"
|
- compiler: ": Cross-Mac"
|
||||||
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"
|
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"
|
||||||
exclude:
|
exclude:
|
||||||
- compiler: gcc
|
- compiler: gcc
|
||||||
install:
|
install:
|
||||||
|
@ -49,6 +49,7 @@ install:
|
||||||
- if [ -n "$PPA" ]; then travis_retry sudo add-apt-repository "$PPA" -y; fi
|
- if [ -n "$PPA" ]; then travis_retry sudo add-apt-repository "$PPA" -y; fi
|
||||||
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
|
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
|
||||||
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
|
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
|
||||||
|
- 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
|
||||||
before_script:
|
before_script:
|
||||||
- unset CC; unset CXX
|
- unset CC; unset CXX
|
||||||
- mkdir -p depends/SDKs depends/sdk-sources
|
- mkdir -p depends/SDKs depends/sdk-sources
|
||||||
|
|
39
Makefile.am
39
Makefile.am
|
@ -14,12 +14,18 @@ BITCOIN_QT_BIN=$(top_builddir)/src/qt/bitcoin-qt$(EXEEXT)
|
||||||
BITCOIN_CLI_BIN=$(top_builddir)/src/bitcoin-cli$(EXEEXT)
|
BITCOIN_CLI_BIN=$(top_builddir)/src/bitcoin-cli$(EXEEXT)
|
||||||
BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EXEEXT)
|
BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EXEEXT)
|
||||||
|
|
||||||
|
empty :=
|
||||||
|
space := $(empty) $(empty)
|
||||||
|
|
||||||
OSX_APP=Bitcoin-Qt.app
|
OSX_APP=Bitcoin-Qt.app
|
||||||
OSX_DMG=Bitcoin-Core.dmg
|
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
|
||||||
|
OSX_DMG = $(OSX_VOLNAME).dmg
|
||||||
|
OSX_BACKGROUND_SVG=background.svg
|
||||||
OSX_BACKGROUND_IMAGE=background.tiff
|
OSX_BACKGROUND_IMAGE=background.tiff
|
||||||
|
OSX_BACKGROUND_IMAGE_DPIS=36 72
|
||||||
|
OSX_DSSTORE_GEN=$(top_srcdir)/contrib/macdeploy/custom_dsstore.py
|
||||||
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
|
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
|
||||||
OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist
|
OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist
|
||||||
OSX_BASE_LPROJ_DIR=$(top_srcdir)/contrib/macdeploy/Base.lproj/InfoPlist.strings
|
|
||||||
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_srcdir)/share/qt/Info.plist #not installed
|
OSX_PLIST=$(top_srcdir)/share/qt/Info.plist #not installed
|
||||||
OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW
|
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 \
|
||||||
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp \
|
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp \
|
||||||
$(top_srcdir)/doc/README_windows.txt
|
$(top_srcdir)/doc/README_windows.txt
|
||||||
|
|
||||||
OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) $(OSX_BASE_LPROJ_DIR) \
|
OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) \
|
||||||
$(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_IMAGE) \
|
$(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_SVG) \
|
||||||
$(top_srcdir)/contrib/macdeploy/DS_Store \
|
$(OSX_DSSTORE_GEN) \
|
||||||
$(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \
|
$(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \
|
||||||
$(top_srcdir)/contrib/macdeploy/detached-sig-create.sh
|
$(top_srcdir)/contrib/macdeploy/detached-sig-create.sh
|
||||||
|
|
||||||
|
@ -87,17 +93,20 @@ $(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(BITCOIN_QT_BIN)
|
||||||
$(MKDIR_P) $(@D)
|
$(MKDIR_P) $(@D)
|
||||||
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@
|
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@
|
||||||
|
|
||||||
$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings: $(OSX_BASE_LPROJ_DIR)
|
$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings:
|
||||||
$(MKDIR_P) $(@D)
|
$(MKDIR_P) $(@D)
|
||||||
$(INSTALL_DATA) $< $@
|
echo '{ CFBundleDisplayName = "$(PACKAGE_NAME)"; CFBundleName = "$(PACKAGE_NAME)"; }' > $@
|
||||||
|
|
||||||
OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
|
OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
|
||||||
$(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \
|
$(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \
|
||||||
$(OSX_APP)/Contents/MacOS/Bitcoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings
|
$(OSX_APP)/Contents/MacOS/Bitcoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings
|
||||||
|
|
||||||
|
osx_volname:
|
||||||
|
echo $(OSX_VOLNAME) >$@
|
||||||
|
|
||||||
if BUILD_DARWIN
|
if BUILD_DARWIN
|
||||||
$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING)
|
$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING)
|
||||||
$(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -translations-dir=$(QT_TRANSLATION_DIR) -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2
|
$(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)
|
||||||
|
|
||||||
deploydir: $(OSX_DMG)
|
deploydir: $(OSX_DMG)
|
||||||
else
|
else
|
||||||
|
@ -111,13 +120,17 @@ $(APP_DIST_DIR)/Applications:
|
||||||
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt
|
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt
|
||||||
|
|
||||||
$(OSX_DMG): $(APP_DIST_EXTRAS)
|
$(OSX_DMG): $(APP_DIST_EXTRAS)
|
||||||
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "Bitcoin-Core" -no-pad -r -dir-mode 0755 -apple -o $@ dist
|
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -apple -o $@ dist
|
||||||
|
|
||||||
$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_IMAGE)
|
dpi%.$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_SVG)
|
||||||
|
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(CAIROSVG) -fpng -d$* - | $(IMAGEMAGICK_CONVERT) - $@
|
||||||
|
OSX_BACKGROUND_IMAGE_DPIFILES := $(foreach dpi,$(OSX_BACKGROUND_IMAGE_DPIS),dpi$(dpi).$(OSX_BACKGROUND_IMAGE))
|
||||||
|
$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE_DPIFILES)
|
||||||
$(MKDIR_P) $(@D)
|
$(MKDIR_P) $(@D)
|
||||||
$(INSTALL) $< $@
|
$(TIFFCP) -c none $(OSX_BACKGROUND_IMAGE_DPIFILES) $@
|
||||||
$(APP_DIST_DIR)/.DS_Store: contrib/macdeploy/DS_Store
|
|
||||||
$(INSTALL) $< $@
|
$(APP_DIST_DIR)/.DS_Store: $(OSX_DSSTORE_GEN)
|
||||||
|
$< "$@" "$(OSX_VOLNAME)"
|
||||||
|
|
||||||
$(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) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2
|
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2
|
||||||
|
|
|
@ -314,6 +314,9 @@ 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([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
|
AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
|
||||||
|
AC_PATH_PROGS([CAIROSVG], [cairosvg cairosvg-py3 cairosvg-py2],cairosvg)
|
||||||
|
AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert)
|
||||||
|
AC_PATH_PROGS([TIFFCP], [tiffcp],tiffcp)
|
||||||
|
|
||||||
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,
|
||||||
|
|
|
@ -33,6 +33,7 @@ script: |
|
||||||
SIGNED=bitcoin-osx-signed.dmg
|
SIGNED=bitcoin-osx-signed.dmg
|
||||||
|
|
||||||
tar -xf ${UNSIGNED}
|
tar -xf ${UNSIGNED}
|
||||||
|
OSX_VOLNAME="$(cat osx_volname)"
|
||||||
./detached-sig-apply.sh ${UNSIGNED} signature/osx
|
./detached-sig-apply.sh ${UNSIGNED} signature/osx
|
||||||
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "Bitcoin-Core" -no-pad -r -apple -o uncompressed.dmg signed-app
|
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "${OSX_VOLNAME}" -no-pad -r -apple -o uncompressed.dmg signed-app
|
||||||
${WRAP_DIR}/dmg dmg uncompressed.dmg ${OUTDIR}/${SIGNED}
|
${WRAP_DIR}/dmg dmg uncompressed.dmg ${OUTDIR}/${SIGNED}
|
||||||
|
|
|
@ -10,14 +10,22 @@ packages:
|
||||||
- "git-core"
|
- "git-core"
|
||||||
- "pkg-config"
|
- "pkg-config"
|
||||||
- "autoconf"
|
- "autoconf"
|
||||||
|
- "libffi-dev"
|
||||||
|
- "libtiff-tools"
|
||||||
- "libtool"
|
- "libtool"
|
||||||
- "automake"
|
- "automake"
|
||||||
- "faketime"
|
- "faketime"
|
||||||
- "bsdmainutils"
|
- "bsdmainutils"
|
||||||
- "cmake"
|
- "cmake"
|
||||||
|
- "imagemagick"
|
||||||
- "libcap-dev"
|
- "libcap-dev"
|
||||||
|
- "libxslt-dev"
|
||||||
- "libz-dev"
|
- "libz-dev"
|
||||||
- "libbz2-dev"
|
- "libbz2-dev"
|
||||||
|
- "python-cairo"
|
||||||
|
- "python-dev"
|
||||||
|
- "python-pip"
|
||||||
|
- "fonts-tuffy"
|
||||||
reference_datetime: "2015-06-01 00:00:00"
|
reference_datetime: "2015-06-01 00:00:00"
|
||||||
remotes:
|
remotes:
|
||||||
- "url": "https://github.com/bitcoin/bitcoin.git"
|
- "url": "https://github.com/bitcoin/bitcoin.git"
|
||||||
|
@ -25,6 +33,10 @@ remotes:
|
||||||
files:
|
files:
|
||||||
- "MacOSX10.9.sdk.tar.gz"
|
- "MacOSX10.9.sdk.tar.gz"
|
||||||
script: |
|
script: |
|
||||||
|
# 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?
|
||||||
|
pip install --user mac_alias ds_store cairosvg cssselect tinycss lxml
|
||||||
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
|
||||||
WRAP_DIR=$HOME/wrapped
|
WRAP_DIR=$HOME/wrapped
|
||||||
HOSTS="x86_64-apple-darwin11"
|
HOSTS="x86_64-apple-darwin11"
|
||||||
CONFIGFLAGS="--enable-reduce-exports GENISOIMAGE=$WRAP_DIR/genisoimage"
|
CONFIGFLAGS="--enable-reduce-exports GENISOIMAGE=$WRAP_DIR/genisoimage"
|
||||||
|
@ -107,8 +119,11 @@ script: |
|
||||||
make ${MAKEOPTS}
|
make ${MAKEOPTS}
|
||||||
make install-strip
|
make install-strip
|
||||||
|
|
||||||
|
make osx_volname
|
||||||
make deploydir
|
make deploydir
|
||||||
|
OSX_VOLNAME="$(cat osx_volname)"
|
||||||
mkdir -p unsigned-app-${i}
|
mkdir -p unsigned-app-${i}
|
||||||
|
cp osx_volname unsigned-app-${i}/
|
||||||
cp contrib/macdeploy/detached-sig-apply.sh unsigned-app-${i}
|
cp contrib/macdeploy/detached-sig-apply.sh unsigned-app-${i}
|
||||||
cp contrib/macdeploy/detached-sig-create.sh unsigned-app-${i}
|
cp contrib/macdeploy/detached-sig-create.sh unsigned-app-${i}
|
||||||
cp ${BASEPREFIX}/${i}/native/bin/dmg ${BASEPREFIX}/${i}/native/bin/genisoimage unsigned-app-${i}
|
cp ${BASEPREFIX}/${i}/native/bin/dmg ${BASEPREFIX}/${i}/native/bin/genisoimage unsigned-app-${i}
|
||||||
|
@ -120,7 +135,7 @@ script: |
|
||||||
popd
|
popd
|
||||||
|
|
||||||
make deploy
|
make deploy
|
||||||
${WRAP_DIR}/dmg dmg Bitcoin-Core.dmg ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg
|
${WRAP_DIR}/dmg dmg "${OSX_VOLNAME}.dmg" ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg
|
||||||
|
|
||||||
cd installed
|
cd installed
|
||||||
find . -name "lib*.la" -delete
|
find . -name "lib*.la" -delete
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
{ CFBundleDisplayName = "Bitcoin Core"; CFBundleName = "Bitcoin Core"; }
|
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 48 KiB |
Binary file not shown.
34
contrib/macdeploy/background.svg
Normal file
34
contrib/macdeploy/background.svg
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="1000pt" height="640pt" viewBox="0 0 1000 640" preserveAspectRatio="xMidYMid meet">
|
||||||
|
<!-- kate: space-indent off;
|
||||||
|
Copyright (c) 2011-2013 The Bitcoin Core developers
|
||||||
|
Distributed under the MIT software license, see the accompanying
|
||||||
|
file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
-->
|
||||||
|
<style type="text/css"><![CDATA[
|
||||||
|
text {
|
||||||
|
font-family: "Tuffy";
|
||||||
|
font-size: 86px;
|
||||||
|
fill: gray;
|
||||||
|
text-anchor: middle;
|
||||||
|
}
|
||||||
|
]]></style>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||||
|
<stop offset="0%" style="stop-color:rgb(239,239,239);stop-opacity:1" />
|
||||||
|
<stop offset="33%" style="stop-color:rgb(239,239,239);stop-opacity:1" />
|
||||||
|
<stop offset="80%" style="stop-color:rgb(205,205,205);stop-opacity:1" />
|
||||||
|
<stop offset="100%" style="stop-color:rgb(204,204,204);stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<rect width="1000" height="640" style="fill:url(#gradient);stroke-width:0" />
|
||||||
|
<g transform="translate(500,0) scale(0.9, 1)">
|
||||||
|
<text x="0" y="114">PACKAGE_NAME</text>
|
||||||
|
</g>
|
||||||
|
<g transform="translate(0.000000,640.000000) scale(0.100000,-0.100000)"
|
||||||
|
fill="#000000" stroke="none">
|
||||||
|
<path d="M4995 3705 c-24 -23 -25 -29 -25 -165 l0 -140 -306 0 -306 0 -29 -29 c-29 -29 -29 -31 -29 -141 0 -110 0 -112 29 -141 l29 -29 306 0 306 0 0 -140 c0 -136 1 -142 25 -165 16 -17 35 -25 57 -25 29 0 72 32 306 226 180 149 274 233 278 250 13 53 -2 70 -278 299 -235 194 -277 225 -306 225 -22 0 -41 -8 -57 -25z" fixlter="url(#glow)"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 136 KiB |
60
contrib/macdeploy/custom_dsstore.py
Executable file
60
contrib/macdeploy/custom_dsstore.py
Executable file
|
@ -0,0 +1,60 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# Copyright (c) 2013-2015 The Bitcoin Core developers
|
||||||
|
# Distributed under the MIT software license, see the accompanying
|
||||||
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
import biplist
|
||||||
|
from ds_store import DSStore
|
||||||
|
from mac_alias import Alias
|
||||||
|
import sys
|
||||||
|
|
||||||
|
output_file = sys.argv[1]
|
||||||
|
package_name_ns = sys.argv[2]
|
||||||
|
|
||||||
|
ds = DSStore.open(output_file, 'w+')
|
||||||
|
ds['.']['bwsp'] = {
|
||||||
|
'ShowStatusBar': False,
|
||||||
|
'WindowBounds': '{{300, 280}, {500, 343}}',
|
||||||
|
'ContainerShowSidebar': False,
|
||||||
|
'SidebarWidth': 0,
|
||||||
|
'ShowTabView': False,
|
||||||
|
'PreviewPaneVisibility': False,
|
||||||
|
'ShowToolbar': False,
|
||||||
|
'ShowSidebar': False,
|
||||||
|
'ShowPathbar': True
|
||||||
|
}
|
||||||
|
|
||||||
|
icvp = {
|
||||||
|
'gridOffsetX': 0.0,
|
||||||
|
'textSize': 12.0,
|
||||||
|
'viewOptionsVersion': 1,
|
||||||
|
'backgroundImageAlias': '\x00\x00\x00\x00\x02\x1e\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x94\\\xb0H+\x00\x05\x00\x00\x00\x98\x0fbackground.tiff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\xd19\xb0\xf8\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\r\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b.background\x00\x00\x10\x00\x08\x00\x00\xd1\x94\\\xb0\x00\x00\x00\x11\x00\x08\x00\x00\xd19\xb0\xf8\x00\x00\x00\x01\x00\x04\x00\x00\x00\x98\x00\x0e\x00 \x00\x0f\x00b\x00a\x00c\x00k\x00g\x00r\x00o\x00u\x00n\x00d\x00.\x00t\x00i\x00f\x00f\x00\x0f\x00\x02\x00\x00\x00\x12\x00\x1c/.background/background.tiff\x00\x14\x01\x06\x00\x00\x00\x00\x01\x06\x00\x02\x00\x00\x0cMacintosh HD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x97\xab\xc3H+\x00\x00\x01\x88[\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02u\xab\x8d\xd1\x94\\\xb0devrddsk\xff\xff\xff\xff\x00\x00\t \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07bitcoin\x00\x00\x10\x00\x08\x00\x00\xce\x97\xab\xc3\x00\x00\x00\x11\x00\x08\x00\x00\xd1\x94\\\xb0\x00\x00\x00\x01\x00\x14\x01\x88[\x88\x00\x16\xa9\t\x00\x08\xfaR\x00\x08\xfaQ\x00\x02d\x8e\x00\x0e\x00\x02\x00\x00\x00\x0f\x00\x1a\x00\x0c\x00M\x00a\x00c\x00i\x00n\x00t\x00o\x00s\x00h\x00 \x00H\x00D\x00\x13\x00\x01/\x00\x00\x15\x00\x02\x00\x14\xff\xff\x00\x00\xff\xff\x00\x00',
|
||||||
|
'backgroundColorBlue': 1.0,
|
||||||
|
'iconSize': 96.0,
|
||||||
|
'backgroundColorGreen': 1.0,
|
||||||
|
'arrangeBy': 'none',
|
||||||
|
'showIconPreview': True,
|
||||||
|
'gridSpacing': 100.0,
|
||||||
|
'gridOffsetY': 0.0,
|
||||||
|
'showItemInfo': False,
|
||||||
|
'labelOnBottom': True,
|
||||||
|
'backgroundType': 2,
|
||||||
|
'backgroundColorRed': 1.0
|
||||||
|
}
|
||||||
|
alias = Alias.from_bytes(icvp['backgroundImageAlias'])
|
||||||
|
alias.volume.name = package_name_ns
|
||||||
|
alias.volume.posix_path = '/Volumes/' + package_name_ns
|
||||||
|
alias.volume.disk_image_alias.target.filename = package_name_ns + '.temp.dmg'
|
||||||
|
alias.volume.disk_image_alias.target.carbon_path = 'Macintosh HD:Users:\x00bitcoinuser:\x00Documents:\x00bitcoin:\x00bitcoin:\x00' + package_name_ns + '.temp.dmg'
|
||||||
|
alias.volume.disk_image_alias.target.posix_path = 'Users/bitcoinuser/Documents/bitcoin/bitcoin/' + package_name_ns + '.temp.dmg'
|
||||||
|
alias.target.carbon_path = package_name_ns + ':.background:\x00background.tiff'
|
||||||
|
icvp['backgroundImageAlias'] = biplist.Data(alias.to_bytes())
|
||||||
|
ds['.']['icvp'] = icvp
|
||||||
|
|
||||||
|
ds['.']['vSrn'] = ('long', 1)
|
||||||
|
|
||||||
|
ds['Applications']['Iloc'] = (370, 156)
|
||||||
|
ds['Bitcoin-Qt.app']['Iloc'] = (128, 156)
|
||||||
|
|
||||||
|
ds.flush()
|
||||||
|
ds.close()
|
|
@ -495,6 +495,7 @@ ap.add_argument("-fancy", nargs=1, metavar="plist", default=[], help="make a fan
|
||||||
ap.add_argument("-add-qt-tr", nargs=1, metavar="languages", default=[], help="add Qt translation files to the bundle's ressources; the language list must be separated with commas, not with whitespace")
|
ap.add_argument("-add-qt-tr", nargs=1, metavar="languages", default=[], help="add Qt translation files to the bundle's ressources; the language list must be separated with commas, not with whitespace")
|
||||||
ap.add_argument("-translations-dir", nargs=1, metavar="path", default=None, help="Path to Qt's translation files")
|
ap.add_argument("-translations-dir", nargs=1, metavar="path", default=None, help="Path to Qt's translation files")
|
||||||
ap.add_argument("-add-resources", nargs="+", metavar="path", default=[], help="list of additional files or folders to be copied into the bundle's resources; must be the last argument")
|
ap.add_argument("-add-resources", nargs="+", metavar="path", default=[], help="list of additional files or folders to be copied into the bundle's resources; must be the last argument")
|
||||||
|
ap.add_argument("-volname", nargs=1, metavar="volname", default=[], help="custom volume name for dmg")
|
||||||
|
|
||||||
config = ap.parse_args()
|
config = ap.parse_args()
|
||||||
|
|
||||||
|
@ -596,6 +597,13 @@ if os.path.exists("dist"):
|
||||||
|
|
||||||
# ------------------------------------------------
|
# ------------------------------------------------
|
||||||
|
|
||||||
|
if len(config.volname) == 1:
|
||||||
|
volname = config.volname[0]
|
||||||
|
else:
|
||||||
|
volname = app_bundle_name
|
||||||
|
|
||||||
|
# ------------------------------------------------
|
||||||
|
|
||||||
target = os.path.join("dist", "Bitcoin-Qt.app")
|
target = os.path.join("dist", "Bitcoin-Qt.app")
|
||||||
|
|
||||||
if verbose >= 2:
|
if verbose >= 2:
|
||||||
|
@ -757,7 +765,7 @@ if config.dmg is not None:
|
||||||
|
|
||||||
if fancy is None:
|
if fancy is None:
|
||||||
try:
|
try:
|
||||||
runHDIUtil("create", dmg_name, srcfolder="dist", format="UDBZ", volname="Bitcoin-Core", ov=True)
|
runHDIUtil("create", dmg_name, srcfolder="dist", format="UDBZ", volname=volname, ov=True)
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
sys.exit(e.returncode)
|
sys.exit(e.returncode)
|
||||||
else:
|
else:
|
||||||
|
@ -772,7 +780,7 @@ if config.dmg is not None:
|
||||||
if verbose >= 3:
|
if verbose >= 3:
|
||||||
print "Creating temp image for modification..."
|
print "Creating temp image for modification..."
|
||||||
try:
|
try:
|
||||||
runHDIUtil("create", dmg_name + ".temp", srcfolder="dist", format="UDRW", size=size, volname="Bitcoin-Core", ov=True)
|
runHDIUtil("create", dmg_name + ".temp", srcfolder="dist", format="UDRW", size=size, volname=volname, ov=True)
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
sys.exit(e.returncode)
|
sys.exit(e.returncode)
|
||||||
|
|
||||||
|
@ -837,7 +845,7 @@ if config.dmg is not None:
|
||||||
items_positions.append(itemscript.substitute(params))
|
items_positions.append(itemscript.substitute(params))
|
||||||
|
|
||||||
params = {
|
params = {
|
||||||
"disk" : "Bitcoin-Core",
|
"disk" : volname,
|
||||||
"window_bounds" : "300,300,800,620",
|
"window_bounds" : "300,300,800,620",
|
||||||
"icon_size" : "96",
|
"icon_size" : "96",
|
||||||
"background_commands" : "",
|
"background_commands" : "",
|
||||||
|
|
|
@ -63,9 +63,8 @@ functionality is broken. Only the compression feature is currently used.
|
||||||
Ideally, the creation could be fixed and genisoimage would no longer be necessary.
|
Ideally, the creation could be fixed and genisoimage would no longer be necessary.
|
||||||
|
|
||||||
Background images and other features can be added to DMG files by inserting a
|
Background images and other features can be added to DMG files by inserting a
|
||||||
.DS_Store before creation. The easiest way to create this file is to build a
|
.DS_Store before creation. This is generated by the script
|
||||||
DMG without one, move it to a device running OS X, customize the layout, then
|
contrib/macdeploy/custom_dsstore.py.
|
||||||
grab the .DS_Store file for later use. That is the approach taken here.
|
|
||||||
|
|
||||||
As of OS X Mavericks (10.9), using an Apple-blessed key to sign binaries is a
|
As of OS X Mavericks (10.9), using an Apple-blessed key to sign binaries is a
|
||||||
requirement in order to satisfy the new Gatekeeper requirements. Because this
|
requirement in order to satisfy the new Gatekeeper requirements. Because this
|
||||||
|
|
Loading…
Reference in a new issue