diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b9718af9e77..4fdf3ed5204 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,16 +59,24 @@ build-linux: TARBALL_EXT: tar.xz ADD_CABAL_ARGS: "--enable-split-sections" -build-x86_64-linux-alpine: +build-linux-alpine: extends: .build + parallel: + matrix: + - ARCH: i386 + OS: [alpine3_12] + GHC_VERSION: 9.0.2 + - ARCH: x86_64 + OS: [alpine3_12] tags: - x86_64-linux before_script: # for cabal build - sudo apk add --no-cache zlib zlib-dev zlib-static - image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV" + image: "registry.gitlab.haskell.org/ghc/ci-images/$PLATFORM:$DOCKER_REV" variables: - TARBALL_ARCHIVE_SUFFIX: x86_64-linux-alpine + PLATFORM: "${ARCH}-linux-${OS}" + TARBALL_ARCHIVE_SUFFIX: $PLATFORM TARBALL_EXT: tar.xz ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static" diff --git a/.gitlab/ci.sh b/.gitlab/ci.sh index b0a68079586..c856f9f2cb9 100755 --- a/.gitlab/ci.sh +++ b/.gitlab/ci.sh @@ -27,6 +27,8 @@ export BOOTSTRAP_HASKELL_NONINTERACTIVE=1 export BOOTSTRAP_HASKELL_GHC_VERSION=$GHC_VERSION export BOOTSTRAP_HASKELL_CABAL_VERSION=$CABAL_INSTALL_VERSION export BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG=yes +# We don't use stack, and it isn't available on i386-deb9 +export BOOTSTRAP_HASKELL_INSTALL_NO_STACK=yes # for some reason the subshell doesn't pick up the arm64 environment on darwin # and starts installing x86_64 GHC @@ -63,6 +65,7 @@ args=( ${ADD_CABAL_ARGS} ) +run cabal update hackage.haskell.org,HEAD run cabal v2-build ${args[@]} cabal-install mkdir "$CI_PROJECT_DIR/out" diff --git a/Cabal/src/Distribution/Simple/Haddock.hs b/Cabal/src/Distribution/Simple/Haddock.hs index 784894325cb..f06824b24a9 100644 --- a/Cabal/src/Distribution/Simple/Haddock.hs +++ b/Cabal/src/Distribution/Simple/Haddock.hs @@ -821,6 +821,13 @@ renderArgs verbosity tmpFileOpts version comp platform args k = do else k (renderedArgs, result) where outputDir = (unDir $ argOutputDir args) + isNotArgContents = isNothing (flagToMaybe $ argContents args) + isNotArgIndex = isNothing (flagToMaybe $ argIndex args) + isArgGenIndex = fromFlagOrDefault False (argGenIndex args) + -- Haddock, when generating HTML, does not generate an index if the options + -- --use-contents or --use-index are passed to it. See + -- https://haskell-haddock.readthedocs.io/en/latest/invoking.html#cmdoption-use-contents + isIndexGenerated = isArgGenIndex && isNotArgContents && isNotArgIndex result = intercalate ", " . map @@ -828,7 +835,7 @@ renderArgs verbosity tmpFileOpts version comp platform args k = do outputDir case o of Html - | fromFlagOrDefault False (argGenIndex args) -> + | isIndexGenerated -> "index.html" Html | otherwise -> diff --git a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/A/A.cabal b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/A/A.cabal new file mode 100644 index 00000000000..6808223d511 --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/A/A.cabal @@ -0,0 +1,10 @@ +cabal-version: 3.6 +name: A +synopsis: A minimal test package for testing haddock. +version: 0.0.0 + +library + build-depends: base + default-language: Haskell2010 + exposed-modules: A + hs-source-dirs: . diff --git a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/A/A.hs b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/A/A.hs new file mode 100644 index 00000000000..d34efe10291 --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/A/A.hs @@ -0,0 +1,6 @@ +-- | A minimal test module for testing haddock. +module A (a) where + +-- | a is zero. +a :: Int +a = 0 diff --git a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.out new file mode 100644 index 00000000000..e17593a966c --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.out @@ -0,0 +1,10 @@ +# cabal haddock +Resolving dependencies... +Build profile: -w ghc- -O1 +In order, the following will be built: + - A-0.0.0 (lib) (first run) +Configuring library for A-0.0.0... +Preprocessing library for A-0.0.0... +Running Haddock on library for A-0.0.0... +Documentation created: /cabal.dist/work/dist/build//ghc-/A-0.0.0/doc/html/A-0.0.0-docs/, /cabal.dist/work/dist/build//ghc-/A-0.0.0/doc/html/A-0.0.0-docs/A.txt +Documentation tarball created: /cabal.dist/work/./dist/A-0.0.0-docs.tar.gz diff --git a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.project b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.project new file mode 100644 index 00000000000..421457f944c --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.project @@ -0,0 +1 @@ +packages: A diff --git a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.test.hs b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.test.hs new file mode 100644 index 00000000000..00fcfe4b28e --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.test.hs @@ -0,0 +1,7 @@ +import Test.Cabal.Prelude + +-- Test that `cabal haddock --haddock-for-hackage` does not report that it +-- creates an `index.html` file. +main = cabalTest $ do + r <- cabal' "haddock" ["--haddock-for-hackage", "A"] + assertOutputDoesNotContain "index.html" r diff --git a/cabal.project.release b/cabal.project.release index 1f50c83e324..8d171824287 100644 --- a/cabal.project.release +++ b/cabal.project.release @@ -5,3 +5,4 @@ packages: cabal-install/ tests: False benchmarks: False optimization: True +index-state: hackage.haskell.org 2023-10-13T10:16:13Z diff --git a/changelog.d/pr-9332 b/changelog.d/pr-9332 new file mode 100644 index 00000000000..c5d4c3d4ac4 --- /dev/null +++ b/changelog.d/pr-9332 @@ -0,0 +1,4 @@ +synopsis: Don't report `index.html` file as created, if not created by Haddock +packages: Cabal cabal-install +prs: #9332 +issues: #5120