makedepends=(tar btrfs-progs cdrtools dnsmasq dqlite iptables git libseccomp libuv lvm2 lxc lxcfs ovmf qemu squashfs tcl)
run=(squashfs lxc lxcfs dnsmasq dqlite iptables ovmf)

description="Daemon based on liblxc offering a REST API to manage containers"
url="https://linuxcontainers.org/lxd"

packager="Great-OS Team"
maintainer="Great-OS Team"

name=lxd
version=6.8
goversion=1.26.4
release=1

PKGMK_IGNORE_UNPACK=yes
source=(https://github.com/canonical/lxd/releases/download/lxd-${version}/lxd-${version}.tar.gz
        lxd.socket
        lxd.service
        lxd.sysusers
        https://golang.org/dl/go$goversion.linux-amd64.tar.gz)

prepare() {
  tar -C $SRC -xf lxd-$version.tar.gz
  tar -C $SRC -xf go$goversion.linux-amd64.tar.gz

  cd $name-$version

  export PATH=$SRC/go/bin:$PATH

  export CGO_LDFLAGS="${LDFLAGS}"
  export CGO_CFLAGS="${CFLAGS}"
  export CGO_CPPFLAGS="${CPPFLAGS}"
  export CGO_CXXFLAGS="${CXXFLAGS}"
  export PATH=$SRC/go/bin:$PATH
  export GOPATH=$SRC/go
  export GOCACHE=/tmp
  export GOFLAGS="-buildmode=pie -trimpath"
  export CGO_LDFLAGS_ALLOW="-Wl,-z,now"

  # create directory for build output
  mkdir bin

  # verify modules
  go mod verify
}

build() {
  cd $name-$version

  export CGO_LDFLAGS="${LDFLAGS}"
  export CGO_CFLAGS="${CFLAGS}"
  export CGO_CPPFLAGS="${CPPFLAGS}"
  export CGO_CXXFLAGS="${CXXFLAGS}"
  export PATH=$SRC/go/bin:$PATH
  export GOPATH=$SRC/go
  export GOCACHE=/tmp
  export GOFLAGS="-buildmode=pie -trimpath"
  export CGO_LDFLAGS_ALLOW="-Wl,-z,now"

  export CGO_CFLAGS="-I$SRC/lxd-$version/vendor/raft/include/ -I$SRC/lxd-$version/vendor/dqlite/include/"
  export CGO_LDFLAGS="-L$SRC/lxd-$version/vendor/raft/.libs -L$SRC/lxd-$version/vendor/dqlite/.libs/"
  export LD_LIBRARY_PATH="$SRC/lxd-$version/vendor/raft/.libs/:$SRC/lxd-$version/vendor/dqlite/.libs/"
  export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)"

  CGO_LDFLAGS="-static" go build -v -tags "agent" -o bin/ ./lxd-agent/...

  for tool in fuidshift lxc lxd lxd-benchmark lxd-user; do
    go build -v -tags "libsqlite3" -o bin/ ./$tool/...
  done
}

package() {
  cd $name-$version

  for tool in fuidshift lxc lxd lxd-agent lxd-benchmark lxd-user; do
    install -p -Dm755 bin/$tool $PKG/usr/bin/$tool
  done

  # Package license
  install -Dm644 "COPYING"  $PKG/usr/share/licenses/${name}/LICENCE

  # systemd files
  install -Dm644 ../lxd.{service,socket} -t $PKG/usr/lib/systemd/system
  install -Dm644 ../lxd.sysusers $PKG/usr/lib/sysusers.d/$name.conf

  # logs
  install -dm700 $PKG/var/log/lxd

  # documentation
  install -d $PKG/usr/share/doc/lxd
  rm -rf doc/html
  cp -rv doc/* $PKG/usr/share/doc/lxd/

  # Bash completions - WHERE ARE THEY GONE ???
  #install -p -Dm644 scripts/bash/lxd-client $PKG/usr/share/bash-completion/completions/lxd
}
