image: pureos/byzantium

stages:
  - build
  - test
  - deploy

before_script:
  - apt-get -y update
  - apt-get -y install ca-certificates

build_docs:
  stage: build
  artifacts:
    paths:
      - _build
  script:
    - apt-get -y install python3-pip python3-sphinx
    - pip3 install recommonmark
    - ./doc/build.sh _build
  except:
    variables:
      - $PKG_ONLY == "1"

build_meson:
  image: debian:bookworm
  stage: build
  artifacts:
    paths:
      - _build
    expire_in: 3h
  script:
    - mv debian/control-newer debian/control
    - apt-get -y build-dep .
    - meson . _build/ -Ddepdatadir=/usr/share -Dfind_orphans=true --werror
    - ninja -C _build install
  except:
    variables:
      - $PKG_ONLY == "1"

build_deb:
  stage: build
  artifacts:
    paths:
      - '*.deb'
  script:
    - rm -f ../*.deb
    - apt-get -y build-dep .
    - apt-get -y install devscripts
    - REV=$(git log -1 --format=%h)
    - VER=$(dpkg-parsechangelog -SVersion)
    - DEBFULLNAME="Librem5 CI"
    - EMAIL="librem5-builds@lists.community.puri.sm"
    - dch -v"$VER+librem5ci$CI_PIPELINE_ID.$REV" "$MSG"
    - debuild -i -us -uc -b
    - cp ../*.deb .

build_deb:arm64:
  image: pureos/byzantium
  tags:
    - aarch64
  stage: build
  artifacts:
    paths:
      - '*.deb'
  script:
    - rm -f ../*.deb
    - apt-get -y build-dep .
    - apt-get -y install devscripts
    - REV=$(git log -1 --format=%h)
    - VER=$(dpkg-parsechangelog -SVersion)
    - DEBFULLNAME="Librem5 CI"
    - EMAIL="librem5-builds@lists.community.puri.sm"
    - dch -v"$VER+librem5ci$CI_PIPELINE_ID.$REV" "$MSG"
    - debuild -i -us -uc -b
    - cp ../*.deb .

build_deb:future:
  image: debian:bookworm
  allow_failure: true
  tags:
    - aarch64
  stage: build
  artifacts:
    paths:
      - '*.deb'
  script:
    - rm -f ../*.deb
    - mv debian/control-newer debian/control
    - apt-get -y build-dep .
    - apt-get -y install devscripts
    - REV=$(git log -1 --format=%h)
    - VER=$(dpkg-parsechangelog -SVersion)
    - DEBFULLNAME="Librem5 CI"
    - EMAIL="librem5-builds@lists.community.puri.sm"
    - dch -v"$VER+librem5ci$CI_PIPELINE_ID.$REV" "$MSG"
    - debuild -i -us -uc -b
    - cp ../*.deb .

build_reference:
  image: debian:bookworm
  stage: build
  needs:
    - job: build_meson
      artifacts: true
  artifacts:
    paths:
      - _build/doc
  script:
    - apt-get -y install cargo
    - cd _build
    - ../cargo.sh doc --no-deps --document-private-items
  except:
    variables:
      - $PKG_ONLY == "1"

test_lintian:
  stage: test
  needs:
    - job: build_deb
      artifacts: true
  script:
    - apt-get -y install lintian
    - lintian *.deb
  except:
    variables:
      - $PKG_ONLY == "1"

test:
  image: debian:bookworm
  stage: test
  needs:
    - job: build_meson
      artifacts: true
  script:
    - mv debian/control-newer debian/control
    - apt-get -y build-dep .
    - apt-get -y install clang-tidy
    - ninja -C _build test
    - tools/style-check_build _build
  except:
    variables:
      - $PKG_ONLY == "1"

test_style:
  stage: test
  needs: []
  script:
    - apt-get -y build-dep .
    - tools/style-check_source
  except:
    variables:
      - $PKG_ONLY == "1"

check_release:
  stage: test
  needs: []
  only:
    refs:
      - master
  script:
    - apt-get -y install git python3
    - (head -n 1 ./debian/changelog && git tag) | ./debian/check_release.py
  except:
    variables:
      - $PKG_ONLY == "1"

pages:
  stage: deploy
  needs:
    - build_docs
    - build_reference
  script:
    - mv _build/ public/
  artifacts:
    paths:
      - public
  only:
    refs:
      - master
