diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index abc5003678..8ed615687b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -66,6 +66,7 @@ variables: - apt-get install automake build-essential + ca-certificates git libevent-dev liblzma-dev @@ -77,6 +78,10 @@ variables: zlib1g-dev - if [ "$ASCIIDOC" = yes ]; then apt-get install asciidoc xmlto; fi - if [ "$DOXYGEN" = yes ]; then apt-get install doxygen; fi + - if [ "$STEM" = yes ]; then apt-get install timelimit; fi + - if [ "$CC" = clang ]; then apt-get install clang; fi + - if [ "$STEM" = yes ]; then git clone --depth 1 https://git.torproject.org/stem.git ; export STEM_PATH="$(pwd)/stem"; fi + - if [ "$CHUTNEY" = yes ]; then git clone --depth 1 https://git.torproject.org/chutney.git ; export CHUTNEY_PATH="$(pwd)/chutney"; fi debian-minimal: image: debian:stable @@ -84,17 +89,18 @@ debian-minimal: script: - ./scripts/ci/ci-driver.sh -############################################### -# Temporarily diabled. This one just takes too long to finish right now! + +# TODO: This one just takes too long to finish right now! # Maybe we need to divide the call to ./src/test/test into a few segments, # that all end in similar amount of time? -#debian-hardened: -# image: debian:testing -# <<: *debian-template -# variables: -# HARDENING: "yes" -# script: -# - ./scripts/ci/ci-driver.sh +debian-hardened: + image: debian:testing + <<: *debian-template + variables: + HARDENING: "yes" + CC: "clang" + script: + - ./scripts/ci/ci-driver.sh debian-distcheck: image: debian:stable @@ -105,7 +111,6 @@ debian-distcheck: script: - ./scripts/ci/ci-driver.sh -# TODO: it would be neat to disable the "make all" part of this one. debian-docs: image: debian:stable <<: *debian-template @@ -113,5 +118,16 @@ debian-docs: DOXYGEN: "yes" ASCIIDOC: "yes" CHECK: "no" + RUN_STAGE_BUILD: "no" + script: + - ./scripts/ci/ci-driver.sh + +debian-integration: + image: debian:stable + <<: *debian-template + variables: + CHECK: "no" + CHUTNEY: "yes" + # STEM: "yes" -- currently failing on <044. script: - ./scripts/ci/ci-driver.sh diff --git a/Makefile.am b/Makefile.am index 4b708af9e5..136368088e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -164,6 +164,8 @@ include src/include.am include doc/include.am include contrib/include.am +manpages: $(nodist_man1_MANS) + EXTRA_DIST+= \ ChangeLog \ CONTRIBUTING \ diff --git a/scripts/ci/ci-driver.sh b/scripts/ci/ci-driver.sh index ad08ee5af0..6faffd7b40 100755 --- a/scripts/ci/ci-driver.sh +++ b/scripts/ci/ci-driver.sh @@ -21,6 +21,11 @@ COLOR_CI="${COLOR_CI:-yes}" # Options for which CI system this is. ON_GITLAB="${ON_GITLAB:-yes}" +# Options for things we usually won't want to skip. +RUN_STAGE_CONFIGURE="${RUN_STAGE_CONFIGURE:-yes}" +RUN_STAGE_BUILD="${RUN_STAGE_BUILD:-yes}" +RUN_STAGE_TEST="${RUN_STAGE_TEST:-yes}" + # Options for how to build Tor. All should be yes/no. FATAL_WARNINGS="${FATAL_WARNINGS:-yes}" HARDENING="${HARDENING:-no}" @@ -60,12 +65,14 @@ STEM_PATH="${STEM_PATH:-}" if [[ "${COLOR_CI}" == "yes" ]]; then T_RED=$(tput setaf 1 || true) T_GREEN=$(tput setaf 2 || true) + T_YELLOW=$(tput setaf 3 || true) T_DIM=$(tput dim || true) T_BOLD=$(tput bold || true) T_RESET=$(tput sgr0 || true) else T_RED= T_GREEN= + T_YELLOW= T_DIM= T_BOLD= T_RESET= @@ -80,6 +87,12 @@ function die() echo "${T_BOLD}${T_RED}FATAL ERROR:${T_RESET} $*" 1>&2 exit 1 } + +function skipping() +{ + echo "${T_BOLD}${T_YELLOW}Skipping $*${T_RESET}" +} + function hooray() { echo "${T_BOLD}${T_GREEN}$*${T_RESET}" @@ -165,33 +178,6 @@ else } fi -if [[ "$*" == "" ]]; then - RUN_STAGE_CONFIGURE="yes" - RUN_STAGE_BUILD="yes" - RUN_STAGE_TEST="yes" -else - RUN_STAGE_CONFIGURE="no" - RUN_STAGE_BUILD="no" - RUN_STAGE_TEST="no" - - for stage in "$@"; do - case "$stage" in - configure) - RUN_STAGE_CONFIGURE="yes" - ;; - build) - RUN_STAGE_BUILD="yes" - ;; - test) - RUN_STAGE_TEST="yes" - ;; - *) - error "Unknown stage $stage" - ;; - esac - done -fi - ############################################################################# # Validate inputs. @@ -206,6 +192,10 @@ yes_or_no RUST yes_or_no DOXYGEN yes_or_no ASCIIDOC +yes_or_no RUN_STAGE_CONFIGURE +yes_or_no RUN_STAGE_BUILD +yes_or_no RUN_STAGE_TEST + yes_or_no CHECK yes_or_no STEM yes_or_no DISTCHECK @@ -370,6 +360,7 @@ if [[ "$RUN_STAGE_BUILD" = "yes" ]] ; then end_section Distcheck fi fi + ############################## # Run tests. @@ -378,25 +369,32 @@ if [[ "$RUN_STAGE_TEST" == "no" ]]; then exit 0 fi -if [[ "$RUN_STAGE_BUILD" = "no" ]] ; then - debug "Skipped build stage. Making sure that ./src/app/tor exists." - if [[ ! -f "./src/app/tor" ]]; then - die "$(pwd)/src/app/tor does not exist" - fi -fi - FAILED_TESTS="" -if [[ "${DOXYGEN}" = 'yes' && "${TOR_VER_AT_LEAST_043}" = 'yes' ]]; then +if [[ "${DOXYGEN}" = 'yes' ]]; then start_section Doxygen - if runcmd make doxygen; then - hooray "make doxygen has succeeded." + if [[ "${TOR_VER_AT_LEAST_043}" = 'yes' ]]; then + if runcmd make doxygen; then + hooray "make doxygen has succeeded." + else + FAILED_TESTS="${FAILED_TESTS} doxygen" + fi else - FAILED_TESTS="${FAILED_TESTS} doxygen" + skipping "make doxygen: doxygen is broken for Tor < 0.4.3" fi end_section Doxygen fi +if [[ "${ASCIIDOC}" = 'yes' ]]; then + start_section Asciidoc + if runcmd make manpages; then + hooray "make manpages has succeeded." + else + FAILED_TESTS="${FAILED_TESTS} asciidoc" + fi + end_section Asciidoc +fi + if [[ "${CHECK}" = "yes" ]]; then start_section "Check" if runcmd make "${make_options[@]}" check; then @@ -411,10 +409,13 @@ fi if [[ "${CHUTNEY}" = "yes" ]]; then start_section "Chutney" + export CHUTNEY_TOR_SANDBOX=0 + export CHUTNEY_ALLOW_FAILURES=2 if runcmd make "${CHUTNEY_MAKE_TARGET}"; then hooray "Chutney tests have succeeded" else error "Chutney says:" + export CHUTNEY_DATA_DIR="${CHUTNEY_PATH}/net" runcmd "${CHUTNEY_PATH}"/tools/diagnostics.sh || true # XXXX These next two should be part of a make target. runcmd ls test_network_log || true