dash/contrib/gitian-descriptors
Wladimir J. van der Laan 7fb31bc434 Merge #17863: scripts: Add MACHO dylib checks to symbol-check.py
c491368d8cfddf3a5b6d574f10ed67492fcecbed scripts: add MACHO dylib checking to symbol-check.py (fanquake)
76bf97213f4b153dd3ccf1314088a73c4804601d scripts: fix check-symbols & check-security argument passing (fanquake)

Pull request description:

  Based on #17857.

  This adds dynamic library checks for MACHO executables to symbol-check.py. The script has been modified to function more like `security-check.py`. The error output is now also slightly different. i.e:
  ```bash
  # Linux x86
  bitcoin-cli: symbol operator new[](unsigned long) from unsupported version GLIBCXX_3.4
  bitcoin-cli: export of symbol vtable for std::basic_ios<char, std::char_traits<char> > not allowed
  bitcoin-cli: NEEDED library libstdc++.so.6 is not allowed
  bitcoin-cli: failed IMPORTED_SYMBOLS EXPORTED_SYMBOLS LIBRARY_DEPENDENCIES

  # RISCV (skips exported symbols checks)
  bitcoin-tx: symbol operator new[](unsigned long) from unsupported version GLIBCXX_3.4
  bitcoin-tx: NEEDED library libstdc++.so.6 is not allowed
  bitcoin-tx: failed IMPORTED_SYMBOLS LIBRARY_DEPENDENCIES

  # macOS
  Checking macOS dynamic libraries...
  libboost_filesystem.dylib is not in ALLOWED_LIBRARIES!
  bitcoind: failed DYNAMIC_LIBRARIES
  ```

  Compared to `v0.19.0.1` the macOS allowed dylibs has been slimmed down somewhat:
  ```diff
   src/qt/bitcoin-qt:
   /usr/lib/libSystem.B.dylib
  -/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
   /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
   /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
   /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
   /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
   /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
   /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
  -/System/Library/Frameworks/Security.framework/Versions/A/Security
  -/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
   /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
  -/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
  -/System/Library/Frameworks/AGL.framework/Versions/A/AGL
   /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
   /usr/lib/libc++.1.dylib
  -/System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
   /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
   /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
   /usr/lib/libobjc.A.dylib
  ```

ACKs for top commit:
  laanwj:
    ACK c491368d8cfddf3a5b6d574f10ed67492fcecbed

Tree-SHA512: f8624e4964e80b3e0d34e8d3cc33f3107938f3ef7a01c07828f09b902b5ea31a53c50f9be03576e1896ed832cf2c399e03a7943a4f537a1e1c705f3804aed979
2022-10-03 16:08:31 -04:00
..
assign_DISTNAME partial merge #18741: guix: Make source tarball using git-archive 2021-12-03 18:13:01 +03:00
gitian-linux.yml Merge #20223: build: Drop the leading 0 from the version number 2022-04-28 13:47:53 +03:00
gitian-osx-signer.yml bump signapple to the latest commit used in bitcoin atm 2022-08-17 18:35:47 +03:00
gitian-osx.yml Merge #17863: scripts: Add MACHO dylib checks to symbol-check.py 2022-10-03 16:08:31 -04:00
gitian-win-signer.yml partial merge #21036: gitian: Bump descriptors to Focal for 22.0 2021-12-03 18:13:02 +03:00
gitian-win.yml Merge #20223: build: Drop the leading 0 from the version number 2022-04-28 13:47:53 +03:00
README.md Merge #10680: Fix inconsistencies and grammar in various files 2020-01-10 10:33:53 -06:00

Gavin's notes on getting Gitian builds up and running using KVM

These instructions distilled from https://help.ubuntu.com/community/KVM/Installation.

You need the right hardware: you need a 64-bit-capable CPU with hardware virtualization support (Intel VT-x or AMD-V). Not all modern CPUs support hardware virtualization.

You probably need to enable hardware virtualization in your machine's BIOS.

You need to be running a recent version of 64-bit-Ubuntu, and you need to install several prerequisites:

sudo apt-get install ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm

Sanity checks:

sudo service apt-cacher-ng status  # Should return apt-cacher-ng is running
ls -l /dev/kvm   # Should show a /dev/kvm device

Once you've got the right hardware and software:

git clone git://github.com/dashpay/dash.git
git clone git://github.com/devrandom/gitian-builder.git
mkdir gitian-builder/inputs
cd gitian-builder/inputs

# Create base images
cd gitian-builder
bin/make-base-vm --suite bionic --arch amd64
cd ..

# Get inputs (see doc/release-process.md for exact inputs needed and where to get them)
...

# For further build instructions see doc/release-process.md
...

gitian-builder now also supports building using LXC. See help.ubuntu.com for how to get LXC up and running under Ubuntu.

If your main machine is a 64-bit Mac or PC with a few gigabytes of memory and at least 10 gigabytes of free disk space, you can gitian-build using LXC running inside a virtual machine.

Here's a description of Gavin's setup on OSX 10.6:

  1. Download and install VirtualBox from https://www.virtualbox.org/

  2. Download the 64-bit Ubuntu Desktop 12.04 LTS .iso CD image from http://www.ubuntu.com/

  3. Run VirtualBox and create a new virtual machine, using the Ubuntu .iso (see the VirtualBox documentation for details). Create it with at least 2 gigabytes of memory and a disk that is at least 20 gigabytes big.

  4. Inside the running Ubuntu desktop, install:

     sudo apt-get install debootstrap lxc ruby apache2 git apt-cacher-ng python-vm-builder
    
  5. Still inside Ubuntu, tell gitian-builder to use LXC, then follow the "Once you've got the right hardware and software" instructions above:

     export USE_LXC=1
     git clone git://github.com/dashpay/dash.git
     ... etc