diff --git a/.github/bin/haddocks.sh b/.github/bin/haddocks.sh deleted file mode 100755 index 1da9c77f2c..0000000000 --- a/.github/bin/haddocks.sh +++ /dev/null @@ -1,148 +0,0 @@ -#!/bin/bash -# Build haddock documentation and an index for all projects in the repository. -# -# usage: -# ./haddocks.sh directory [true|false] -# -# $1 - where to put the generated pages, this directory contents will be wiped -# out (so don't pass `/` or `./` - the latter will delete your 'dist-newstyle') -# (the default is './haddocks') -# $2 - whether to re-build haddocks with `cabal haddock` command or a component name -# (the default is true) -# $3 - cabal build directory -# (the default is "dist-newstyle") - -set -euo pipefail - -OUTPUT_DIR=${1:-"./haddocks"} -REGENERATE=${2:-"true"} -BUILD_DIR=${3:-"dist-newstyle"} -DRY_RUN="${DRY_RUN:-}" - -GHC_VERSION=$(ghc --numeric-version) -OS_ARCH="$(cat "$BUILD_DIR/cache/plan.json" | jq -r '.arch + "-" + .os' | head -n 1 | xargs)" - -if [ "${DRY_RUN}" == 1 ]; then - DRY_RUN_ARGS="--dry-run" -else - DRY_RUN_ARGS="" -fi - -# we don't include `--use-index` option, because then quickjump data is not -# generated. This is not ideal, but there is no way to generate only top level -# `doc-index.html` file. With this approach we get: -# * `doc-index.json` and `doc-index.html` per package -# * we can generate top level `doc-index.json` (which will only work at the top -# level). -# * we could amend package level `doc-index.json` files, but it's enough ... -# this should be fixed upstream. -HADDOCK_OPTS=( - --builddir "${BUILD_DIR}" - --disable-optimization - --haddock-all - --haddock-internal - --haddock-html - --haddock-quickjump - --haddock-hyperlink-source - --haddock-option "--show-all" - --haddock-option "--use-unicode" - --haddock-option="--base-url=.." - --disable-tests - $DRY_RUN_ARGS - ) - -# build documentation of all modules -if [ ${REGENERATE} == "true" ]; then - cabal haddock "${HADDOCK_OPTS[@]}" \ - cardano-cli -elif [ ${REGENERATE} != "false" ]; then - cabal haddock "${HADDOCK_OPTS[@]}" ${REGENERATE} -fi - -if [ "${DRY_RUN}" == 1 ]; then - echo "Exiting dry run" - exit 0 -fi - -mkdir -p "${OUTPUT_DIR}/_plan/" - -# Build plan -for row in $( - cat dist-newstyle/cache/plan.json | \ - jq -r ' - . - | ."install-plan"[] - | select(.style == "local") - | { "dist-dir": ."dist-dir" - , "pkg-name": ."pkg-name" - , "component-name": ."component-name" | split(":") | join("_") - } - | @base64' -); do - json="$(echo "${row}" | base64 --decode)" - - dist_dir="$(echo "$json" | jq -r '."dist-dir"')" - - if [ -d "${dist_dir}" ]; then - echo "$json" > "${OUTPUT_DIR}/_plan/$(echo "$json" | sha256sum | cut -d ' ' -f 1).json" - fi -done - -# Copy the docs -for json in "${OUTPUT_DIR}"/_plan/*.json; do - dist_dir="$(cat "$json" | jq -r '."dist-dir"')" - pkg_name="$(cat "$json" | jq -r '."pkg-name"')" - component_name="$(cat "$json" | jq -r '."component-name"')" - - if [ -d "${dist_dir}" ]; then - for doc_index in $(find "${dist_dir}" -name doc-index.html); do - package_dir="$(dirname "$doc_index")" - package="$(echo "$(basename "${package_dir}")" | sed 's/-[0-9]\+\(\.[0-9]\+\)*//')" - echo "Copying package: ${package}" - mkdir -p "${OUTPUT_DIR}/${pkg_name}/${component_name}" - cp -r "${package_dir}"/* "${OUTPUT_DIR}/${pkg_name}/${component_name}" - echo "${OUTPUT_DIR}/${pkg_name}/${component_name}" - done - fi -done - -# --read-interface options -interface_options () { - for json in "${OUTPUT_DIR}"/_plan/*.json; do - dist_dir="$(cat "$json" | jq -r '."dist-dir"')" - pkg_name="$(cat "$json" | jq -r '."pkg-name"')" - component_name="$(cat "$json" | jq -r '."component-name"')" - - if [ -d "${dist_dir}" ]; then - for doc_index in $(find "${dist_dir}" -name doc-index.html); do - package_dir="$(dirname "$doc_index")" - package="$(echo "$(basename "${package_dir}")" | sed 's/-[0-9]\+\(\.[0-9]\+\)*//')" - if [ -f "${OUTPUT_DIR}/${pkg_name}/${component_name}/${package}.haddock" ]; then - echo "--read-interface=${pkg_name}/${component_name},${OUTPUT_DIR}/${pkg_name}/${component_name}/${package}.haddock" - fi - done - fi - done -} - -haddock \ - -o ${OUTPUT_DIR} \ - --title "cardano-cli API" \ - --package-name "Cardano CLI API" \ - --gen-index \ - --gen-contents \ - --quickjump \ - $(interface_options) - -# Assemble a toplevel `doc-index.json` from package level ones. -# -echo "[]" > "${OUTPUT_DIR}/doc-index.json" -for file in $(ls $OUTPUT_DIR/*/*/doc-index.json); do - project=$(basename $(dirname $file)); - jq -s \ - ".[0] + [.[1][] | (. + {link: (\"${project}/\" + .link)}) ]" \ - "${OUTPUT_DIR}/doc-index.json" \ - ${file} \ - > /tmp/doc-index.json - mv /tmp/doc-index.json "${OUTPUT_DIR}/doc-index.json" -done diff --git a/.github/workflows/cabal.project.local.github-pages b/.github/workflows/cabal.project.local.github-pages deleted file mode 100644 index cf95959882..0000000000 --- a/.github/workflows/cabal.project.local.github-pages +++ /dev/null @@ -1,8 +0,0 @@ -write-ghc-environment-files: always - -ignore-project: False - -package cardano-crypto-praos - flags: -external-libsodium-vrf - -tests: False diff --git a/.github/workflows/github-page.yml b/.github/workflows/github-page.yml index 8c54fa6eaa..e8cf3b61d2 100644 --- a/.github/workflows/github-page.yml +++ b/.github/workflows/github-page.yml @@ -1,141 +1,62 @@ name: "Haddock documentation" on: - pull_request: # REMOVEME + pull_request: # removeme push: branches: - main jobs: build: - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest defaults: run: shell: bash - strategy: - fail-fast: false - matrix: - ghc: ["9.2.7"] - cabal: ["3.10.1.0"] - os: [ubuntu-latest] - - env: - # Modify this value to "invalidate" the cabal cache. - CABAL_CACHE_VERSION: "2023-12-12" - - concurrency: - group: > - a+${{ github.event_name }} - b+${{ github.workflow_ref }} - c+${{ github.job }} - d+${{ matrix.ghc }} - e+${{ matrix.cabal }} - f+${{ matrix.os }} - g+${{ (startsWith(github.ref, 'refs/heads/gh-readonly-queue/') && github.run_id) || github.event.pull_request.number || github.ref }} - cancel-in-progress: true - steps: - - name: Concurrency group - run: > - echo - a+${{ github.event_name }} - b+${{ github.workflow_ref }} - c+${{ github.job }} - d+${{ matrix.ghc }} - e+${{ matrix.cabal }} - f+${{ matrix.os }} - g+${{ (startsWith(github.ref, 'refs/heads/gh-readonly-queue/') && github.run_id) || github.event.pull_request.number || github.ref }} - - - name: Install Haskell - uses: input-output-hk/actions/haskell@latest - id: setup-haskell + - name: Install Nix + uses: cachix/install-nix-action@v18 with: - ghc-version: ${{ matrix.ghc }} - cabal-version: ${{ matrix.cabal }} - - - name: Install system dependencies - uses: input-output-hk/actions/base@latest - with: - use-sodium-vrf: true # default is true + # Use last stable nixos channel and the same nix as in channel: + install_url: https://releases.nixos.org/nix/nix-2.11.1/install + nix_path: nixpkgs=channel:nixos-22.11 + github_access_token: ${{ secrets.GITHUB_TOKEN }} + extra_nix_config: | + access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} + experimental-features = nix-command flakes + allow-import-from-derivation = true + substituters = https://cache.nixos.org https://cache.iog.io + trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= - uses: actions/checkout@v3 - - name: Cabal update - run: cabal update - - - name: Disable all tests + - name: Fetch nix cache and update cabal indices run: | - cat > cabal.project.local <