# vim: filetype=yaml sw=2
version: 1.17.12
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
container:
  use_container: 1

var:
  go14_version: 1.4.3
  GOHOSTARCH: amd64

  setup: |
    mkdir -p /var/tmp/dist
    tar -C /var/tmp/dist -xf $rootdir/[% c("go_tarfile") %]
    [% IF pc(c("origin_project"), "var/no_crosscompile") -%]
      export GOOS=linux
      export GOARCH=[% c("var/GOHOSTARCH") %]
    [% ELSE -%]
      export GOOS=[% c("var/GOOS") %]
      export GOARCH=[% c("var/GOARCH") %]
    [% END -%]
    # Run in GOPATH mode: https://golang.org/cmd/go/#hdr-Module_support. (see:
    # #32027)
    export GO111MODULE=off
    export GOPATH=/var/tmp/dist/gopath
    export PATH=/var/tmp/dist/go/bin:/var/tmp/dist/gopath/bin:"$PATH"
    [% IF c("var/linux") -%]
      export CGO_LDFLAGS_ALLOW="-z|noexecstack"
      export CGO_LDFLAGS="-z noexecstack"
    [% END -%]
    [% IF c("var/linux-i686") -%]
      export CGO_ENABLED=1
    [% END -%]
    export GOTMPDIR=/var/tmp/build/go-tmp
    mkdir -p "$GOTMPDIR"

  # Template build script for building a go library.
  # This can be called as projects/go/var/build_go_lib.
  # You need to define /var/go_lib, and optionally var/go_lib_install as
  # a list of install targets.
  build_go_lib: |
    #!/bin/bash
    [% c("var/set_default_env") -%]
    [% pc('go', 'var/setup', { go_tarfile => c('input_files_by_name/go') }) %]
    distdir=/var/tmp/dist/[% project %]
    mkdir -p /var/tmp/build
    tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
    [% FOREACH dep = c("var/go_lib_deps") -%]
      tar -C /var/tmp/dist -xf [% c('input_files_by_name/' _ dep) %]
    [% END -%]
    mkdir -p $(dirname "$GOPATH/src/[% c("var/go_lib") %]")
    mv /var/tmp/build/[% project %]-[% c('version') %] "$GOPATH/src/[% c("var/go_lib") %]"
    cd "$GOPATH/src/[% c("var/go_lib") %]"
    for p in $(ls -1 $rootdir/*.patch 2> /dev/null | sort)
    do
      patch -p1 < $p
    done
    # Run in GOPATH mode: https://golang.org/cmd/go/#hdr-Module_support. (see:
    # #32027)
    export GO111MODULE=off
    [% IF c("var/build_go_lib_pre"); GET c("var/build_go_lib_pre"); END; -%]
    [% IF c("var/go_lib_install") -%]
      [% FOREACH inst IN c("var/go_lib_install") %]
        go install [% inst %]
      [% END %]
    [% ELSE %]
      go install [% c("var/go_lib") %]
    [% END %]
    cd /var/tmp/dist
    [% c('tar', {
            tar_src => [ 'gopath' ],
            tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
        }) %]

targets:
  windows:
    var:
      GOOS: windows
  windows-i686:
    var:
      GOARCH: 386
  windows-x86_64:
    var:
      GOARCH: amd64
  osx-x86_64:
    var:
      GOOS: darwin
      GOARCH: amd64
  linux:
    var:
      GOOS: linux
  linux-x86_64:
    var:
      GOARCH: amd64
  linux-i686:
    var:
      GOARCH: 386
  linux-armhf:
    var:
      GOARCH14: arm
      GOARCH: arm
  linux-arm64:
    var:
      GOHOSTARCH: arm64
      GOARCH14: arm
      GOARCH: arm64
  android:
    version: 1.18.3
    var:
      GOOS: android
  android-x86:
    var:
      GOARCH: 386
  android-x86_64:
    var:
      GOARCH: amd64
  android-armv7:
    var:
      GOARCH: arm
  android-aarch64:
    var:
      GOARCH: arm64

input_files:
  - project: container-image
  - name: '[% c("var/compiler") %]'
    project: '[% c("var/compiler") %]'
    enable: '[% ! c("var/linux") %]'
  - URL: 'https://golang.org/dl/go[% c("version") %].src.tar.gz'
    enable: '[% ! c("var/android") %]'
    name: go
    sha256sum: 0d51b5b3f280c0f01f534598c0219db5878f337da6137a9ee698777413607209
  - URL: 'https://golang.org/dl/go[% c("version") %].src.tar.gz'
    enable: '[% c("var/android") %]'
    name: go
    sha256sum: 0012386ddcbb5f3350e407c679923811dbd283fcdc421724931614a842ecbc2d
  - URL: 'https://golang.org/dl/go[% c("var/go14_version") %].src.tar.gz'
    name: go14
    sha256sum: 9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
  - filename: 0001-Use-fixed-go-build-tmp-directory.patch
    enable: '[% c("var/android") %]'
  - filename: go-aarch64.patch
