# Pipeline minimal redox-wayland-compositor. # # Le repo n'a pas de Cargo workspace racine (chaque crate dans crates/ est # autonome — cf README pour la raison). Les jobs ci-dessous compilent et # testent les crates qui sont indépendantes du target x86_64-unknown-redox # (host-buildable). Pour valider la cross-compile Redox il faut redoxer + # le sysroot Redox (~500 Mo) : volontairement laissé hors du MVP CI, à # activer plus tard via un job `build-redox` avec image custom. stages: - lint - test # Cache partagé : évite de re-télécharger les deps wayland-rs/tracing/etc. # à chaque push. .cargo-cache: &cargo-cache cache: key: cargo-shared paths: - .cargo/registry/cache/ - .cargo/registry/index/ variables: CARGO_HOME: $CI_PROJECT_DIR/.cargo CARGO_TERM_COLOR: always # Build wayland-rs depuis le clone local. La CI a besoin d'un clone # frère ../wayland-rs (cf paths relatifs dans les Cargo.toml). On le # provisionne explicitement dans le before_script de chaque job qui en # a besoin. WAYLAND_RS_REV: master # --------------------------------------------------------------------------- # Lint : formatage uniforme sur les 23 crates. # --------------------------------------------------------------------------- fmt-check: stage: lint image: rust:latest <<: *cargo-cache script: - rustup component add rustfmt - ./fmt.sh --check # --------------------------------------------------------------------------- # Tests compositor-core : pure Rust, zéro dep, stable suffit. # 27 tests unitaires de la logique de composition / Z-order / hit-test. # --------------------------------------------------------------------------- test-core: stage: test image: rust:latest <<: *cargo-cache script: - cd crates/redox-wl-compositor-core - cargo test --release # --------------------------------------------------------------------------- # Tests wayland-frontend : 15 tests xdg-shell (compute_resize_geom, # clamp_to_min_max, should_throttle_configure). Nightly requis à cause de # redox-scheme (deps transitive via redox-wl-input) qui utilise # #![feature(linked_list_cursors)]. # --------------------------------------------------------------------------- test-frontend: stage: test image: rustlang/rust:nightly <<: *cargo-cache before_script: # wayland-rs est référencé en path relatif (../../../wayland-rs/...). # Le clone frère doit exister pour que cargo résolve les deps. - git clone --depth 1 https://github.com/Smithay/wayland-rs.git ../wayland-rs script: - cd crates/redox-wl-wayland-frontend - cargo test --lib