diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ac6a527..0b783cc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,7 +14,7 @@ variables: - x86_64-linux variables: OS: "LINUX" - BIT: "64" + ARCH: "64" .alpine:64bit: image: "alpine:3.12" @@ -22,7 +22,7 @@ variables: - x86_64-linux variables: OS: "LINUX" - BIT: "64" + ARCH: "64" .alpine:32bit: image: "i386/alpine:3.12" @@ -30,21 +30,37 @@ variables: - x86_64-linux variables: OS: "LINUX" - BIT: "32" + ARCH: "32" + +.linux:armv7: + image: "arm32v7/fedora" + tags: + - armv7-linux + variables: + OS: "LINUX" + ARCH: "ARM" + +.linux:aarch64: + image: "arm64v8/fedora" + tags: + - aarch64-linux + variables: + OS: "LINUX" + ARCH: "ARM64" .darwin: tags: - x86_64-darwin variables: OS: "DARWIN" - BIT: "64" + ARCH: "64" .freebsd: tags: - x86_64-freebsd variables: OS: "FREEBSD" - BIT: "64" + ARCH: "64" .root_cleanup: after_script: @@ -81,6 +97,20 @@ variables: before_script: - ./.gitlab/before_script/linux/alpine/install_deps.sh +.test_ghcup_version:armv7: + extends: + - .test_ghcup_version + - .linux:armv7 + before_script: + - ./.gitlab/before_script/linux/install_deps_manual.sh + +.test_ghcup_version:aarch64: + extends: + - .test_ghcup_version + - .linux:aarch64 + before_script: + - ./.gitlab/before_script/linux/install_deps_manual.sh + .test_ghcup_version:darwin: extends: - .test_ghcup_version @@ -106,6 +136,8 @@ variables: - out only: - tags + variables: + JSON_VERSION: "0.0.4" ######## stack test ######## @@ -125,7 +157,7 @@ test:linux:bootstrap_script: script: - ./.gitlab/script/ghcup_bootstrap.sh variables: - GHC_VERSION: "8.10.3" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.4.0.0" extends: - .debian @@ -135,13 +167,13 @@ test:linux:bootstrap_script: test:linux:recommended: extends: .test_ghcup_version:linux variables: - GHC_VERSION: "8.10.3" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.4.0.0" test:linux:latest: extends: .test_ghcup_version:linux variables: - GHC_VERSION: "8.10.3" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.4.0.0" allow_failure: true @@ -150,21 +182,39 @@ test:linux:latest: test:linux:recommended:32bit: extends: .test_ghcup_version:linux32 variables: - GHC_VERSION: "8.10.2" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.2.0.0" +######## arm tests ######## + +test:linux:recommended:armv7: + extends: .test_ghcup_version:armv7 + variables: + GHC_VERSION: "8.10.4" + CABAL_VERSION: "3.4.0.0" + when: manual + allow_failure: true + +test:linux:recommended:aarch64: + extends: .test_ghcup_version:aarch64 + variables: + GHC_VERSION: "8.10.4" + CABAL_VERSION: "3.4.0.0" + when: manual + allow_failure: true + ######## darwin test ######## test:mac:recommended: extends: .test_ghcup_version:darwin variables: - GHC_VERSION: "8.10.3" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.4.0.0" test:mac:latest: extends: .test_ghcup_version:darwin variables: - GHC_VERSION: "8.10.3" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.4.0.0" allow_failure: true @@ -174,13 +224,13 @@ test:mac:latest: test:freebsd:recommended: extends: .test_ghcup_version:freebsd variables: - GHC_VERSION: "8.10.3" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.4.0.0" test:freebsd:latest: extends: .test_ghcup_version:freebsd variables: - GHC_VERSION: "8.10.3" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.4.0.0" allow_failure: true @@ -195,7 +245,7 @@ release:linux:64bit: - ./.gitlab/before_script/linux/alpine/install_deps.sh variables: ARTIFACT: "x86_64-linux-ghcup" - GHC_VERSION: "8.10.3" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.4.0.0" @@ -207,9 +257,30 @@ release:linux:32bit: - ./.gitlab/before_script/linux/alpine/install_deps.sh variables: ARTIFACT: "i386-linux-ghcup" - GHC_VERSION: "8.10.2" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.2.0.0" +release:linux:armv7: + extends: + - .linux:armv7 + - .release_ghcup + before_script: + - ./.gitlab/before_script/linux/install_deps_manual.sh + variables: + ARTIFACT: "armv7-linux-ghcup" + GHC_VERSION: "8.10.4" + CABAL_VERSION: "3.4.0.0" + +release:linux:aarch64: + extends: + - .linux:aarch64 + - .release_ghcup + before_script: + - ./.gitlab/before_script/linux/install_deps_manual.sh + variables: + ARTIFACT: "aarch64-linux-ghcup" + GHC_VERSION: "8.10.4" + CABAL_VERSION: "3.4.0.0" ######## darwin release ######## @@ -222,7 +293,7 @@ release:darwin: - ./.gitlab/before_script/darwin/install_deps.sh variables: ARTIFACT: "x86_64-apple-darwin-ghcup" - GHC_VERSION: "8.10.3" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.4.0.0" MACOSX_DEPLOYMENT_TARGET: "10.7" @@ -238,6 +309,6 @@ release:freebsd: - ./.gitlab/before_script/freebsd/install_deps.sh variables: ARTIFACT: "x86_64-portbld-freebsd-ghcup" - GHC_VERSION: "8.10.3" + GHC_VERSION: "8.10.4" CABAL_VERSION: "3.4.0.0" diff --git a/.gitlab/before_script/linux/alpine/install_deps.sh b/.gitlab/before_script/linux/alpine/install_deps.sh index ca86076..1683cdc 100755 --- a/.gitlab/before_script/linux/alpine/install_deps.sh +++ b/.gitlab/before_script/linux/alpine/install_deps.sh @@ -10,6 +10,9 @@ apk add --no-cache \ curl \ gcc \ g++ \ + binutils \ + binutils-gold \ + bsd-compat-headers \ gmp-dev \ ncurses-dev \ libffi-dev \ @@ -18,7 +21,7 @@ apk add --no-cache \ tar \ perl -if [ "${BIT}" = "32" ] ; then +if [ "${ARCH}" = "32" ] ; then curl -sSfL https://downloads.haskell.org/ghcup/i386-linux-ghcup > ./ghcup-bin else curl -sSfL https://downloads.haskell.org/ghcup/x86_64-linux-ghcup > ./ghcup-bin diff --git a/.gitlab/before_script/linux/install_deps_manual.sh b/.gitlab/before_script/linux/install_deps_manual.sh new file mode 100755 index 0000000..cddc1b6 --- /dev/null +++ b/.gitlab/before_script/linux/install_deps_manual.sh @@ -0,0 +1,64 @@ +#!/bin/sh + +set -eux + +. "$( cd "$(dirname "$0")" ; pwd -P )/../../ghcup_env" + +mkdir -p "${TMPDIR}" + +ednf() { + case "${ARCH}" in + "ARM") + sudo dnf -y --forcearch armv7hl "$@" + ;; + "ARM64") + sudo dnf -y --forcearch aarch64 "$@" + ;; + *) exit 1 ;; + esac +} + +ednf update +ednf install gcc gcc-c++ gmp gmp-devel make ncurses ncurses-devel xz xz-devel perl zlib zlib-devel openssl-devel openssl-libs openssl libffi libffi-devel +if [ "${ARCH}" = "ARM64" ] ; then + ednf install numactl numactl-libs numactl-devel +fi +ednf install bash wget curl git tar +ednf install llvm9.0 llvm9.0-devel llvm9.0-libs llvm9.0-static + +case "${ARCH}" in + "ARM") + ghc_url=https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-armv7-deb10-linux.tar.xz + cabal_url=home.smart-cactus.org/~ben/cabal-install-${CABAL_VERSION}-armv7-linux-bootstrapped.tar.xz + ;; + "ARM64") + ghc_url=https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-aarch64-deb10-linux.tar.xz + cabal_url=https://downloads.haskell.org/~cabal/cabal-install-${CABAL_VERSION}/cabal-install-${CABAL_VERSION}-aarch64-ubuntu-18.04.tar.xz + ;; + *) exit 1 ;; +esac + +mkdir -p "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin + +curl -O "${ghc_url}" +tar -xf ghc-*.tar.* +cd ghc-${GHC_VERSION} +./configure --prefix="${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/ghc/${GHC_VERSION} +make install +for i in "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/ghc/${GHC_VERSION}/bin/*-${GHC_VERSION} ; do + ln -s "${i}" "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/${i##*/} +done +for x in "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/*-${GHC_VERSION} ; do + ln -s ${x##*/} ${x%-${GHC_VERSION}} +done +cd .. +rm -rf ghc-${GHC_VERSION} ghc-*.tar.* +unset x i + +mkdir cabal-install +cd cabal-install +curl -O "${cabal_url}" +tar -xf cabal-install-* +mv cabal "${GHCUP_INSTALL_BASE_PREFIX}"/.ghcup/bin/cabal +cd .. +rm -rf cabal-install diff --git a/.gitlab/script/ghcup_release.sh b/.gitlab/script/ghcup_release.sh index 429581a..5c59f41 100755 --- a/.gitlab/script/ghcup_release.sh +++ b/.gitlab/script/ghcup_release.sh @@ -16,10 +16,12 @@ git describe ecabal update if [ "${OS}" = "LINUX" ] ; then - if [ "${BIT}" = "32" ] ; then + if [ "${ARCH}" = "32" ] ; then ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui -ftar - else + elif [ "${ARCH}" = "64" ] ; then ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections -optl-static' -ftui + else + ecabal build -w ghc-${GHC_VERSION} -ftui fi elif [ "${OS}" = "FREEBSD" ] ; then ecabal build -w ghc-${GHC_VERSION} --ghc-options='-split-sections' --constraint="zlib +static" -ftui diff --git a/.gitlab/script/ghcup_version.sh b/.gitlab/script/ghcup_version.sh index 78ba0a8..1aab66a 100755 --- a/.gitlab/script/ghcup_version.sh +++ b/.gitlab/script/ghcup_version.sh @@ -26,7 +26,7 @@ if [ "${OS}" = "DARWIN" ] ; then ecabal build -w ghc-${GHC_VERSION} -ftui ecabal test -w ghc-${GHC_VERSION} -ftui ghcup-test elif [ "${OS}" = "LINUX" ] ; then - if [ "${BIT}" = "32" ] ; then + if [ "${ARCH}" = "32" ] ; then ecabal build -w ghc-${GHC_VERSION} -finternal-downloader -ftui -ftar ecabal test -w ghc-${GHC_VERSION} -finternal-downloader -ftui -ftar ghcup-test else @@ -80,17 +80,17 @@ ghci-$(ghc --numeric-version) --version # test installing new ghc doesn't mess with currently set GHC # https://gitlab.haskell.org/haskell/ghcup-hs/issues/7 if [ "${OS}" = "LINUX" ] ; then - eghcup --downloader=wget install 8.4.4 + eghcup --downloader=wget install 8.10.3 else # test wget a bit - eghcup install 8.4.4 + eghcup install 8.10.3 fi [ "$(ghc --numeric-version)" = "${ghc_ver}" ] -eghcup set 8.4.4 -eghcup set 8.4.4 -[ "$(ghc --numeric-version)" = "8.4.4" ] +eghcup set 8.10.3 +eghcup set 8.10.3 +[ "$(ghc --numeric-version)" = "8.10.3" ] eghcup set ${GHC_VERSION} [ "$(ghc --numeric-version)" = "${ghc_ver}" ] -eghcup rm 8.4.4 +eghcup rm 8.10.3 [ "$(ghc --numeric-version)" = "${ghc_ver}" ] # install hls @@ -98,7 +98,7 @@ if [ "${OS}" = "DARWIN" ] ; then eghcup install hls haskell-language-server-wrapper --version elif [ "${OS}" = "LINUX" ] ; then - if [ "${BIT}" = "64" ] ; then + if [ "${ARCH}" = "64" ] ; then eghcup install hls haskell-language-server-wrapper --version fi diff --git a/app/ghcup-gen/Validate.hs b/app/ghcup-gen/Validate.hs index 673467b..32c2d8f 100644 --- a/app/ghcup-gen/Validate.hs +++ b/app/ghcup-gen/Validate.hs @@ -100,8 +100,10 @@ validate dls = do when (not $ any (== Linux Alpine) pspecs) $ case t of GHCup -> (lift $ $(logError) [i|Linux Alpine missing for #{t} #{v'} #{arch}|]) >> addError - Cabal | v > [vver|2.4.1.0|] -> (lift $ $(logError) [i|Linux Alpine missing for #{t} #{v'} #{arch'}|]) >> addError - GHC | Latest `elem` tags || Recommended `elem` tags -> lift $ $(logError) [i|Linux Alpine missing for #{t} #{v'} #{arch'}|] + Cabal | v > [vver|2.4.1.0|] + , arch `elem` [A_64, A_32] -> (lift $ $(logError) [i|Linux Alpine missing for #{t} #{v'} #{arch'}|]) >> addError + GHC | Latest `elem` tags || Recommended `elem` tags + , arch `elem` [A_64, A_32] -> lift $ $(logError) [i|Linux Alpine missing for #{t} #{v'} #{arch'}|] _ -> lift $ $(logWarn) [i|Linux Alpine missing for #{t} #{v'} #{arch'}|] checkUniqueTags tool = do diff --git a/cabal.project b/cabal.project index f5128ee..1c29b74 100644 --- a/cabal.project +++ b/cabal.project @@ -20,6 +20,11 @@ source-repository-package tag: bf6d28cf989b70286e12fecc183d5bbf5454a1a2 subdir: hpath-directory +source-repository-package + type: git + location: https://github.com/hasufell/streamly.git + tag: f921e78236c6b44a6673b5e1a1803d2e7102d806 + optimization: 2 package streamly diff --git a/ghcup-0.0.4.yaml b/ghcup-0.0.4.yaml index 4dc7ccb..8135974 100644 --- a/ghcup-0.0.4.yaml +++ b/ghcup-0.0.4.yaml @@ -76,6 +76,19 @@ toolRequirements: - xz - perl notes: '' + Linux_Fedora: + unknown_versioning: + distroPKGs: + - gcc + - gcc-c++ + - gmp + - gmp-devel + - make + - ncurses + - ncurses-compat-libs + - xz + - perl + notes: '' Linux_Alpine: unknown_versioning: distroPKGs: @@ -811,6 +824,12 @@ ghcupDownloads: dlHash: 3737837550d9b177acfe150e3a3cd4545427ded020487c2ed5194d7b8f116349 Linux_UnknownLinux: unknown_versioning: *ghc-865-32-deb9 + A_ARM64: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-aarch64-ubuntu18.04-linux.tar.xz + dlSubdir: ghc-8.6.5 + dlHash: 1852589037e4b2805ab517bc430e25a3125c4a118a1674ffefbb443394a0c786 8.8.1: viTags: - base-4.13.0.0 @@ -990,6 +1009,12 @@ ghcupDownloads: unknown_versioning: *ghc-883-32-deb9 Linux_UnknownLinux: unknown_versioning: *ghc-883-32-deb9 + A_ARM64: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/8.8.3/ghc-8.8.3-aarch64-deb9-linux.tar.xz + dlSubdir: ghc-8.8.3 + dlHash: 2a6821d0e7326cfa7670851702924bbab3b092415ba41247c37419158327eed9 8.8.4: viTags: - base-4.13.0.0 @@ -1139,6 +1164,18 @@ ghcupDownloads: dlHash: 7360cc6b29e9b4ab08f6ea5bc3bcca6f5c216933e81ef1620dcdd700f1fdb289 Linux_UnknownLinux: unknown_versioning: *ghc-8101-32-deb9 + A_ARM64: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/8.10.1/ghc-8.10.1-aarch64-deb9-linux.tar.xz + dlSubdir: ghc-8.10.1 + dlHash: c099011e07999db917e797fb5d89c31f075a562556ab99be8ab0accbf2a94db7 + A_ARM: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/8.10.1/ghc-8.10.1-armv7-deb9-linux.tar.xz + dlSubdir: ghc-8.10.1 + dlHash: afe1bde2b0d6deb0320b9460fffe5d9427e302df85aec866b9c1458777d52b28 8.10.2: viTags: - old @@ -1216,6 +1253,18 @@ ghcupDownloads: dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.10.2/ghc-8.10.2-i386-alpine-linux.tar.xz dlSubdir: ghc-8.10.2 dlHash: 9ee1cf1e85e9536088b3c9e80e975074e525ea378cd4eb156071bbc4b7b38327 + A_ARM64: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/8.10.2/ghc-8.10.2-aarch64-deb10-linux.tar.xz + dlSubdir: ghc-8.10.2 + dlHash: 5cf24189077e6e2dce2aa16367ad8a53f603e751a15010dfb23d067206e55593 + A_ARM: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/8.10.2/ghc-8.10.2-armv7-deb10-linux.tar.xz + dlSubdir: ghc-8.10.2 + dlHash: bb9c97826b1f4d7a8ef8bce0616b612f1ded10480ef10fcf7fb4e6d10a6681c8 8.10.3: viTags: - base-4.14.1.0 @@ -1292,6 +1341,18 @@ ghcupDownloads: dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.10.3/ghc-8.10.3-i386-alpine-linux.tar.xz dlSubdir: ghc-8.10.3 dlHash: 309201cdefd2d13b8b3fd09c26c6137048c490d219a0a9c7407c3ce1d011f60c + A_ARM64: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/8.10.3/ghc-8.10.3-aarch64-deb10-linux.tar.xz + dlSubdir: ghc-8.10.3 + dlHash: a531432d505a1fe886cdc8639d168eb1c92d76464c1270713e01ce81891bbadb + A_ARM: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/8.10.3/ghc-8.10.3-armv7-deb10-linux.tar.xz + dlSubdir: ghc-8.10.3 + dlHash: b823b58cae36fbac0741680ca7605180fa4cf4c6ae439123d282184b94d32fd6 8.10.4: viTags: - Recommended @@ -1369,6 +1430,18 @@ ghcupDownloads: dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/8.10.4/ghc-8.10.4-i386-alpine-linux.tar.xz dlSubdir: ghc-8.10.4 dlHash: 9161a98bed763692101854d83af69c1316030cfe5ee6f6acde283d04ef139735 + A_ARM64: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/8.10.4/ghc-8.10.4-aarch64-deb10-linux.tar.xz + dlSubdir: ghc-8.10.4 + dlHash: 249da6310be799a5eefe0579b6dae1701eb984afb980fe08309d19cf704038ed + A_ARM: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/8.10.4/ghc-8.10.4-armv7-deb10-linux.tar.xz + dlSubdir: ghc-8.10.4 + dlHash: 0d18ef83593272f6196a41cc3abdc48dfe5e14372db75d71ea19fe35320c4e81 9.0.1: viTags: - Latest @@ -1446,6 +1519,18 @@ ghcupDownloads: dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/9.0.1/ghc-9.0.1-i386-alpine-linux.tar.xz dlSubdir: ghc-9.0.1 dlHash: ebfeb3b91e6f2bb5a49fd3376746f7fd1b89e62e9838bf5b1530a8756ff1e6aa + A_ARM64: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/9.0.1/ghc-9.0.1-aarch64-deb9-linux.tar.xz + dlSubdir: ghc-9.0.1 + dlHash: fac7a0bdfc83c05df94024a2d67b8f00a9cd2733b9cb41fb8ad76be399014906 + A_ARM: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghc/9.0.1/ghc-9.0.1-armv7-deb9-linux.tar.xz + dlSubdir: ghc-9.0.1 + dlHash: 6f404f9b88468407b3a9ec5800bcc2d01dd453ef3d63414853b4fbbd4d8df496 Cabal: 2.4.1.0: viTags: @@ -1575,6 +1660,16 @@ ghcupDownloads: unknown_versioning: dlUri: https://downloads.haskell.org/ghcup/unofficial-bindists/cabal/3.4.0.0/cabal-install-3.4.0.0-i386-alpine-linux-musl.tar.gz dlHash: 95adb65f3a72aa8d9ce83685bc06e1eee5b801f56e204e27e957e8a35abd9cf8 + A_ARM64: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~cabal/cabal-install-3.4.0.0/cabal-install-3.4.0.0-aarch64-ubuntu-18.04.tar.xz + dlHash: 04d378347896dfdc3510b192b97489815cfa5d692f46e2758da0f789e682b8f0 + A_ARM: + Linux_UnknownLinux: + unknown_versioning: + dlUri: https://downloads.haskell.org/~ghcup/unofficial-bindists/cabal/3.4.0.0/cabal-install-3.4.0.0-armv7-linux-bootstrapped.tar.xz + dlHash: 16c0d1eaba24bed14f3e152970179a45d9f9bb5cc839b2c210ad06eb7d4826ed GHCup: 0.1.12: viTags: