Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not build Unite-Qt .dmg for Mac OS in Gitian #663

Merged
merged 4 commits into from
Feb 22, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 2 additions & 42 deletions contrib/gitian-build.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,7 @@ def build(args):
print('\nCompiling ' + args.version + ' MacOS')
subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'unit-e='+args.commit, '--url', 'unit-e='+args.url, gitian_descriptors(args, 'osx')])
subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-unsigned', '--destination', '../unit-e-sigs/', gitian_descriptors(args, 'osx')])
subprocess.check_call('mv build/out/unite-*-osx-unsigned.tar.gz inputs/', shell=True)
subprocess.check_call('mv build/out/unite-*.tar.gz build/out/unite-*.dmg ../unit-e-binaries/'+args.version, shell=True)
subprocess.check_call('mv build/out/unite-*.tar.gz ../unit-e-binaries/'+args.version, shell=True)

if args.commit_files:
print('\nCommitting '+args.version+' Unsigned Sigs\n')
Expand Down Expand Up @@ -273,36 +272,13 @@ def codesign_windows(osslsign_path, version, win_code_cert_path, win_code_key_pa
subprocess.check_call(['tar', '-czf', signatures_tarball, *[path.name for path in Path(build_dir, 'unsigned').glob('*.exe.pem')]], cwd=Path(build_dir, 'unsigned'))


def codesign_osx(version, signer, git_dir):
gitian_dir = Path('gitian-builder').resolve()
if platform.system() != 'Darwin':
print('Codesigning MacOS binaries is only possible on a MacOS', file=sys.stderr)
exit(1)

signatures_tarball = get_signatures_path('osx', version)
if signatures_tarball.is_file():
print('Signatures already present at:', signatures_tarball, '\nI cowardly refuse to continue', file=sys.stderr)
exit(1)

with tempfile.TemporaryDirectory() as build_dir:
subprocess.check_call(['cp', 'inputs/unite-' + version + '-osx-unsigned.tar.gz', Path(build_dir, 'unite-osx-unsigned.tar.gz')], cwd=gitian_dir)
subprocess.check_call(['cp', Path(git_dir, 'contrib/macdeploy/detached-sig-create.sh'), build_dir])
subprocess.check_call(['tar', '-xzf', 'unite-osx-unsigned.tar.gz'], cwd=build_dir)
subprocess.check_call(['detached-sig-create.sh', '-s', signer], cwd=build_dir)
subprocess.check_call(['cp', 'signature-osx.tar.gz', signatures_tarball], cwd=build_dir)


def codesign(args):
if args.windows:
codesign_windows(args.osslsigncode_path, args.version, args.win_code_cert_path, args.win_code_key_path)

if args.macos:
codesign_osx(args.version, args.signer, args.git_dir)

if args.commit_files:
print('\nCommitting '+args.version+' Detached Sigs\n')
subprocess.check_call(['git', 'add', Path(args.version + '-detached', 'unite-win-signatures.tar.gz')], cwd='unit-e-sigs')
subprocess.check_call(['git', 'add', Path(args.version + '-detached', 'unite-osx-signatures.tar.gz')], cwd='unit-e-sigs')
subprocess.check_call(['git', 'commit', '-a', '-m', 'Add '+args.version+' detached signatures by '+args.signer], cwd='unit-e-sigs')


Expand All @@ -326,24 +302,9 @@ def sign(args):
subprocess.check_call('mv build/out/unite-*win64-setup.exe ../unit-e-binaries/'+args.version, shell=True, cwd=gitian_dir)
subprocess.check_call('mv build/out/unite-*win32-setup.exe ../unit-e-binaries/'+args.version, shell=True, cwd=gitian_dir)

if args.macos:
signatures_tarball = get_signatures_path('osx', args.version)
if not signatures_tarball.is_file():
print('Signatures not present at:', signatures_tarball, file=sys.stderr)
exit(1)

print('\nSigning ' + args.version + ' MacOS')
subprocess.check_call(['cp', signatures_tarball, 'inputs/unite-osx-signatures.tar.gz'], cwd=gitian_dir)
subprocess.check_call(['cp', Path('..', args.git_dir, 'contrib/macdeploy/detached-sig-apply.sh'), 'inputs/detached-sig-apply.sh'], cwd=gitian_dir)
subprocess.check_call(['cp inputs/unite-' + args.version + '-osx-unsigned.tar.gz', 'inputs/unite-osx-unsigned.tar.gz'], cwd=gitian_dir)
subprocess.check_call(['bin/gbuild', '-i', '--commit', 'signature=master', gitian_descriptors(args, 'osx-signer')], cwd=gitian_dir)
subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-signed', '--destination', '../unit-e-sigs/', gitian_descriptors(args, 'osx-signer')], cwd=gitian_dir)
subprocess.check_call('mv build/out/unite-osx-signed.dmg ../unit-e-binaries/'+args.version+'/unite-'+args.version+'-osx.dmg', shell=True, cwd=gitian_dir)

if args.commit_files:
print('\nCommitting '+args.version+' Signed Sigs\n')
subprocess.check_call(['git', 'add', args.version+'-win-signed/'+args.signer], cwd='unit-e-sigs')
subprocess.check_call(['git', 'add', args.version+'-osx-signed/'+args.signer], cwd='unit-e-sigs')
subprocess.check_call(['git', 'commit', '-a', '-m', 'Add '+args.version+' signed binary sigs for '+args.signer], cwd='unit-e-sigs')


Expand All @@ -359,7 +320,6 @@ def verify(args):
('win-unsigned', 'win', 'Windows'),
('osx-unsigned', 'osx', 'MacOS'),
('win-signed', 'win-signer', 'Signed Windows'),
('osx-signed', 'osx-signer', 'Signed Max OS')
]:
build_sig_dir = args.version + '-' + sig_path_suffix
if Path(sigs_path, build_sig_dir).is_dir():
Expand Down Expand Up @@ -424,7 +384,7 @@ def main():
parser.add_argument('-v', '--verify', action='store_true', dest='verify', help='Verify the Gitian build')
parser.add_argument('-b', '--build', action='store_true', dest='build', help='Do a Gitian build')
parser.add_argument('-C', '--codesign', action='store_true', dest='codesign', help='Make detached signatures for Windows and MacOS')
parser.add_argument('-s', '--sign', action='store_true', dest='sign', help='Make signed binaries for Windows and MacOS')
parser.add_argument('-s', '--sign', action='store_true', dest='sign', help='Make signed binaries for Windows')
parser.add_argument('-B', '--buildsign', action='store_true', dest='buildsign', help='Build both signed and unsigned binaries')
parser.add_argument('-o', '--os', dest='os', default='lwm', help='Specify which Operating Systems the build is for. Default is %(default)s. l for Linux, w for Windows, m for MacOS')
parser.add_argument('-j', '--jobs', dest='jobs', default='2', help='Number of processes to use. Default %(default)s')
Expand Down
41 changes: 0 additions & 41 deletions contrib/gitian-descriptors/gitian-osx-signer.yml

