From 997fe9ff50c190139945b8b169abe59e2fcff0b4 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 10 Dec 2025 12:52:08 +0700 Subject: [PATCH 1/3] ci: Add cargo check --- .gitlab-ci.yml | 27 +++++++++--- check.sh | 113 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 135 insertions(+), 5 deletions(-) create mode 100755 check.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f40961dc85..2daa9e9d86 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,18 +2,35 @@ image: "redoxos/redoxer:latest" stages: - build - + - cross-build # TODO? # - test -# TODO check if all drivers build - fmt: stage: build - needs: [] script: - rustup component add rustfmt - # TODO add more packages as they get formatted - CHECK_ONLY=1 ./fmt.sh # TODO: unit tests + +x86_64: + stage: build + script: + - rustup component add rustfmt + - ./check.sh + +i586: + stage: cross-build + script: + - ./check.sh --arch=i586 + +aarch64: + stage: cross-build + script: + - ./check.sh --arch=aarch64 + +riscv64gc: + stage: cross-build + script: + - ./check.sh --arch=riscv64gc diff --git a/check.sh b/check.sh new file mode 100755 index 0000000000..369d76f5c9 --- /dev/null +++ b/check.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +RED='\033[1;38;5;196m' +GREEN='\033[1;38;5;46m' +NC='\033[0m' + +show_help() { + echo "Usage: $(basename "$0") [OPTIONS]" + echo "" + echo "Description:" + echo " Wrapper for redoxer to run checks or tests on Redox OS targets." + echo "" + echo "Options:" + echo " --test Run 'cargo test' instead of 'cargo check'" + echo " --all-target Run the command on all supported Redox architectures" + echo " --target= Override the target architecture (e.g., i586-unknown-redox)" + echo " --arch= Override the target architecture using arch (e.g., i586)" + echo " --help Show this help message" + echo "" + echo "Supported Targets:" + for t in "${SUPPORTED_TARGETS[@]}"; do + echo " - $t" + done + echo "" + echo "Environment:" + echo " TARGET Sets the default target (overridden by --target)" +} + +if ! command -v redoxer &> /dev/null; then + echo "Error: 'redoxer' CLI not found." + echo "Please install it: cargo install redoxer" + exit 1 +fi + +SUPPORTED_TARGETS=( + "x86_64-unknown-redox" + "i586-unknown-redox" + "aarch64-unknown-redox" + "riscv64gc-unknown-redox" +) + +CURRENT_TARGET="${TARGET:-x86_64-unknown-redox}" +CHECK_ALL=false +CMD_ACTION="check" +while [[ $# -gt 0 ]]; do + case "$1" in + --all-target) + CHECK_ALL=true + ;; + --test) + CMD_ACTION="test" + ;; + --target=*) + CURRENT_TARGET="${1#*=}" + ;; + --arch=*) + CURRENT_TARGET="${1#*=}-unknown-redox" + ;; + --help) + show_help + exit 0 + ;; + *) + echo -e "${RED}Error: Unknown option '$1'${NC}" + show_help + exit 1 + ;; + esac + shift +done + +run_redoxer() { + export TARGET=$1 + redoxer toolchain || { echo -e "${RED}Fail: redoxer toolchain for: $target.${NC}" && exit 1; } + + echo "----------------------------------------" + echo "Running redoxer $CMD_ACTION for: $TARGET" + + if redoxer "$CMD_ACTION"; then + echo -e "${GREEN}Success: $CMD_ACTION $TARGET passed.${NC}" + return 0 + else + echo -e "${RED}Fail: $CMD_ACTION $TARGET failed.${NC}" + return 1 + fi +} + +if [ "$CHECK_ALL" = true ]; then + echo "Running $CMD_ACTION for all supported Redox targets..." + + has_error=false + + for target in "${SUPPORTED_TARGETS[@]}"; do + if ! run_redoxer "$target"; then + has_error=true + fi + done + + echo "----------------------------------------" + if [ "$has_error" = true ]; then + echo -e "${RED}Summary: One or more targets failed.${NC}" + exit 1 + else + echo -e "${GREEN}Summary: All targets passed!${NC}" + exit 0 + fi +else + if run_redoxer "$CURRENT_TARGET"; then + exit 0 + else + exit 1 + fi +fi From 6512ec74dc246fafa8809a111309d3310a6fbf82 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 10 Dec 2025 13:00:22 +0700 Subject: [PATCH 2/3] Reduce logs --- check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/check.sh b/check.sh index 369d76f5c9..674097b507 100755 --- a/check.sh +++ b/check.sh @@ -77,7 +77,6 @@ run_redoxer() { echo "Running redoxer $CMD_ACTION for: $TARGET" if redoxer "$CMD_ACTION"; then - echo -e "${GREEN}Success: $CMD_ACTION $TARGET passed.${NC}" return 0 else echo -e "${RED}Fail: $CMD_ACTION $TARGET failed.${NC}" @@ -106,6 +105,7 @@ if [ "$CHECK_ALL" = true ]; then fi else if run_redoxer "$CURRENT_TARGET"; then + echo -e "${GREEN}Success: $CMD_ACTION $CURRENT_TARGET passed.${NC}" exit 0 else exit 1 From 0ecad02774c36edc7d5d72c6bcc2412377eb77b6 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 10 Dec 2025 13:03:57 +0700 Subject: [PATCH 3/3] Try add rules --- .gitlab-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2daa9e9d86..ecb2229972 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,8 @@ image: "redoxos/redoxer:latest" +workflow: + rules: + - if: '$CI_COMMIT_BRANCH == "main" && $CI_PROJECT_NAMESPACE == "redox-os"' + - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"' stages: - build