# SPDX-License-Identifier: GPL-2.0+

# Grab our configured image.  The source for this is found
# in the u-boot tree at tools/docker/Dockerfile
image: trini/u-boot-gitlab-ci-runner:jammy-20230126-10Feb2023

# We run some tests in different order, to catch some failures quicker.
stages:
  - testsuites
  - test.py
  - world build

.buildman_and_testpy_template: &buildman_and_testpy_dfn
  stage: test.py
  before_script:
    # Clone uboot-test-hooks
    - git config --global --add safe.directory "${CI_PROJECT_DIR}"
    - git clone --depth=1 https://source.denx.de/u-boot/u-boot-test-hooks /tmp/uboot-test-hooks
    - ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`
    - ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`
    - grub-mkimage --prefix="" -o ~/grub_x86.efi -O i386-efi normal  echo lsefimmap lsefi lsefisystab efinet tftp minicmd
    - grub-mkimage --prefix="" -o ~/grub_x64.efi -O x86_64-efi normal  echo lsefimmap lsefi lsefisystab efinet tftp minicmd
    - if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]]; then
        wget -O - https://github.com/riscv/opensbi/releases/download/v0.9/opensbi-0.9-rv-bin.tar.xz | tar -C /tmp -xJ;
        export OPENSBI=/tmp/opensbi-0.9-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin;
      fi
    - if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]] || [[ "${TEST_PY_BD}" == "sifive_unleashed" ]]; then
        wget -O - https://github.com/riscv/opensbi/releases/download/v0.9/opensbi-0.9-rv-bin.tar.xz | tar -C /tmp -xJ;
        export OPENSBI=/tmp/opensbi-0.9-rv-bin/share/opensbi/lp64/generic/firmware/fw_dynamic.bin;
      fi

  after_script:
    - rm -rf /tmp/uboot-test-hooks /tmp/venv
  script:
    # If we've been asked to use clang only do one configuration.
    - export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD}
    - echo BUILD_ENV ${BUILD_ENV}
    - if [ -n "${BUILD_ENV}" ]; then
        export ${BUILD_ENV};
      fi
    - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e
        --board ${TEST_PY_BD} ${OVERRIDE}
    - cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/
    - cp ~/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/
    - cp /opt/grub/grubriscv64.efi $UBOOT_TRAVIS_BUILD_DIR/grub_riscv64.efi
    - cp /opt/grub/grubaa64.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi
    - cp /opt/grub/grubarm.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi
    # create sdcard / spi-nor images for sifive unleashed using genimage
    - if [[ "${TEST_PY_BD}" == "sifive_unleashed" ]]; then
        mkdir -p root;
        cp ${UBOOT_TRAVIS_BUILD_DIR}/spl/u-boot-spl.bin .;
        cp ${UBOOT_TRAVIS_BUILD_DIR}/u-boot.itb .;
        rm -rf tmp;
        genimage --inputpath . --config board/sifive/unleashed/genimage_sdcard.cfg;
        cp images/sdcard.img ${UBOOT_TRAVIS_BUILD_DIR}/;
        rm -rf tmp;
        genimage --inputpath . --config board/sifive/unleashed/genimage_spi-nor.cfg;
        cp images/spi-nor.img ${UBOOT_TRAVIS_BUILD_DIR}/;
      fi
    - if [[ "${TEST_PY_BD}" == "coreboot" ]]; then
        wget -O -
          "https://drive.google.com/uc?id=1x6nrtWIyIRPLS2cQBwYTnT2TbOI8UjmM&export=download" |
          xz -dc >${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom;
        wget -O -
          "https://drive.google.com/uc?id=149Cz-5SZXHNKpi9xg6R_5XITWohu348y&export=download" >
          cbfstool;
        chmod a+x cbfstool;
        ./cbfstool ${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom add-flat-binary -f ${UBOOT_TRAVIS_BUILD_DIR}/u-boot.bin -n fallback/payload -c LZMA -l 0x1110000 -e 0x1110000;
      fi
    - virtualenv -p /usr/bin/python3 /tmp/venv
    - . /tmp/venv/bin/activate
    - pip install -r test/py/requirements.txt
    # "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not
    - export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH};
      export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci;
      ./test/py/test.py -ra --bd ${TEST_PY_BD} ${TEST_PY_ID}
        ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"}
        --build-dir "$UBOOT_TRAVIS_BUILD_DIR"
    # It seems that the files in /tmp go away, so copy out what we need
    - if [[ "${TEST_PY_BD}" == "coreboot" ]]; then
        cp -v /tmp/coreboot/*.{html,css} .;
      fi

build all 32bit ARM platforms:
  stage: world build
  script:
    - ret=0;
      git config --global --add safe.directory "${CI_PROJECT_DIR}";
      ./tools/buildman/buildman -o /tmp -PEWM arm -x aarch64 || ret=$?;
      if [[ $ret -ne 0 ]]; then
        ./tools/buildman/buildman -o /tmp -seP;
        exit $ret;
      fi;

build all 64bit ARM platforms:
  stage: world build
  script:
    - virtualenv -p /usr/bin/python3 /tmp/venv
    - . /tmp/venv/bin/activate
    - ret=0;
      git config --global --add safe.directory "${CI_PROJECT_DIR}";
      ./tools/buildman/buildman -o /tmp -PEWM aarch64 || ret=$?;
      if [[ $ret -ne 0 ]]; then
        ./tools/buildman/buildman -o /tmp -seP;
        exit $ret;
      fi;

build all PowerPC platforms:
  stage: world build
  script:
    - ret=0;
      git config --global --add safe.directory "${CI_PROJECT_DIR}";
      ./tools/buildman/buildman -o /tmp -P -E -W powerpc || ret=$?;
      if [[ $ret -ne 0 ]]; then
        ./tools/buildman/buildman -o /tmp -seP;
        exit $ret;
      fi;

build all other platforms:
  stage: world build
  script:
    - ret=0;
      git config --global --add safe.directory "${CI_PROJECT_DIR}";
      ./tools/buildman/buildman -o /tmp -PEWM -x arm,powerpc || ret=$?;
      if [[ $ret -ne 0 ]]; then
        ./tools/buildman/buildman -o /tmp -seP;
        exit $ret;
      fi;

check for new CONFIG symbols outside Kconfig:
  stage: testsuites
  script:
    - git config --global --add safe.directory "${CI_PROJECT_DIR}"
    # If grep succeeds and finds a match the test fails as we should
    # have no matches.
    - git grep -E '^#[[:blank:]]*(define|undef)[[:blank:]]*CONFIG_'
        :^doc/ :^arch/arm/dts/ :^scripts/kconfig/lkc.h
        :^include/linux/kconfig.h :^tools/ && exit 1 || exit 0

# QA jobs for code analytics
# static code analysis with cppcheck (we can add --enable=all later)
cppcheck:
  stage: testsuites
  script:
    - cppcheck -j$(nproc) --force --quiet --inline-suppr .

# search for TODO within source tree
grep TODO/FIXME/HACK:
  stage: testsuites
  script:
    - grep -r TODO .
    - grep -r FIXME .
    # search for HACK within source tree and ignore HACKKIT board
    - grep -r HACK . | grep -v HACKKIT

# build documentation
docs:
  stage: testsuites
  script:
    - virtualenv -p /usr/bin/python3 /tmp/venvhtml
    - . /tmp/venvhtml/bin/activate
    - pip install -r doc/sphinx/requirements.txt
    - make htmldocs
    - make infodocs

# some statistics about the code base
sloccount:
  stage: testsuites
  script:
    - sloccount .

# ensure all configs have MAINTAINERS entries
Check for configs without MAINTAINERS entry:
  stage: testsuites
  script:
    - ./tools/buildman/buildman -R

# Ensure host tools build
Build tools-only:
  stage: testsuites
  script:
    - make tools-only_config tools-only -j$(nproc)

# Ensure env tools build
Build envtools:
  stage: testsuites
  script:
    - make tools-only_config envtools -j$(nproc)

Run binman, buildman, dtoc, Kconfig and patman testsuites:
  stage: testsuites
  script:
    - git config --global user.name "GitLab CI Runner";
      git config --global user.email trini@konsulko.com;
      git config --global --add safe.directory "${CI_PROJECT_DIR}";
      export USER=gitlab;
      virtualenv -p /usr/bin/python3 /tmp/venv;
      . /tmp/venv/bin/activate;
      pip install -r test/py/requirements.txt;
      export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl;
      export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
      export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
      set +e;
      ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w
        --board sandbox_spl;
      set -e;
      ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test;
      ./tools/buildman/buildman -t;
      ./tools/dtoc/dtoc -t;
      ./tools/patman/patman test;
      make testconfig

Run tests for Nokia RX-51 (aka N900):
  stage: testsuites
  script:
    - export PATH=/opt/gcc-12.2.0-nolibc/arm-linux-gnueabi/bin:$PATH;
      test/nokia_rx51_test.sh

# Check for any pylint regressions
Run pylint:
  stage: testsuites
  script:
    - git config --global --add safe.directory "${CI_PROJECT_DIR}"
    - pip install -r test/py/requirements.txt
    - pip install asteval pylint==2.12.2 pyopenssl
    - export PATH=${PATH}:~/.local/bin
    - echo "[MASTER]" >> .pylintrc
    - echo "load-plugins=pylint.extensions.docparams" >> .pylintrc
    - export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl
    - set +e
    - ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w
        --board sandbox_spl
    - set -e
    - pylint --version
    - export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"
    - make pylint_err

# Test sandbox with test.py
sandbox test.py:
  variables:
    TEST_PY_BD: "sandbox"
  <<: *buildman_and_testpy_dfn

sandbox with clang test.py:
  variables:
    TEST_PY_BD: "sandbox"
    OVERRIDE: "-O clang-14"
  <<: *buildman_and_testpy_dfn

sandbox without LTO test.py:
  variables:
    TEST_PY_BD: "sandbox"
    BUILD_ENV: "NO_LTO=1"
  <<: *buildman_and_testpy_dfn

sandbox_spl test.py:
  variables:
    TEST_PY_BD: "sandbox_spl"
    TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
  <<: *buildman_and_testpy_dfn

sandbox_noinst_test.py:
  variables:
    TEST_PY_BD: "sandbox_noinst"
    TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
  <<: *buildman_and_testpy_dfn

sandbox_vpl test.py:
  variables:
    TEST_PY_BD: "sandbox_vpl"
    TEST_PY_TEST_SPEC: "test_vpl_help or test_spl"
  <<: *buildman_and_testpy_dfn

# Enable tracing and disable LTO, to ensure functions are not elided
sandbox trace_test.py:
  variables:
    TEST_PY_BD: "sandbox"
    BUILD_ENV: "FTRACE=1 NO_LTO=1"
    TEST_PY_TEST_SPEC: "trace"
    OVERRIDE: "-a CONFIG_TRACE=y -a CONFIG_TRACE_EARLY=y -a CONFIG_TRACE_EARLY_SIZE=0x01000000"
  <<: *buildman_and_testpy_dfn

evb-ast2500 test.py:
  variables:
    TEST_PY_BD: "evb-ast2500"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

evb-ast2600 test.py:
  variables:
    TEST_PY_BD: "evb-ast2600"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

sandbox_flattree test.py:
  variables:
    TEST_PY_BD: "sandbox_flattree"
  <<: *buildman_and_testpy_dfn

vexpress_ca9x4 test.py:
  variables:
    TEST_PY_BD: "vexpress_ca9x4"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

integratorcp_cm926ejs test.py:
  variables:
    TEST_PY_BD: "integratorcp_cm926ejs"
    TEST_PY_TEST_SPEC: "not sleep"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

qemu_arm test.py:
  variables:
    TEST_PY_BD: "qemu_arm"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu_arm64 test.py:
  variables:
    TEST_PY_BD: "qemu_arm64"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu_malta test.py:
  variables:
    TEST_PY_BD: "malta"
    TEST_PY_TEST_SPEC: "not sleep and not efi"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

qemu_maltael test.py:
  variables:
    TEST_PY_BD: "maltael"
    TEST_PY_TEST_SPEC: "not sleep and not efi"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

qemu_malta64 test.py:
  variables:
    TEST_PY_BD: "malta64"
    TEST_PY_TEST_SPEC: "not sleep and not efi"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

qemu_malta64el test.py:
  variables:
    TEST_PY_BD: "malta64el"
    TEST_PY_TEST_SPEC: "not sleep and not efi"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

qemu-ppce500 test.py:
  variables:
    TEST_PY_BD: "qemu-ppce500"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-riscv32 test.py:
  variables:
    TEST_PY_BD: "qemu-riscv32"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-riscv64 test.py:
  variables:
    TEST_PY_BD: "qemu-riscv64"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-riscv32_spl test.py:
  variables:
    TEST_PY_BD: "qemu-riscv32_spl"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-riscv64_spl test.py:
  variables:
    TEST_PY_BD: "qemu-riscv64_spl"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-x86 test.py:
  variables:
    TEST_PY_BD: "qemu-x86"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-x86_64 test.py:
  variables:
    TEST_PY_BD: "qemu-x86_64"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

r2dplus_i82557c test.py:
  variables:
    TEST_PY_BD: "r2dplus"
    TEST_PY_ID: "--id i82557c_qemu"
  <<: *buildman_and_testpy_dfn

r2dplus_pcnet test.py:
  variables:
    TEST_PY_BD: "r2dplus"
    TEST_PY_ID: "--id pcnet_qemu"
  <<: *buildman_and_testpy_dfn

r2dplus_rtl8139 test.py:
  variables:
    TEST_PY_BD: "r2dplus"
    TEST_PY_ID: "--id rtl8139_qemu"
  <<: *buildman_and_testpy_dfn

r2dplus_tulip test.py:
  variables:
    TEST_PY_BD: "r2dplus"
    TEST_PY_ID: "--id tulip_qemu"
  <<: *buildman_and_testpy_dfn

sifive_unleashed_sdcard test.py:
  variables:
    TEST_PY_BD: "sifive_unleashed"
    TEST_PY_ID: "--id sdcard_qemu"
  <<: *buildman_and_testpy_dfn

sifive_unleashed_spi-nor test.py:
  variables:
    TEST_PY_BD: "sifive_unleashed"
    TEST_PY_ID: "--id spi-nor_qemu"
  <<: *buildman_and_testpy_dfn

xilinx_zynq_virt test.py:
  variables:
    TEST_PY_BD: "xilinx_zynq_virt"
    TEST_PY_TEST_SPEC: "not sleep"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

xilinx_versal_virt test.py:
  variables:
    TEST_PY_BD: "xilinx_versal_virt"
    TEST_PY_TEST_SPEC: "not sleep"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

xtfpga test.py:
  variables:
    TEST_PY_BD: "xtfpga"
    TEST_PY_TEST_SPEC: "not sleep"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

coreboot test.py:
  variables:
    TEST_PY_BD: "coreboot"
    TEST_PY_TEST_SPEC: "not sleep"
    TEST_PY_ID: "--id qemu"
  artifacts:
    paths:
      - "*.html"
      - "*.css"
    expire_in: 1 week
  <<: *buildman_and_testpy_dfn
