Cleanup
This commit is contained in:
parent
5e35a91ef0
commit
a5593a725f
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
dist-newstyle/
|
dist-newstyle/
|
||||||
.stack-work/
|
.stack-work/
|
||||||
|
bin/
|
||||||
|
42
Dockerfile
42
Dockerfile
@ -1,42 +0,0 @@
|
|||||||
FROM alpine:edge
|
|
||||||
|
|
||||||
# ghc and cabal
|
|
||||||
RUN apk add --no-cache \
|
|
||||||
curl \
|
|
||||||
gcc \
|
|
||||||
g++ \
|
|
||||||
gmp-dev \
|
|
||||||
ncurses-dev \
|
|
||||||
libffi-dev \
|
|
||||||
make \
|
|
||||||
xz \
|
|
||||||
tar \
|
|
||||||
perl \
|
|
||||||
\
|
|
||||||
cabal \
|
|
||||||
ghc
|
|
||||||
|
|
||||||
# utils
|
|
||||||
RUN apk add --no-cache \
|
|
||||||
bash
|
|
||||||
|
|
||||||
## Package specific
|
|
||||||
RUN apk add --no-cache \
|
|
||||||
zlib \
|
|
||||||
zlib-dev \
|
|
||||||
zlib-static \
|
|
||||||
gmp \
|
|
||||||
gmp-dev \
|
|
||||||
openssl-dev \
|
|
||||||
openssl-libs-static \
|
|
||||||
xz \
|
|
||||||
xz-dev
|
|
||||||
|
|
||||||
RUN cabal v2-update
|
|
||||||
|
|
||||||
COPY . /app
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
RUN chmod +x /app/docker/build.sh
|
|
||||||
|
|
19
TODO.md
19
TODO.md
@ -2,20 +2,19 @@
|
|||||||
|
|
||||||
## Now
|
## Now
|
||||||
|
|
||||||
* try to run exe before upgrade (backup to ~/.ghcup/bin/ghcup.old)
|
* ghcup init?
|
||||||
* allow to build 8.8
|
* merge two download files
|
||||||
* curl DL does not cache json
|
* fetch/unpack functionality
|
||||||
* explain environment variables
|
|
||||||
* add --keep=<always|error> option
|
|
||||||
|
|
||||||
* allow to switch to curl/wget at runtime
|
|
||||||
|
|
||||||
* cross support
|
|
||||||
* installing multiple versions of the same
|
* installing multiple versions of the same
|
||||||
|
* post-install
|
||||||
|
|
||||||
* proper test suite
|
* proper test suite
|
||||||
* add more logging
|
|
||||||
|
|
||||||
|
* !! update of 0.1.5 must go in ghcup-0.0.1.json !!
|
||||||
|
|
||||||
|
* try to run exe before upgrade (backup to ~/.ghcup/bin/ghcup.old)
|
||||||
|
* stdout flushing?
|
||||||
|
* resume support (for make-install only)
|
||||||
|
|
||||||
## Maybe
|
## Maybe
|
||||||
|
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
cd /app
|
|
||||||
|
|
||||||
cabal v2-update
|
|
||||||
|
|
||||||
cabal v2-install \
|
|
||||||
--install-method=copy \
|
|
||||||
--overwrite-policy=always \
|
|
||||||
--installdir="/bin" \
|
|
||||||
--ghc-options='-optl-static'
|
|
||||||
|
|
2179
ghcup-0.0.1.json
2179
ghcup-0.0.1.json
File diff suppressed because it is too large
Load Diff
@ -1,66 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
status_message() {
|
|
||||||
printf "\\033[0;32m%s\\033[0m\\n" "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
error_message() {
|
|
||||||
printf "\\033[0;31m%s\\033[0m\\n" "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
|
||||||
CACHE_LOCATION="${HOME}/.cabal/packages/hackage.haskell.org/01-index.cache"
|
|
||||||
|
|
||||||
if [ ! -f "${CACHE_LOCATION}" ] ; then
|
|
||||||
error_message "${CACHE_LOCATION} does not exist, did you run 'cabal update'?"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f "${SCRIPTPATH}/cabal.project" ] ; then
|
|
||||||
error_message "Could not find ${SCRIPTPATH}/cabal.project, skipping index state update."
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
|
|
||||||
cabal v2-update
|
|
||||||
|
|
||||||
arch=$(getconf LONG_BIT)
|
|
||||||
|
|
||||||
case "${arch}" in
|
|
||||||
32)
|
|
||||||
byte_size=4
|
|
||||||
magic_word="CABA1002"
|
|
||||||
;;
|
|
||||||
64)
|
|
||||||
byte_size=8
|
|
||||||
magic_word="00000000CABA1002"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
error_message "Unknown architecture (long bit): ${arch}"
|
|
||||||
exit 2
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# This is the logic to parse the binary format of 01-index.cache.
|
|
||||||
# The first word is a magic 'caba1002', the second one is the timestamp in unix epoch.
|
|
||||||
# Better than copying the cabal-install source code.
|
|
||||||
if [ "$(xxd -u -p -l${byte_size} -s 0 "${CACHE_LOCATION}")" != "${magic_word}" ] ; then
|
|
||||||
error_message "Magic word does not match!"
|
|
||||||
exit 4
|
|
||||||
fi
|
|
||||||
cache_timestamp=$(echo "ibase=16;obase=A;$(xxd -u -p -l${byte_size} -s ${byte_size} "${CACHE_LOCATION}")" | bc)
|
|
||||||
|
|
||||||
# If we got junk from the binary file, this should fail.
|
|
||||||
cache_date=$(date --utc --date "@${cache_timestamp}" "+%FT%TZ")
|
|
||||||
|
|
||||||
|
|
||||||
status_message "Updating index state in ${SCRIPTPATH}/cabal.project"
|
|
||||||
|
|
||||||
if grep -q "^index-state: .*" "${SCRIPTPATH}/cabal.project" ; then
|
|
||||||
awk '/index-state:/ {gsub(/.*/, "index-state: '${cache_date}'")}; { print }' "${SCRIPTPATH}/cabal.project" > "${SCRIPTPATH}/cabal.project.tmp"
|
|
||||||
mv "${SCRIPTPATH}/cabal.project.tmp" "${SCRIPTPATH}/cabal.project"
|
|
||||||
else
|
|
||||||
printf "index-state: %s\n" "${cache_date}" >> "${SCRIPTPATH}/cabal.project"
|
|
||||||
fi
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user