@@ -518,22 +518,30 @@ let
518518 json_cabal_file=$(mktemp)
519519 cabal2json $fixed_cabal_file > $json_cabal_file
520520
521- exposed_modules="$(jq -r '.library. "exposed-modules"//[]|.[]|select(type=="array")[] ' $json_cabal_file)"
522- reexported_modules="$(jq -r '.library. "reexported-modules"//[]|.[]|select(type=="array")[] ' $json_cabal_file | sed 's/.* as //g')"
521+ exposed_modules="$(jq -r '.components.lib. "exposed-modules"//[]|.[]|select(type=="string") ' $json_cabal_file)"
522+ reexported_modules="$(jq -r '.components.lib. "reexported-modules"//[]|.[]|select(type=="string") ' $json_cabal_file | sed 's/.* as //g')"
523523
524524 # FIXME This is a bandaid. Rather than doing this, conditionals should be interpreted.
525525 ${ pkgs . lib . optionalString pkgs . stdenv . targetPlatform . isGhcjs ''
526- exposed_modules+=" $(jq -r '.library. "exposed-modules"//[]|.[]|select(type=="object" and .if .arch == "javascript")|.then []' $json_cabal_file)"
526+ exposed_modules+=" $(jq -r '.components.lib. "exposed-modules"//[]|.[]|select(type=="object" and ._if .arch == "javascript")|._then []' $json_cabal_file)"
527527 '' }
528528 ${ pkgs . lib . optionalString pkgs . stdenv . targetPlatform . isWindows ''
529- exposed_modules+=" $(jq -r '.library. "exposed-modules"//[]|.[]|select(type=="object" and .if .os == "windows")|.then []' $json_cabal_file)"
529+ exposed_modules+=" $(jq -r '.components.lib. "exposed-modules"//[]|.[]|select(type=="object" and ._if .os == "windows")|._then []' $json_cabal_file)"
530530 '' }
531531 ${ pkgs . lib . optionalString ( ! pkgs . stdenv . targetPlatform . isWindows ) ''
532- exposed_modules+=" $(jq -r '.library. "exposed-modules"//[]|.[]|select(type=="object" and .if .not.os == "windows")|.then []' $json_cabal_file)"
532+ exposed_modules+=" $(jq -r '.components.lib. "exposed-modules"//[]|.[]|select(type=="object" and ._if .not.os == "windows")|._then []' $json_cabal_file)"
533533 '' }
534534
535535 EXPOSED_MODULES_${ varname name } ="$(tr '\n' ' ' <<< "$exposed_modules $reexported_modules")"
536- DEPS_${ varname name } ="$(jq -r '.library."build-depends"[]|select(type=="array")[],select(type=="object" and .if.not.flag != "vendor-filepath").then[]' $json_cabal_file | sed 's/^\([A-Za-z0-9-]*\).*$/\1/g' | sort -u | tr '\n' ' ')"
536+ deps="$(jq -r '.components.lib."build-depends"[]|select(.package)|.package' $json_cabal_file)"
537+ deps+=" $(jq -r '.components.lib."build-depends"[]|select((.if.flag or ._if.not.flag) and ._if.not.flag != "vendor-filepath")._then[]|.package' $json_cabal_file)"
538+ ${ pkgs . lib . optionalString pkgs . stdenv . targetPlatform . isWindows ''
539+ deps+=" $(jq -r '.components.lib."build-depends"[]|select(._if.os == "windows")|._then[]|.package' $json_cabal_file)"
540+ '' }
541+ ${ pkgs . lib . optionalString ( ! pkgs . stdenv . targetPlatform . isWindows ) ''
542+ deps+=" $(jq -r '.components.lib."build-depends"[]|select(._if.not.os == "windows")|._then[]|.package' $json_cabal_file)"
543+ '' }
544+ DEPS_${ varname name } ="$(tr '\n' ' ' <<< "$deps")"
537545 VER_${ varname name } ="$(jq -r '.version' $json_cabal_file)"
538546 PKGS+=" ${ name } "
539547 LAST_PKG="${ name } "
0 commit comments