67 lines
1.8 KiB
Bash
67 lines
1.8 KiB
Bash
#
|
|
# This helper is for building haskell projects using Cabal.
|
|
#
|
|
|
|
do_configure() {
|
|
: ${cabal_cmd:=cabal}
|
|
|
|
local _cabal_project_file="cabal.project"
|
|
|
|
if [ -e "${FILESDIR}/${_cabal_project_file}.freeze" ]; then
|
|
cp "${FILESDIR}/${_cabal_project_file}.freeze" .
|
|
fi
|
|
|
|
if [ -n "${cabal_index_state}" ]; then
|
|
# index-state alone is enough to fully fix a cabal build
|
|
configure_args+=" --index-state=${cabal_index_state}"
|
|
elif [ -e "${_cabal_project_file}.freeze" ]; then
|
|
# With a freeze file we have to make sure that it fixes
|
|
# the index also
|
|
if ! grep -q '^index-state:' "${_cabal_project_file}.freeze"; then
|
|
msg_error "${_cabal_project_file}.freeze is missing index-state\n"
|
|
fi
|
|
elif [ -e "${_cabal_project_file}" ]; then
|
|
if ! grep -q '^index-state:' "${_cabal_project_file}"; then
|
|
msg_error "${_cabal_project_file} is missing index-state\n"
|
|
fi
|
|
else
|
|
msg_error "cabal build not fixed, set cabal_index_state or add a freeze file to FILESDIR\n"
|
|
fi
|
|
|
|
${cabal_cmd} update
|
|
${cabal_cmd} configure --prefix=/usr ${configure_args}
|
|
}
|
|
|
|
do_build() {
|
|
: ${make_cmd:=cabal}
|
|
|
|
if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
|
|
make_build_args+=" --ghc-option=-latomic"
|
|
fi
|
|
|
|
${make_cmd} build ${make_build_target} ${makejobs} ${make_build_args}
|
|
}
|
|
|
|
do_check() {
|
|
: ${make_cmd:=cabal}
|
|
: ${make_check_target:=test}
|
|
|
|
${make_check_pre} ${make_cmd} ${make_check_target} ${make_check_args}
|
|
}
|
|
|
|
do_install() {
|
|
: ${make_cmd:=cabal}
|
|
: ${make_install_target:=all}
|
|
|
|
if ${make_cmd} list-bin ${make_install_target} >/dev/null 2>&1; then
|
|
vbin $(${make_cmd} list-bin ${make_install_target})
|
|
else
|
|
for name in $(${make_cmd} list-bin ${make_install_target} 2>&1 | tr -d '\n ' | grep -Eo "theexecutable'[^']+'" | tr "'" ' ' | awk '{ print $2 }'); do
|
|
local _bin=$(${make_cmd} list-bin exe:$name)
|
|
if [ -s "$_bin" ]; then
|
|
vbin "$_bin"
|
|
fi
|
|
done
|
|
fi
|
|
}
|