This file was deleted.

20 changes: 1 addition & 19 deletions contrib/gitian-descriptors/gitian-osx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,24 +136,6 @@ script: |
make ${MAKEOPTS}
make install-strip DESTDIR=${INSTALLPATH}

make osx_volname
make deploydir
OSX_VOLNAME="$(cat osx_volname)"
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-create.sh unsigned-app-${i}
cp ${BASEPREFIX}/${i}/native/bin/dmg ${BASEPREFIX}/${i}/native/bin/genisoimage unsigned-app-${i}
cp ${BASEPREFIX}/${i}/native/bin/${i}-codesign_allocate unsigned-app-${i}/codesign_allocate
cp ${BASEPREFIX}/${i}/native/bin/${i}-pagestuff unsigned-app-${i}/pagestuff
mv dist unsigned-app-${i}
pushd unsigned-app-${i}
find . | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-osx-unsigned.tar.gz
popd

make deploy
${WRAP_DIR}/dmg dmg "${OSX_VOLNAME}.dmg" ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg

cd installed
find . -name "lib*.la" -delete
find . -name "lib*.a" -delete
Expand All @@ -163,4 +145,4 @@ script: |
done
mkdir -p $OUTDIR/src
mv $SOURCEDIST $OUTDIR/src
mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-osx64.tar.gz
mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-osx-unsigned.tar.gz
cmihai marked this conversation as resolved.
Show resolved Hide resolved
3 changes: 1 addition & 2 deletions contrib/test_data/gitian_build/test_build.log.expected
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ mv build/out/unite-*-win-unsigned.tar.gz inputs/ shell=True
mv build/out/unite-*.zip build/out/unite-*.exe ../unit-e-binaries/someversion shell=True
bin/gbuild -j 2 -m 3000 --commit unit-e=v1.1.1 --url unit-e=/some/repo ../work/gitian-descriptors/gitian-osx.yml
bin/gsign -p gpg --signer somesigner --release someversion-osx-unsigned --destination ../unit-e-sigs/ ../work/gitian-descriptors/gitian-osx.yml
mv build/out/unite-*-osx-unsigned.tar.gz inputs/ shell=True
mv build/out/unite-*.tar.gz build/out/unite-*.dmg ../unit-e-binaries/someversion shell=True
mv build/out/unite-*.tar.gz ../unit-e-binaries/someversion shell=True
chdir('someworkdir')
chdir('unit-e-sigs')
git add someversion-linux/somesigner
Expand Down
6 changes: 0 additions & 6 deletions contrib/test_data/gitian_build/test_codesign.log.expected
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,5 @@ osslsigncode_executable extract-signature -pem -in unite-someversion-win32-setup
osslsigncode_executable sign -certs somecert -in unite-someversion-win32-setup-unsigned.exe -out unite-someversion-win32-setup-unsigned.exe-signed -key somekey -askpass
osslsigncode_executable extract-signature -pem -in unite-someversion-win32-setup-unsigned.exe-signed -out unite-someversion-win32-setup-unsigned.exe.pem
tar -czf version-platform-sigs-path cwd=tmp/unsigned
cp inputs/unite-someversion-osx-unsigned.tar.gz tmp/unite-osx-unsigned.tar.gz cwd=gitian-builder
cp unit-e/contrib/macdeploy/detached-sig-create.sh tmp
tar -xzf unite-osx-unsigned.tar.gz cwd=tmp
detached-sig-create.sh -s somesigner cwd=tmp
cp signature-osx.tar.gz version-platform-sigs-path cwd=tmp
git add someversion-detached/unite-win-signatures.tar.gz cwd=unit-e-sigs
git add someversion-detached/unite-osx-signatures.tar.gz cwd=unit-e-sigs
git commit -a -m Add someversion detached signatures by somesigner cwd=unit-e-sigs
10 changes: 0 additions & 10 deletions contrib/test_data/gitian_build/test_sign.log.expected
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,6 @@ bin/gsign -p gpg --signer somesigner --release someversion-win-signed --destinat
mv build/out/unite-*win64-setup.exe ../unit-e-binaries/someversion shell=True cwd=gitian-builder
mv build/out/unite-*win32-setup.exe ../unit-e-binaries/someversion shell=True cwd=gitian-builder
git add someversion-win-signed/somesigner cwd=unit-e-sigs
git add someversion-osx-signed/somesigner cwd=unit-e-sigs
git commit -a -m Add someversion signed binary sigs for somesigner cwd=unit-e-sigs
wget -N -P inputs https://downloads.sourceforge.net/project/osslsigncode/osslsigncode/osslsigncode-1.7.1.tar.gz cwd=gitian-builder
wget -N -P inputs https://bitcoincore.org/cfields/osslsigncode-Backports-to-1.7.1.patch cwd=gitian-builder
cp version-platform-sigs-path inputs/unite-osx-signatures.tar.gz cwd=gitian-builder
cp ../unit-e/contrib/macdeploy/detached-sig-apply.sh inputs/detached-sig-apply.sh cwd=gitian-builder
cp inputs/unite-someversion-osx-unsigned.tar.gz inputs/unite-osx-unsigned.tar.gz cwd=gitian-builder
bin/gbuild -i --commit signature=master ../work/gitian-descriptors/gitian-osx-signer.yml cwd=gitian-builder
bin/gsign -p gpg --signer somesigner --release someversion-osx-signed --destination ../unit-e-sigs/ ../work/gitian-descriptors/gitian-osx-signer.yml cwd=gitian-builder
mv build/out/unite-osx-signed.dmg ../unit-e-binaries/someversion/unite-someversion-osx.dmg shell=True cwd=gitian-builder
git add someversion-win-signed/somesigner cwd=unit-e-sigs
git add someversion-osx-signed/somesigner cwd=unit-e-sigs
git commit -a -m Add someversion signed binary sigs for somesigner cwd=unit-e-sigs
1 change: 0 additions & 1 deletion contrib/test_data/gitian_build/test_verify.log.expected
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@ bin/gverify -v -d ../unit-e-sigs/ -r someversion-linux ../work/gitian-descriptor
bin/gverify -v -d ../unit-e-sigs/ -r someversion-win-unsigned ../work/gitian-descriptors/gitian-win.yml cwd=gitian-builder
bin/gverify -v -d ../unit-e-sigs/ -r someversion-osx-unsigned ../work/gitian-descriptors/gitian-osx.yml cwd=gitian-builder
bin/gverify -v -d ../unit-e-sigs/ -r someversion-win-signed ../work/gitian-descriptors/gitian-win-signer.yml cwd=gitian-builder
bin/gverify -v -d ../unit-e-sigs/ -r someversion-osx-signed ../work/gitian-descriptors/gitian-osx-signer.yml cwd=gitian-builder
12 changes: 0 additions & 12 deletions contrib/test_gitian-build.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,18 +151,6 @@ def test_sign(mocker):

mocker.patch("pathlib.Path.is_file", return_value=True)

args.windows = False
args.macos = True
gitian_build.sign(args)

mocker.patch("pathlib.Path.is_file", return_value=False)
original_get_signatures_path = gitian_build.get_signatures_path
gitian_build.get_signatures_path = lambda platform_str, ver: Path("version-platform-sigs-path")

with raises(SystemExit):
# Should not find signatures and exit
gitian_build.sign(args)

log.check()
gitian_build.get_signatures_path = original_get_signatures_path

Expand Down
6 changes: 3 additions & 3 deletions doc/man/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ if BUILD_UNITED
dist_man1_MANS+=united.1
endif

if ENABLE_QT
cmihai marked this conversation as resolved.
Show resolved Hide resolved
dist_man1_MANS+=unite-qt.1
endif
# if ENABLE_QT
# dist_man1_MANS+=unite-qt.1
# endif
cmihai marked this conversation as resolved.
Show resolved Hide resolved

if BUILD_UNITE_UTILS
dist_man1_MANS+=unite-cli.1 unite-tx.1
Expand Down