aboutsummaryrefslogtreecommitdiff
path: root/contrib/gitian-descriptors/gitian-linux.yml
blob: 65a6c3c1e9c03045d74f662e79f8fec64fcfc3f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
---
name: "bitcoin"
suites:
- "precise"
architectures:
- "i386"
- "amd64"
packages: 
- "g++"
- "git-core"
- "unzip"
- "pkg-config"
- "autoconf2.13"
- "libtool"
- "automake"
- "faketime"
- "bsdmainutils"
- "libqt4-core"
- "libqt4-gui"
- "libqt4-dbus"
- "libqt4-network"
- "libqt4-test"
reference_datetime: "2013-06-01 00:00:00"
remotes:
- "url": "https://github.com/bitcoin/bitcoin.git"
  "dir": "bitcoin"
files:
- "bitcoin-deps-linux32-gitian-r6.zip"
- "bitcoin-deps-linux64-gitian-r6.zip"
- "boost-linux32-1.55.0-gitian-r1.zip"
- "boost-linux64-1.55.0-gitian-r1.zip"
- "qt-linux32-4.6.4-gitian-r1.tar.gz"
- "qt-linux64-4.6.4-gitian-r1.tar.gz"
script: |
  STAGING="$HOME/install"
  OPTFLAGS='-O2'
  BINDIR="${OUTDIR}/bin/${GBUILD_BITS}" # 32/64 bit build specific output directory
  TEMPDIR="$HOME/tempdir"
  export TZ=UTC
  export LIBRARY_PATH="$STAGING/lib"
  export PATH="$STAGING/bin:$PATH"
  mkdir -p ${BINDIR}
  #
  mkdir -p $STAGING
  cd $STAGING
  unzip ../build/bitcoin-deps-linux${GBUILD_BITS}-gitian-r6.zip
  unzip ../build/boost-linux${GBUILD_BITS}-1.55.0-gitian-r1.zip
  tar -zxf ../build/qt-linux${GBUILD_BITS}-4.6.4-gitian-r1.tar.gz
  cd ../build

  # Avoid exporting *any* symbols from the executable
  # This avoids conflicts between the libraries statically linked into bitcoin and any
  # libraries we may link dynamically (such as Qt and OpenSSL, see issue #4094).
  # It also avoids start-up overhead to not export any unnecessary symbols.
  # To do this, build a linker script that marks all symbols as local.
  LINKER_SCRIPT=$HOME/build/linker_version_script
  echo '
  {
    local: *;
  };' > $LINKER_SCRIPT
  function do_configure {
      ./configure "$@" --enable-upnp-default --prefix=$STAGING --with-protoc-bindir=$STAGING/host/bin --with-qt-bindir=$STAGING/bin --with-boost=$STAGING --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include ${OPTFLAGS}" LDFLAGS="-L$STAGING/lib -Wl,--version-script=$LINKER_SCRIPT ${OPTFLAGS}" CXXFLAGS="-frandom-seed=bitcoin ${OPTFLAGS}" BOOST_CHRONO_EXTRALIBS="-lrt" --enable-glibc-back-compat
  }
  #
  cd bitcoin
  ./autogen.sh
  do_configure
  make dist
  DISTNAME=`echo bitcoin-*.tar.gz`

  # Build dynamic versions of everything
  # (with static linking to boost and openssl as well a some non-OS deps)
  mkdir -p distsrc
  cd distsrc
  tar --strip-components=1 -xf ../$DISTNAME
  do_configure --bindir=$BINDIR 
  make $MAKEOPTS
  make $MAKEOPTS install-strip
  make $MAKEOPTS clean

  # sort distribution tar file and normalize user/group/mtime information for deterministic output
  mkdir -p $OUTDIR/src
  rm -rf $TEMPDIR
  mkdir -p $TEMPDIR
  cd $TEMPDIR
  tar -xvf $HOME/build/bitcoin/$DISTNAME | sort | tar --no-recursion -cT /dev/stdin --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 --mtime="$REFERENCE_DATETIME" | gzip -n > $OUTDIR/src/$DISTNAME