Compare commits
23 Commits
debian-uns
...
cabal-inst
| Author | SHA1 | Date | |
|---|---|---|---|
| bbd150a777 | |||
| 567fdeba31 | |||
| 44c4df7024 | |||
| f755827e5e | |||
| a5bc56c914 | |||
| 601b3e8d33 | |||
| eb717c5a12 | |||
| 48e58345b0 | |||
| 407cc0fafe | |||
| 6b3f8f0732 | |||
| f6de249dc1 | |||
| b928b5e0dd | |||
| 999be172de | |||
| 67885734c9 | |||
| 988dcdac63 | |||
| 0f13265d12 | |||
|
|
967d4a81ab | ||
| b81e05d21e | |||
| a586bd5dba | |||
| a1a80e41c9 | |||
| e9cc5626cb | |||
| cb09653a1b | |||
| 7bf64b363e |
33
.cirrus.yml
Normal file
33
.cirrus.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
# release CI for FreeBSD
|
||||
compute_engine_instance:
|
||||
image_project: freebsd-org-cloud-dev
|
||||
image: family/freebsd-13-2
|
||||
platform: freebsd
|
||||
disk: 100 # Gb
|
||||
|
||||
build_task:
|
||||
timeout_in: 120m
|
||||
trigger_type: manual
|
||||
env:
|
||||
ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
ARCH: 64
|
||||
ARTIFACT: "x86_64-portbld-freebsd"
|
||||
CIRRUS_CLONE_SUBMODULES: true
|
||||
DISTRO: na
|
||||
GHC_VERSION: 9.2.4
|
||||
GITHUB_WORKSPACE: ${CIRRUS_WORKING_DIR}
|
||||
RUNNER_OS: FreeBSD
|
||||
TARBALL_EXT: tar.xz
|
||||
TZ: Asia/Singapore
|
||||
install_script:
|
||||
- sed -i.bak -e 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
|
||||
- pkg install -y ghc hs-cabal-install git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14 patchelf tree gmp libiconv
|
||||
script:
|
||||
- tzsetup Etc/GMT
|
||||
- adjkerntz -a
|
||||
#- git clone --branch cabal-install-v3.6.2.0-p1 https://github.com/hasufell/cabal.git
|
||||
#- cd cabal/
|
||||
- bash .github/scripts/build.sh
|
||||
binaries_artifacts:
|
||||
path: "cabal/out/*"
|
||||
|
||||
28
.github/scripts/brew.sh
vendored
Normal file
28
.github/scripts/brew.sh
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eux
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
. .github/scripts/env.sh
|
||||
|
||||
if [ -e "$HOME/.brew" ] ; then
|
||||
(
|
||||
cd "$HOME/.brew"
|
||||
git fetch --depth 1
|
||||
git reset --hard origin/master
|
||||
)
|
||||
else
|
||||
git clone --depth=1 https://github.com/Homebrew/brew "$HOME/.brew"
|
||||
fi
|
||||
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH"
|
||||
|
||||
mkdir -p "$CI_PROJECT_DIR/.brew_cache"
|
||||
export HOMEBREW_CACHE="$CI_PROJECT_DIR/.brew_cache"
|
||||
mkdir -p "$CI_PROJECT_DIR/.brew_logs"
|
||||
export HOMEBREW_LOGS="$CI_PROJECT_DIR/.brew_logs"
|
||||
mkdir -p /private/tmp/.brew_tmp
|
||||
export HOMEBREW_TEMP=/private/tmp/.brew_tmp
|
||||
|
||||
#brew update
|
||||
brew install ${1+"$@"}
|
||||
|
||||
66
.github/scripts/build.sh
vendored
Normal file
66
.github/scripts/build.sh
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eux
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
. .github/scripts/env.sh
|
||||
# shellcheck disable=SC1091
|
||||
. .github/scripts/common.sh
|
||||
|
||||
uname -a
|
||||
uname -p
|
||||
uname
|
||||
pwd
|
||||
env
|
||||
|
||||
# ensure ghcup
|
||||
install_ghcup
|
||||
|
||||
# build
|
||||
ghcup install ghc "${GHC_VERSION}"
|
||||
ghcup set ghc "${GHC_VERSION}"
|
||||
sed -i.bak -e '/DELETE MARKER FOR CI/,/END DELETE/d' cabal.project # see comment in cabal.project
|
||||
ecabal update
|
||||
ecabal user-config diff
|
||||
ecabal user-config init -f
|
||||
"ghc-${GHC_VERSION}" --info
|
||||
"ghc" --info
|
||||
|
||||
# https://github.com/haskell/cabal/issues/7313#issuecomment-811851884
|
||||
if [ "$(getconf LONG_BIT)" == "32" ] || [ "${DISTRO}" == "CentOS" ] ; then
|
||||
echo 'constraints: lukko -ofd-locking' >> cabal.project.release.local
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2206
|
||||
args=(
|
||||
-w "ghc-$GHC_VERSION"
|
||||
--disable-profiling
|
||||
--enable-executable-stripping
|
||||
--project-file=cabal.project.release
|
||||
${ADD_CABAL_ARGS}
|
||||
)
|
||||
|
||||
run cabal v2-build "${args[@]}" cabal-install
|
||||
|
||||
mkdir -p "$CI_PROJECT_DIR/out"
|
||||
# shellcheck disable=SC2154
|
||||
cp "$(cabal list-bin "${args[@]}" cabal-install:exe:cabal)" "$CI_PROJECT_DIR/out/cabal$ext"
|
||||
cp dist-newstyle/cache/plan.json "$CI_PROJECT_DIR/out/plan.json"
|
||||
cd "$CI_PROJECT_DIR/out/"
|
||||
|
||||
# create tarball/zip
|
||||
TARBALL_PREFIX="cabal-install-$("$CI_PROJECT_DIR/out/cabal" --numeric-version)"
|
||||
case "${TARBALL_EXT}" in
|
||||
zip)
|
||||
zip "${TARBALL_PREFIX}-${ARTIFACT}.${TARBALL_EXT}" "cabal${ext}" plan.json
|
||||
;;
|
||||
tar.xz)
|
||||
tar caf "${TARBALL_PREFIX}-${ARTIFACT}.${TARBALL_EXT}" "cabal${ext}" plan.json
|
||||
;;
|
||||
*)
|
||||
fail "Unknown TARBALL_EXT: ${TARBALL_EXT}"
|
||||
;;
|
||||
esac
|
||||
|
||||
rm cabal plan.json
|
||||
|
||||
110
.github/scripts/common.sh
vendored
Normal file
110
.github/scripts/common.sh
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
#!/bin/bash
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
. .github/scripts/env.sh
|
||||
|
||||
# Colors
|
||||
RED="0;31"
|
||||
LT_BROWN="1;33"
|
||||
LT_BLUE="1;34"
|
||||
|
||||
ecabal() {
|
||||
cabal "$@"
|
||||
}
|
||||
|
||||
nonfatal() {
|
||||
"$@" || "$* failed"
|
||||
}
|
||||
|
||||
sha_sum() {
|
||||
if [ "${RUNNER_OS}" = "FreeBSD" ] ; then
|
||||
sha256 "$@"
|
||||
else
|
||||
sha256sum "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
git_describe() {
|
||||
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
|
||||
git describe --always
|
||||
}
|
||||
|
||||
install_ghcup() {
|
||||
# find "$GHCUP_INSTALL_BASE_PREFIX"
|
||||
mkdir -p "$GHCUP_BIN"
|
||||
mkdir -p "$GHCUP_BIN"/../cache
|
||||
|
||||
if [ "${RUNNER_OS}" = "FreeBSD" ] ; then
|
||||
curl -o ghcup https://downloads.haskell.org/ghcup/tmp/x86_64-portbld-freebsd-ghcup-0.1.18.1
|
||||
chmod +x ghcup
|
||||
mv ghcup "$HOME/.local/bin/ghcup"
|
||||
else
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_MINIMAL=1 sh
|
||||
source "$(dirname "${GHCUP_BIN}")/env"
|
||||
ghcup install cabal --set "${BOOTSTRAP_HASKELL_CABAL_VERSION}"
|
||||
fi
|
||||
}
|
||||
|
||||
strip_binary() {
|
||||
(
|
||||
set -e
|
||||
local binary=$1
|
||||
case "$(uname -s)" in
|
||||
"Darwin"|"darwin")
|
||||
;;
|
||||
MSYS_*|MINGW*)
|
||||
;;
|
||||
*)
|
||||
strip -s "${binary}"
|
||||
;;
|
||||
esac
|
||||
)
|
||||
}
|
||||
|
||||
# GitLab Pipelines log section delimiters
|
||||
# https://gitlab.com/gitlab-org/gitlab-foss/issues/14664
|
||||
start_section() {
|
||||
name="$1"
|
||||
echo -e "section_start:$(date +%s):$name\015\033[0K"
|
||||
}
|
||||
|
||||
end_section() {
|
||||
name="$1"
|
||||
echo -e "section_end:$(date +%s):$name\015\033[0K"
|
||||
}
|
||||
|
||||
echo_color() {
|
||||
local color="$1"
|
||||
local msg="$2"
|
||||
echo -e "\033[${color}m${msg}\033[0m"
|
||||
}
|
||||
|
||||
error() { echo_color "${RED}" "$1"; }
|
||||
warn() { echo_color "${LT_BROWN}" "$1"; }
|
||||
info() { echo_color "${LT_BLUE}" "$1"; }
|
||||
|
||||
fail() { error "error: $1"; exit 1; }
|
||||
|
||||
run() {
|
||||
info "Running $*..."
|
||||
"$@" || ( error "$* failed"; return 1; )
|
||||
}
|
||||
|
||||
emake() {
|
||||
if command -v gmake >/dev/null 2>&1 ; then
|
||||
gmake "$@"
|
||||
else
|
||||
make "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
mktempdir() {
|
||||
case "$(uname -s)" in
|
||||
"Darwin"|"darwin")
|
||||
mktemp -d -t cabal_ci.XXXXXXX
|
||||
;;
|
||||
*)
|
||||
mktemp -d
|
||||
;;
|
||||
esac
|
||||
}
|
||||
38
.github/scripts/env.sh
vendored
Normal file
38
.github/scripts/env.sh
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir -p "$HOME"/.local/bin
|
||||
|
||||
if [ "${RUNNER_OS}" = "Windows" ] ; then
|
||||
ext=".exe"
|
||||
else
|
||||
# shellcheck disable=SC2034
|
||||
ext=''
|
||||
fi
|
||||
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
|
||||
export BOOTSTRAP_HASKELL_NONINTERACTIVE=1
|
||||
export BOOTSTRAP_HASKELL_CABAL_VERSION="${CABAL_VER:-3.8.1.0}"
|
||||
export BOOTSTRAP_HASKELL_ADJUST_CABAL_CONFIG=no
|
||||
export BOOTSTRAP_HASKELL_INSTALL_NO_STACK=yes
|
||||
export BOOTSTRAP_HASKELL_ADJUST_BASHRC=1
|
||||
|
||||
if [ "${RUNNER_OS}" = "Windows" ] ; then
|
||||
# on windows use pwd to get unix style path
|
||||
CI_PROJECT_DIR="$(pwd)"
|
||||
export CI_PROJECT_DIR
|
||||
export GHCUP_INSTALL_BASE_PREFIX="/c"
|
||||
export GHCUP_BIN="$GHCUP_INSTALL_BASE_PREFIX/ghcup/bin"
|
||||
export PATH="$GHCUP_BIN:$PATH"
|
||||
export CABAL_DIR="C:\\Users\\runneradmin\\AppData\\Roaming\\cabal"
|
||||
else
|
||||
export CI_PROJECT_DIR="${GITHUB_WORKSPACE}"
|
||||
export GHCUP_INSTALL_BASE_PREFIX="$CI_PROJECT_DIR"
|
||||
export GHCUP_BIN="$GHCUP_INSTALL_BASE_PREFIX/.ghcup/bin"
|
||||
export PATH="$GHCUP_BIN:$PATH"
|
||||
export CABAL_DIR="$CI_PROJECT_DIR/cabal"
|
||||
export CABAL_CACHE="$CI_PROJECT_DIR/cabal-cache"
|
||||
fi
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
export TZ=Asia/Singapore
|
||||
396
.github/workflows/cabal-release.yaml
vendored
Normal file
396
.github/workflows/cabal-release.yaml
vendored
Normal file
@@ -0,0 +1,396 @@
|
||||
name: Cabal Bindist build
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
repo:
|
||||
description: Repo
|
||||
required: true
|
||||
default: hasufell/cabal
|
||||
type: string
|
||||
ref:
|
||||
description: Git ref
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
build-linux:
|
||||
name: Build linux binaries
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
TARBALL_EXT: tar.xz
|
||||
ARCH: 64
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
TZ: Asia/Singapore
|
||||
GHC_VERSION: 9.2.8
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
platform: [ { image: "debian:9"
|
||||
, installCmd: "sed -i s/deb.debian.org/archive.debian.org/g /etc/apt/sources.list && sed -i 's|security.debian.org|archive.debian.org/|g' /etc/apt/sources.list && sed -i /-updates/d /etc/apt/sources.list && apt-get update && apt-get install -y"
|
||||
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
|
||||
, DISTRO: "Debian"
|
||||
, ARTIFACT: "x86_64-linux-deb9"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "debian:10"
|
||||
, installCmd: "apt-get update && apt-get install -y"
|
||||
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
|
||||
, DISTRO: "Debian"
|
||||
, ARTIFACT: "x86_64-linux-deb10"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "debian:11"
|
||||
, installCmd: "apt-get update && apt-get install -y"
|
||||
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
|
||||
, DISTRO: "Debian"
|
||||
, ARTIFACT: "x86_64-linux-deb11"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "ubuntu:18.04"
|
||||
, installCmd: "apt-get update && apt-get install -y"
|
||||
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
|
||||
, DISTRO: "Ubuntu"
|
||||
, ARTIFACT: "x86_64-linux-ubuntu18.04"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "ubuntu:20.04"
|
||||
, installCmd: "apt-get update && apt-get install -y"
|
||||
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
|
||||
, DISTRO: "Ubuntu"
|
||||
, ARTIFACT: "x86_64-linux-ubuntu20.04"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "ubuntu:22.04"
|
||||
, installCmd: "apt-get update && apt-get install -y"
|
||||
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
|
||||
, DISTRO: "Ubuntu"
|
||||
, ARTIFACT: "x86_64-linux-ubuntu22.04"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "linuxmintd/mint19.3-amd64"
|
||||
, installCmd: "apt-get update && apt-get install -y"
|
||||
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
|
||||
, DISTRO: "Mint"
|
||||
, ARTIFACT: "x86_64-linux-mint19.3"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "linuxmintd/mint20.2-amd64"
|
||||
, installCmd: "apt-get update && apt-get install -y"
|
||||
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
|
||||
, DISTRO: "Mint"
|
||||
, ARTIFACT: "x86_64-linux-mint20.2"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "fedora:27"
|
||||
, installCmd: "dnf install -y"
|
||||
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf"
|
||||
, DISTRO: "Fedora"
|
||||
, ARTIFACT: "x86_64-linux-fedora27"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "fedora:33"
|
||||
, installCmd: "dnf install -y"
|
||||
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf"
|
||||
, DISTRO: "Fedora"
|
||||
, ARTIFACT: "x86_64-linux-fedora33"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "centos:7"
|
||||
, installCmd: "yum -y install epel-release && yum install -y"
|
||||
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf"
|
||||
, DISTRO: "CentOS"
|
||||
, ARTIFACT: "x86_64-linux-centos7"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "rockylinux:8"
|
||||
, installCmd: "yum -y install epel-release && yum install -y --allowerasing"
|
||||
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf"
|
||||
, DISTRO: "Unknown"
|
||||
, ARTIFACT: "x86_64-linux-rocky8"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections"
|
||||
},
|
||||
{ image: "alpine:latest"
|
||||
, installCmd: "apk update && apk add"
|
||||
, toolRequirements: "binutils-gold curl gcc g++ gmp-dev libc-dev libffi-dev make musl-dev ncurses-dev perl tar xz autoconf automake bzip2 coreutils elfutils-dev findutils git jq bzip2-dev patch python3 sqlite sudo wget which zlib-dev patchelf zlib zlib-dev zlib-static"
|
||||
, DISTRO: "Unknown"
|
||||
, ARTIFACT: "x86_64-linux-unknown"
|
||||
, ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
|
||||
}
|
||||
|
||||
]
|
||||
container:
|
||||
image: ${{ matrix.platform.image }}
|
||||
steps:
|
||||
- name: Install requirements
|
||||
shell: sh
|
||||
run: |
|
||||
${{ matrix.platform.installCmd }} curl bash git ${{ matrix.platform.toolRequirements }}
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: ${{ github.event.inputs.repo }}
|
||||
ref: ${{ github.event.inputs.ref }}
|
||||
|
||||
|
||||
- name: Run build
|
||||
run: |
|
||||
bash .github/scripts/build.sh
|
||||
|
||||
env:
|
||||
ARTIFACT: ${{ matrix.platform.ARTIFACT }}
|
||||
DISTRO: ${{ matrix.platform.DISTRO }}
|
||||
ADD_CABAL_ARGS: ${{ matrix.platform.ADD_CABAL_ARGS }}
|
||||
|
||||
- if: always()
|
||||
name: Upload artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
if-no-files-found: error
|
||||
retention-days: 2
|
||||
name: artifacts
|
||||
path: |
|
||||
./out/*
|
||||
|
||||
build-linux-32bit:
|
||||
name: Build linux binaries (32bit)
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
TARBALL_EXT: tar.xz
|
||||
ARCH: 32
|
||||
TZ: Asia/Singapore
|
||||
GHC_VERSION: 9.2.1
|
||||
DISTRO: "Unknown"
|
||||
ARTIFACT: "i386-linux-unknown"
|
||||
ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: ${{ github.event.inputs.repo }}
|
||||
ref: ${{ github.event.inputs.ref }}
|
||||
submodules: 'true'
|
||||
|
||||
- name: Run build (32 bit linux)
|
||||
uses: docker://hasufell/i386-alpine-haskell:3.12
|
||||
with:
|
||||
args: sh -c "apk update && apk add bash binutils-gold curl gcc g++ gmp-dev libc-dev libffi-dev make musl-dev ncurses-dev perl tar xz autoconf automake bzip2 coreutils elfutils-dev findutils git jq bzip2-dev patch python3 sqlite sudo wget which zlib-dev patchelf zlib zlib-dev zlib-static && bash .github/scripts/build.sh"
|
||||
|
||||
- if: always()
|
||||
name: Upload artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
if-no-files-found: error
|
||||
retention-days: 2
|
||||
name: artifacts
|
||||
path: |
|
||||
./out/*
|
||||
|
||||
build-arm:
|
||||
name: Build ARM binary
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
TARBALL_EXT: tar.xz
|
||||
ADD_CABAL_ARGS: ""
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
TZ: Asia/Singapore
|
||||
ARCH: ARM64
|
||||
DISTRO: Ubuntu
|
||||
GHC_VERSION: 9.2.8
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: [self-hosted, Linux, ARM64]
|
||||
ARCH: ARM
|
||||
ARTIFACT: "armv7-linux-ubuntu20"
|
||||
- os: [self-hosted, Linux, ARM64]
|
||||
ARCH: ARM64
|
||||
ARTIFACT: "aarch64-linux-ubuntu20"
|
||||
steps:
|
||||
- uses: docker://arm64v8/ubuntu:focal
|
||||
name: Cleanup (aarch64 linux)
|
||||
with:
|
||||
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
|
||||
|
||||
- name: git config
|
||||
run: |
|
||||
git config --global --get-all safe.directory | grep '^\*$' || git config --global --add safe.directory "*"
|
||||
shell: bash
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: ${{ github.event.inputs.repo }}
|
||||
ref: ${{ github.event.inputs.ref }}
|
||||
|
||||
- if: matrix.ARCH == 'ARM'
|
||||
uses: docker://hasufell/arm32v7-ubuntu-haskell:focal
|
||||
name: Run build (armv7 linux)
|
||||
with:
|
||||
args: bash .github/scripts/build.sh
|
||||
env:
|
||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
||||
|
||||
- if: matrix.ARCH == 'ARM64'
|
||||
uses: docker://hasufell/arm64v8-ubuntu-haskell:focal
|
||||
name: Run build (aarch64 linux)
|
||||
with:
|
||||
args: bash .github/scripts/build.sh
|
||||
env:
|
||||
ARTIFACT: ${{ matrix.ARTIFACT }}
|
||||
|
||||
- if: always()
|
||||
name: Upload artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
if-no-files-found: error
|
||||
retention-days: 2
|
||||
name: artifacts
|
||||
path: |
|
||||
./out/*
|
||||
|
||||
build-mac-x86_64:
|
||||
name: Build binary (Mac x86_64)
|
||||
runs-on: macOS-11
|
||||
env:
|
||||
MACOSX_DEPLOYMENT_TARGET: 10.13
|
||||
ADD_CABAL_ARGS: ""
|
||||
ARTIFACT: "x86_64-apple-darwin"
|
||||
ARCH: 64
|
||||
TARBALL_EXT: tar.xz
|
||||
DISTRO: na
|
||||
GHC_VERSION: 9.2.8
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: ${{ github.event.inputs.repo }}
|
||||
ref: ${{ github.event.inputs.ref }}
|
||||
|
||||
- name: Run build
|
||||
run: |
|
||||
brew install coreutils tree
|
||||
bash .github/scripts/build.sh
|
||||
|
||||
- if: always()
|
||||
name: Upload artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
if-no-files-found: error
|
||||
retention-days: 2
|
||||
name: artifacts
|
||||
path: |
|
||||
./out/*
|
||||
|
||||
build-mac-aarch64:
|
||||
name: Build binary (Mac aarch64)
|
||||
runs-on: [self-hosted, macOS, ARM64]
|
||||
env:
|
||||
MACOSX_DEPLOYMENT_TARGET: 10.13
|
||||
ADD_CABAL_ARGS: ""
|
||||
ARTIFACT: "aarch64-apple-darwin"
|
||||
ARCH: ARM64
|
||||
TARBALL_EXT: tar.xz
|
||||
DISTRO: na
|
||||
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
|
||||
GHC_VERSION: 9.2.8
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: ${{ github.event.inputs.repo }}
|
||||
ref: ${{ github.event.inputs.ref }}
|
||||
|
||||
- name: Run build
|
||||
run: |
|
||||
bash .github/scripts/brew.sh git coreutils autoconf automake tree
|
||||
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$PATH"
|
||||
export LD=ld
|
||||
bash .github/scripts/build.sh
|
||||
|
||||
- if: always()
|
||||
name: Upload artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
if-no-files-found: error
|
||||
retention-days: 2
|
||||
name: artifacts
|
||||
path: |
|
||||
./out/*
|
||||
|
||||
build-win:
|
||||
name: Build binary (Win)
|
||||
runs-on: windows-latest
|
||||
env:
|
||||
ADD_CABAL_ARGS: ""
|
||||
ARTIFACT: "x86_64-mingw64"
|
||||
ARCH: 64
|
||||
TARBALL_EXT: "zip"
|
||||
DISTRO: na
|
||||
GHC_VERSION: 9.2.8
|
||||
steps:
|
||||
- name: install windows deps
|
||||
shell: pwsh
|
||||
run: |
|
||||
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -Syuu"
|
||||
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -Syuu"
|
||||
C:\msys64\usr\bin\bash -lc "pacman --disable-download-timeout --noconfirm -S make mingw-w64-x86_64-clang curl autoconf mingw-w64-x86_64-pkgconf ca-certificates base-devel gettext autoconf make libtool automake python p7zip patch unzip zip git"
|
||||
taskkill /F /FI "MODULES eq msys-2.0.dll"
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: ${{ github.event.inputs.repo }}
|
||||
ref: ${{ github.event.inputs.ref }}
|
||||
|
||||
- name: Run build (windows)
|
||||
run: |
|
||||
$env:CHERE_INVOKING = 1
|
||||
$env:MSYS2_PATH_TYPE = "inherit"
|
||||
$ErrorActionPreference = "Stop"
|
||||
C:\msys64\usr\bin\bash -lc "bash .github/scripts/build.sh"
|
||||
shell: pwsh
|
||||
|
||||
- if: always()
|
||||
name: Upload artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
if-no-files-found: error
|
||||
retention-days: 2
|
||||
name: artifacts
|
||||
path: |
|
||||
./out/*
|
||||
|
||||
release:
|
||||
name: release
|
||||
needs: ["build-linux", "build-linux-32bit", "build-arm", "build-mac-x86_64", "build-mac-aarch64", "build-win"]
|
||||
runs-on: ubuntu-latest
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: ${{ github.event.inputs.repo }}
|
||||
ref: ${{ github.event.inputs.ref }}
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: artifacts
|
||||
path: ./out
|
||||
|
||||
- name: Install requirements
|
||||
run: |
|
||||
sudo apt-get update && sudo apt-get install -y tar xz-utils
|
||||
shell: bash
|
||||
|
||||
- name: build sdists
|
||||
run: |
|
||||
cabal sdist -o out all
|
||||
shell: bash
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
draft: true
|
||||
files: |
|
||||
./out/*
|
||||
|
||||
6
.github/workflows/install-bindist.sh
vendored
6
.github/workflows/install-bindist.sh
vendored
@@ -29,6 +29,8 @@ mkdir -p /tmp/install-bindist-ci
|
||||
cp "$METADATA_FILE" /tmp/install-bindist-ci/
|
||||
cd /tmp/install-bindist-ci
|
||||
|
||||
trap 'rm -rf -- /tmp/install-bindist-ci' EXIT
|
||||
|
||||
cat <<EOF > main.hs
|
||||
{- cabal:
|
||||
build-depends: base
|
||||
@@ -103,6 +105,10 @@ case $TOOL in
|
||||
ghc --info
|
||||
ghc -prof main.hs
|
||||
[[ $(./main +RTS -s) -eq 2 ]]
|
||||
ghcup_fun install cabal recommended
|
||||
cabal --version
|
||||
cabal update
|
||||
cabal install --lib --package-env=. clock
|
||||
;;
|
||||
cabal)
|
||||
ghcup_fun install ghc --set "$(ghcup_fun list -t ghc -r -c available | tail -1 | awk '{ print $2 }')"
|
||||
|
||||
10
README.md
10
README.md
@@ -7,7 +7,7 @@
|
||||
* `ghcup-A.B.C.yaml`: this is the main metadata and what ghcup uses by default
|
||||
* `ghcup-vanilla-A.B.C.yaml`: this is similar to `ghcup-A.B.C.yaml`, but only uses upstream bindists (no patches/fixes are applied, no missing platforms added)
|
||||
* `ghcup-prereleases-A.B.C.yaml`: this contains pre-releases of all tools
|
||||
* `ghcup-cross-A.B.C.yaml`: this contains (usually experimental) cross compilers
|
||||
* `ghcup-cross-A.B.C.yaml`: this contains experimental cross compilers. See https://www.haskell.org/ghcup/guide/#cross-support for details.
|
||||
|
||||
### Using the metadata
|
||||
|
||||
@@ -18,6 +18,14 @@ ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup
|
||||
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-cross-0.0.8.yaml
|
||||
```
|
||||
|
||||
If you want **only** vanilla upstream bindists and opt out of all unofficial stuff, you'd run:
|
||||
|
||||
```sh
|
||||
ghcup config set url-source https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-vanilla-0.0.8.yaml
|
||||
```
|
||||
|
||||
Also check the [config.yaml documentation](https://github.com/haskell/ghcup-hs/blob/master/data/config.yaml).
|
||||
|
||||
## For contributors
|
||||
|
||||
### Adding a new GHC version
|
||||
|
||||
@@ -2954,6 +2954,12 @@ ghcupDownloads:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.8/ghc-9.2.8-aarch64-apple-darwin.tar.xz
|
||||
dlSubdir: ghc-9.2.8-aarch64-apple-darwin
|
||||
dlHash: 34db9b19571905b08ca1e444b46490e7c19cb73a0fe778696fa6ec02ff8d3c4b
|
||||
A_ARM:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/9.2.8/ghc-9.2.8-armv7-deb10-linux-gnueabihf.tar.xz
|
||||
dlSubdir: ghc-9.2.8-armv7-linux-gnueabihf
|
||||
dlHash: d8926744e542a89f150635fdb2d0234c715e39caface4dcb2f0f989c96af51f1
|
||||
9.4.1:
|
||||
viTags:
|
||||
- base-4.17.0.0
|
||||
|
||||
Binary file not shown.
@@ -2954,6 +2954,12 @@ ghcupDownloads:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.8/ghc-9.2.8-aarch64-apple-darwin.tar.xz
|
||||
dlSubdir: ghc-9.2.8-aarch64-apple-darwin
|
||||
dlHash: 34db9b19571905b08ca1e444b46490e7c19cb73a0fe778696fa6ec02ff8d3c4b
|
||||
A_ARM:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/9.2.8/ghc-9.2.8-armv7-deb10-linux-gnueabihf.tar.xz
|
||||
dlSubdir: ghc-9.2.8-armv7-linux-gnueabihf
|
||||
dlHash: d8926744e542a89f150635fdb2d0234c715e39caface4dcb2f0f989c96af51f1
|
||||
9.4.1:
|
||||
viTags:
|
||||
- base-4.17.0.0
|
||||
|
||||
Binary file not shown.
@@ -27,16 +27,30 @@ ghcupDownloads:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/javascript-unknown-ghcjs-9.6.2/ghc-javascript-unknown-ghcjs-9.6.2-aarch64-apple-darwin.tar.xz
|
||||
dlHash: 0d65bb3940a820d95b4b33ea0cd61bf39670d48c4d8f747153ded01a7ef34821
|
||||
dlSubdir: ghc-9.6.2-javascript-unknown-ghcjs
|
||||
wasm32-wasi-9.6.2.20230523:
|
||||
wasm32-wasi-9.6.3.20230927:
|
||||
viTags:
|
||||
- base-4.18.0.0
|
||||
- base-4.18.1.0
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghc-wasm32-wasi-64-static
|
||||
dlHash: 85433ce296f2f95a5c60f78060cb4a3a8bf8b56bf83ddd75f1b23cb2e2378888
|
||||
dlSubdir: ghc-9.6.2.20230523-wasm32-wasi
|
||||
dlUri: https://gitlab.haskell.org/api/v4/projects/3223/jobs/1530829/artifacts/ghc-x86_64-linux-alpine3_12-cross_wasm32-wasi-release%2Bfully_static.tar.xz
|
||||
dlOutput: ghc-9.6.2.20230523-x86_64-linux-alpine3_12-cross_wasm32-wasi-release+fully_static.tar.xz
|
||||
unknown_versioning: &ghc-wasm32-wasi-963-64-static
|
||||
dlHash: 2e1d363320c03e35fd9048a252a0cfed8f7b87da76c063c7fc52122c390f42c3
|
||||
dlSubdir: ghc-9.6.3.20230927-wasm32-wasi
|
||||
dlUri: https://github.com/amesgen/ghc-wasm-bindists/releases/download/20231001T201511/wasm32-wasi-ghc-9.6.tar.xz
|
||||
dlOutput: ghc-9.6.3.20230927-x86_64-linux-alpine3_12-cross_wasm32-wasi-release+fully_static.tar.xz
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghc-wasm32-wasi-64-static
|
||||
unknown_versioning: *ghc-wasm32-wasi-963-64-static
|
||||
wasm32-wasi-9.8.0.20230927:
|
||||
viTags:
|
||||
- base-4.19.0.0
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghc-wasm32-wasi-980-64-static
|
||||
dlHash: bad3393b6eba103230c62f050ffd9d458916c6238e5d5fa031d3eee5d995305a
|
||||
dlSubdir: ghc-9.8.0.20230927-wasm32-wasi
|
||||
dlUri: https://github.com/amesgen/ghc-wasm-bindists/releases/download/20231001T201511/wasm32-wasi-ghc-9.8.tar.xz
|
||||
dlOutput: ghc-9.8.0.20230927-x86_64-linux-alpine3_12-cross_wasm32-wasi-release+fully_static.tar.xz
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghc-wasm32-wasi-980-64-static
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1527,55 +1527,3 @@ ghcupDownloads:
|
||||
dlHash: 9c3b957c7c8b1c5c09e0251907372563b48d5869c31e35be43916736f679535d
|
||||
dlSubdir:
|
||||
RegexDir: "stack-.*"
|
||||
|
||||
GHCup:
|
||||
0.1.19.5:
|
||||
viTags:
|
||||
- Latest
|
||||
- Recommended
|
||||
viChangeLog: https://github.com/haskell/ghcup-hs/blob/master/CHANGELOG.md
|
||||
viSourceDL:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/ghcup-0.1.19.5-src.tar.gz
|
||||
dlSubdir: ghcup-0.1.19.5
|
||||
dlHash: abfb1f18201c77bcebae6a0282844df2cc644427270a8df9af341901211f7b9c
|
||||
viArch:
|
||||
A_64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-64
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-linux-ghcup-0.1.19.5
|
||||
dlHash: 2d07c7c64d9eb472d85210c27c4489931804fd753a99724d1df740dbf1bfc5a5
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-apple-darwin-ghcup-0.1.19.5
|
||||
dlHash: bde41f049e795e086c1ee27a4ae0629285c56bdf041f039e798f77481a133202
|
||||
FreeBSD:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-portbld-freebsd-ghcup-0.1.19.5
|
||||
dlHash: 6b743f440f6bf9e4525acec2bd360d8a07af06925a74d0d960b9fe7c8c90b176
|
||||
Windows:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-mingw64-ghcup-0.1.19.5.exe
|
||||
dlHash: 085fc717bcea786034133c5028e5c3e5d46da341787bb267482996e97d076c88
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-64
|
||||
A_32:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning: &ghcup-32
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/i386-linux-ghcup-0.1.19.5
|
||||
dlHash: 9bb0870ae4b4fd0d4d18982f4aa88749018aed81479e51070478f699ed9a85e0
|
||||
Linux_Alpine:
|
||||
unknown_versioning: *ghcup-32
|
||||
A_ARM64:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/aarch64-linux-ghcup-0.1.19.5
|
||||
dlHash: cea78d9189be6fd62519c9d450654e7dd4e0923a7834c38b0539ba9264c6762e
|
||||
Darwin:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/aarch64-apple-darwin-ghcup-0.1.19.5
|
||||
dlHash: 4dafad0be3314372e2d312ee4ff3999060826ed1b53678dc2fb8715ee4bb4c53
|
||||
A_ARM:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghcup/0.1.19.5/armv7-linux-ghcup-0.1.19.5
|
||||
dlHash: 46147824b921b61e3161e03c638a8ff684667ea1d877df0e06721c4b2149cd5f
|
||||
|
||||
Binary file not shown.
1529
ghcup-prereleases-0.0.8.yaml
Normal file
1529
ghcup-prereleases-0.0.8.yaml
Normal file
File diff suppressed because it is too large
Load Diff
BIN
ghcup-prereleases-0.0.8.yaml.sig
Normal file
BIN
ghcup-prereleases-0.0.8.yaml.sig
Normal file
Binary file not shown.
@@ -2791,6 +2791,12 @@ ghcupDownloads:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.8/ghc-9.2.8-aarch64-apple-darwin.tar.xz
|
||||
dlSubdir: ghc-9.2.8-aarch64-apple-darwin
|
||||
dlHash: 34db9b19571905b08ca1e444b46490e7c19cb73a0fe778696fa6ec02ff8d3c4b
|
||||
A_ARM:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.8/ghc-9.2.8-armv7-deb10-linux.tar.xz
|
||||
dlSubdir: ghc-9.2.8
|
||||
dlHash: 78af6f7350fad956b1e4609a4c4a05e5522e9734c3038a9d56e3ceb5f260c7c4
|
||||
9.4.1:
|
||||
viTags:
|
||||
- base-4.17.0.0
|
||||
|
||||
Binary file not shown.
@@ -2791,6 +2791,12 @@ ghcupDownloads:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.8/ghc-9.2.8-aarch64-apple-darwin.tar.xz
|
||||
dlSubdir: ghc-9.2.8-aarch64-apple-darwin
|
||||
dlHash: 34db9b19571905b08ca1e444b46490e7c19cb73a0fe778696fa6ec02ff8d3c4b
|
||||
A_ARM:
|
||||
Linux_UnknownLinux:
|
||||
unknown_versioning:
|
||||
dlUri: https://downloads.haskell.org/~ghc/9.2.8/ghc-9.2.8-armv7-deb10-linux.tar.xz
|
||||
dlSubdir: ghc-9.2.8
|
||||
dlHash: 78af6f7350fad956b1e4609a4c4a05e5522e9734c3038a9d56e3ceb5f260c7c4
|
||||
9.4.1:
|
||||
viTags:
|
||||
- base-4.17.0.0
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user