-- Generated from https://github.com/vmchale/cpkg/blob/master/pkgs/pkg-set.dhall by running dhall resolve let concatMapSep = λ(_ : Text) → λ(_ : Type) → λ(_ : _ → Text) → λ(_ : List _@1) → merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold _@2 _ < Empty | NonEmpty : Text > ( λ(_ : _@2) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty (_@3 _@1) , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@4 _@2}${_@6}${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) let concat = λ(_ : List Text) → List/fold Text _ Text (λ(_ : Text) → λ(_ : Text) → "${_@1}${_}") "" let types = { ABI = < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , Arch = < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , BuildVars = { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } , Command = < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > , Dep = { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , EnvVar = { value : Text, var : Text } , Manufacturer = < Apple | IBM | PC | Unknown > , OS = < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , Proc = { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } , TargetTriple = { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } , VersionBound = < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > } let prelude = { archCfg = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple , autogenConfigure = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [] : List Text , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.shareDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/aclocal:${_@1}/autoconf" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/aclocal:${_@2}/autoconf:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "ACLOCAL_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = None Text , program = "./autogen.sh" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , buildEnv = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] , buildWith = λ(envs : List { value : Text, var : Text }) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "-j${Natural/show cfg.cpus}" ] , environment = Some envs , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , call = < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call , cmakeBuild = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "--build" , "." , "--config" , "Release" , "--" , "-j" , Natural/show cfg.cpus ] , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "cmake" } ] , cmakeConfigure = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "build" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "../" , "-DCMAKE_INSTALL_PREFIX:PATH=${cfg.installDir}" , "-DCMAKE_MAKE_PROGRAM=${merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS}" ] # merge { None = [ "-DCMAKE_C_COMPILER=gcc" , "-DCMAKE_CXX_COMPILER=g++" ] , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "-DCMAKE_C_COMPILER=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-gcc" , "-DCMAKE_CXX_COMPILER=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-g++" ] } cfg.targetTriple # merge { None = [] : List Text , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "-DCMAKE_SYSTEM_NAME=${merge { AIX = "AIX" , Android = "Android" , Darwin = "Darwin" , Dragonfly = "BSD" , FreeBSD = "BSD" , Haiku = "Haiku" , Hurd = "Hurd" , IOS = "Darwin" , Linux = "Linux" , NetBSD = "BSD" , NoOs = "Generic" , OpenBSD = "BSD" , Redox = "Redox" , Solaris = "Solaris" , Windows = "Windows" } tgt.os}" ] } cfg.targetTriple , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "cmake" } ] , cmakeConfigureGeneral = λ ( envVars : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } → Optional (List { value : Text, var : Text }) ) → λ(flags : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "build" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "../" , "-DCMAKE_INSTALL_PREFIX:PATH=${cfg.installDir}" , "-DCMAKE_MAKE_PROGRAM=${merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS}" ] # merge { None = [ "-DCMAKE_C_COMPILER=gcc" , "-DCMAKE_CXX_COMPILER=g++" ] , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "-DCMAKE_C_COMPILER=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-gcc" , "-DCMAKE_CXX_COMPILER=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-g++" ] } cfg.targetTriple # merge { None = [] : List Text , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "-DCMAKE_SYSTEM_NAME=${merge { AIX = "AIX" , Android = "Android" , Darwin = "Darwin" , Dragonfly = "BSD" , FreeBSD = "BSD" , Haiku = "Haiku" , Hurd = "Hurd" , IOS = "Darwin" , Linux = "Linux" , NetBSD = "BSD" , NoOs = "Generic" , OpenBSD = "BSD" , Redox = "Redox" , Solaris = "Solaris" , Windows = "Windows" } tgt.os}" ] } cfg.targetTriple # flags , environment = envVars cfg , procDir = Some "build" , program = "cmake" } ] , cmakeConfigureNinja = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "build" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "../" , "-DCMAKE_INSTALL_PREFIX:PATH=${cfg.installDir}" , "-G" , "Ninja" ] # merge { None = [] : List Text , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "-DCMAKE_C_COMPILER=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-gcc" , "-DCMAKE_CXX_COMPILER=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-g++" ] } cfg.targetTriple # merge { None = [] : List Text , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "-DCMAKE_SYSTEM_NAME=${merge { AIX = "AIX" , Android = "Android" , Darwin = "Darwin" , Dragonfly = "BSD" , FreeBSD = "BSD" , Haiku = "Haiku" , Hurd = "Hurd" , IOS = "Darwin" , Linux = "Linux" , NetBSD = "BSD" , NoOs = "Generic" , OpenBSD = "BSD" , Redox = "Redox" , Solaris = "Solaris" , Windows = "Windows" } tgt.os}" ] } cfg.targetTriple , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "cmake" } ] , cmakeConfigureWithFlags = λ(flags : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "build" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "../" , "-DCMAKE_INSTALL_PREFIX:PATH=${cfg.installDir}" , "-DCMAKE_MAKE_PROGRAM=${merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS}" ] # merge { None = [ "-DCMAKE_C_COMPILER=gcc" , "-DCMAKE_CXX_COMPILER=g++" ] , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "-DCMAKE_C_COMPILER=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-gcc" , "-DCMAKE_CXX_COMPILER=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-g++" ] } cfg.targetTriple # merge { None = [] : List Text , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "-DCMAKE_SYSTEM_NAME=${merge { AIX = "AIX" , Android = "Android" , Darwin = "Darwin" , Dragonfly = "BSD" , FreeBSD = "BSD" , Haiku = "Haiku" , Hurd = "Hurd" , IOS = "Darwin" , Linux = "Linux" , NetBSD = "BSD" , NoOs = "Generic" , OpenBSD = "BSD" , Redox = "Redox" , Solaris = "Solaris" , Windows = "Windows" } tgt.os}" ] } cfg.targetTriple # flags , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "cmake" } ] , cmakeEnv = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) , cmakeInstall = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "--build" , "." , "--target" , "install" , "--config" , "Release" ] , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "cmake" } ] , cmakeInstallWithBinaries = λ(bins : List Text) → λ ( installVars : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "--build" , "." , "--target" , "install" , "--config" , "Release" ] , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text ( installVars.shareDirs # installVars.linkDirs ) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if installVars.static then { value = "${List/fold Text installVars.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } installVars.buildOS then [ { value = "${List/fold Text installVars.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "cmake" } ] # List/fold Text bins ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = _@1 } ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , cmakePackage = { buildCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "--build" , "." , "--config" , "Release" , "--" , "-j" , Natural/show cfg.cpus ] , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "cmake" } ] , configureCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "build" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "../" , "-DCMAKE_INSTALL_PREFIX:PATH=${cfg.installDir}" , "-DCMAKE_MAKE_PROGRAM=${merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS}" ] # merge { None = [ "-DCMAKE_C_COMPILER=gcc" , "-DCMAKE_CXX_COMPILER=g++" ] , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "-DCMAKE_C_COMPILER=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-gcc" , "-DCMAKE_CXX_COMPILER=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-g++" ] } cfg.targetTriple # merge { None = [] : List Text , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "-DCMAKE_SYSTEM_NAME=${merge { AIX = "AIX" , Android = "Android" , Darwin = "Darwin" , Dragonfly = "BSD" , FreeBSD = "BSD" , Haiku = "Haiku" , Hurd = "Hurd" , IOS = "Darwin" , Linux = "Linux" , NetBSD = "BSD" , NoOs = "Generic" , OpenBSD = "BSD" , Redox = "Redox" , Solaris = "Solaris" , Windows = "Windows" } tgt.os}" ] } cfg.targetTriple , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "cmake" } ] , installCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "--build" , "." , "--target" , "install" , "--config" , "Release" ] , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "cmake" } ] , pkgBuildDeps = [ { bound = < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } >.NoBound , name = "cmake" } ] , pkgDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } } , cmakeSome = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "CMAKE_INCLUDE_PATH" } , { value = ( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value , var = "CMAKE_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , configEnv = λ(linkLibs : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text linkLibs Text (λ(_ : Text) → λ(_ : Text) → " -l${_@1}${_}") ""}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] , configSome = λ(linkLibs : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text linkLibs Text (λ(_ : Text) → λ(_ : Text) → " -l${_@1}${_}") ""}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , configWithEnv = λ ( envVars : List Text → { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } → Optional (List { value : Text, var : Text }) ) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = envVars ([] : List Text) cfg , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , configureLinkExtraLibs = λ(linkLibs : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text linkLibs Text ( λ(_ : Text) → λ(_ : Text) → " -l${_@1}${_}" ) ""}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , configureMkExes = λ(bins : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → List/fold Text bins ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = _@1 } ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) # [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , configureMkExesExtraFlags = λ(x : { bins : List Text, extraFlags : List Text }) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → List/fold Text x.bins ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = _@1 } ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) # [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) # x.extraFlags ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , configureWithFlags = λ(extraFlags : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) # extraFlags ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , configureWithPatch = λ(p : Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Patch { patchContents = p } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , configureWithPatches = λ(patches : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → List/fold Text patches ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Patch { patchContents = _@1 } ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) # [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , copyFile = λ(src : Text) → λ(dest : Text) → < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile { dest, src } , copyFiles = λ(_ : List { dest : Text, src : Text }) → List/fold { dest : Text, src : Text } _ ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : { dest : Text, src : Text }) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile _@1 ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , createDir = λ(x : Text) → < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = x } , defaultBuild = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "-j${Natural/show cfg.cpus}" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , defaultCall = { arguments = [] : List Text , environment = None (List { value : Text, var : Text }) , procDir = None Text } , defaultConfigure = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , defaultCpus = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → cfg.cpus , defaultEnv = None (List { value : Text, var : Text }) , defaultInstall = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , defaultPackage = { buildCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "-j${Natural/show cfg.cpus}" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , configureCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , installCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , pkgBuildDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , pkgDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } } , defaultPath = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } , doNothing = λ ( _ : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > , fullVersion = λ(x : { patch : Natural, version : List Natural }) → x.version # [ x.patch ] , generalBuild = λ ( cpus : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } → Natural ) → λ(envs : List { value : Text, var : Text }) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "-j${Natural/show (cpus cfg)}" ] , environment = Some envs , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , generalConfigure = λ ( envVars : List Text → { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } → Optional (List { value : Text, var : Text }) ) → λ(filename : Text) → λ(linkLibs : List Text) → λ(extraFlags : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ filename ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) # extraFlags ) , environment = envVars linkLibs cfg , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./${filename}" } ] , installPrefix = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "prefix=${cfg.installDir}" , "PREFIX=${cfg.installDir}" , "install" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = "make" } ] , installWith = λ(envs : List { value : Text, var : Text }) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some envs , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , installWithBinaries = λ(bins : List Text) → λ ( installVars : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } installVars.buildOS then [ { value = "${List/fold Text installVars.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text ( installVars.shareDirs # installVars.linkDirs ) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } installVars.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } installVars.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } installVars.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } installVars.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text installVars.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } installVars.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } installVars.buildOS } ] # ( if installVars.isCross == False then List/fold Text bins ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = _@1 } ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) else [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , installWithManpages = λ(mans : List { file : Text, section : Natural }) → λ ( installVars : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } installVars.buildOS then [ { value = "${List/fold Text installVars.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text ( installVars.shareDirs # installVars.linkDirs ) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } installVars.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } installVars.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } installVars.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } installVars.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text installVars.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } installVars.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } installVars.buildOS } ] # ( if installVars.isCross == False then List/fold { file : Text, section : Natural } mans ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : { file : Text, section : Natural }) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkManpage _@1 ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) else [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , installWithPy3Wrappers = λ(binNames : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "${cfg.installDir}/lib/python3.8/site-packages" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "setup.py" , "install" , "--prefix=${cfg.installDir}" , "--optimize=1" ] , environment = Some ( [ { value = "${cfg.installDir}/lib/python3.8/site-packages" , var = "PYTHONPATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = None Text , program = "python3" } ] # List/fold Text binNames ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → List/fold < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "wrapper" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = "${( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).var}=${( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value} PYTHONPATH=${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ ( _ : Text ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}:${cfg.installDir}/lib/python3.8/site-packages ${cfg.installDir}/bin/${_} \$@" , file = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile { dest = "wrapper/${_}", src = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = "wrapper/${_}" } ] ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ ( _ : < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ _@1 ] # _ ) ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , installWithPyWrappers = λ(version : List Natural) → λ(binNames : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "${cfg.installDir}/lib/python${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Natural version < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/site-packages" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "setup.py" , "install" , "--prefix=${cfg.installDir}" , "--optimize=1" ] , environment = Some ( [ { value = "${cfg.installDir}/lib/python${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Natural version < Empty | NonEmpty : Text > ( λ ( _ : Natural ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/site-packages" , var = "PYTHONPATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = None Text , program = "python${merge { None = "", Some = Natural/show } (List/head Natural version)}" } ] # List/fold Text binNames ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → List/fold < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "wrapper" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = "${( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).var}=${( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value} PYTHONPATH=${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ ( _ : Text ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Natural version < Empty | NonEmpty : Text > ( λ ( _ : Natural ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/site-packages" , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Natural version < Empty | NonEmpty : Text > ( λ ( _ : Natural ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}:${cfg.installDir}/lib/python${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Natural version < Empty | NonEmpty : Text > ( λ ( _ : Natural ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/site-packages ${cfg.installDir}/bin/${_} \$@" , file = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile { dest = "wrapper/${_}", src = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = "wrapper/${_}" } ] ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ ( _ : < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ _@1 ] # _ ) ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , installWithWrappers = λ(bins : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] # List/fold Text bins ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → List/fold < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "wrapper" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = "LD_LIBRARY_PATH=${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}:${cfg.installDir}/lib LD_PRELOAD='${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ ( _ : Text ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}' ${cfg.installDir}/bin/${_} \$@" , file = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile { dest = "wrapper/${_}", src = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = "wrapper/${_}" } ] ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ ( _ : < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ _@1 ] # _ ) ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , isUnix = λ ( os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > ) → merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } os , isX64 = λ ( arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > ) → merge { AArch = False , Alpha = False , Arm = False , HPPA = False , HPPA64 = False , M68k = False , Mips = False , Mips64 = False , Mips64El = False , MipsEl = False , MipsIsa32r6 = False , MipsIsa32r6El = False , MipsIsa64r6 = False , MipsIsa64r6El = False , PowerPC = False , PowerPC64 = False , PowerPC64le = False , RISCV64 = False , S390x = False , SH4 = False , Sparc64 = False , X64 = True , X86 = False } arch , libPath = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → if cfg.static then { value = "${List/fold Text cfg.linkDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , libSuffix = λ ( os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > ) → merge { AIX = "so" , Android = "so" , Darwin = "dylib" , Dragonfly = "so" , FreeBSD = "so" , Haiku = "so" , Hurd = "so" , IOS = "dylib" , Linux = "so" , NetBSD = "so" , NoOs = "so" , OpenBSD = "so" , Redox = "so" , Solaris = "so" , Windows = "so" } os , lowerBound = λ(pkg : { lower : List Natural, name : Text }) → { bound = < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } >.Lower { lower = pkg.lower } , name = pkg.name } , makeExe = λ ( os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > ) → merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } os , makeGnuExe = λ(pkg : { name : Text, version : List Natural }) → { buildCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "-j${Natural/show cfg.cpus}" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , configureCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , installCommand = λ ( installVars : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } installVars.buildOS then [ { value = "${List/fold Text installVars.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text ( installVars.shareDirs # installVars.linkDirs ) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } installVars.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } installVars.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } installVars.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } installVars.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text installVars.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text installVars.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } installVars.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } installVars.buildOS } ] # ( if installVars.isCross == False then [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = "bin/${pkg.name}" } ] else [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , pkgBuildDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , pkgDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , pkgName = pkg.name , pkgSubdir = "${pkg.name}-${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Natural pkg.version < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty (Natural/show _@1) , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}" , pkgUrl = "https://ftp.gnu.org/gnu/${pkg.name}/${pkg.name}-${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Natural pkg.version < Empty | NonEmpty : Text > ( λ ( _ : Natural ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}.tar.xz" , pkgVersion = pkg.version } , makeGnuLibrary = λ(pkg : { name : Text, version : List Natural }) → { buildCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "-j${Natural/show cfg.cpus}" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , configureCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , installCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , pkgBuildDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , pkgDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , pkgName = pkg.name , pkgSubdir = "lib${pkg.name}-${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Natural pkg.version < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty (Natural/show _@1) , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}" , pkgUrl = "https://ftp.gnu.org/pub/gnu/lib${pkg.name}/lib${pkg.name}-${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Natural pkg.version < Empty | NonEmpty : Text > ( λ ( _ : Natural ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}.tar.xz" , pkgVersion = pkg.version } , maybeAppend = λ(a : Type) → λ(x : Optional a) → λ(xs : List a) → merge { None = xs, Some = λ(x : a) → xs # [ x ] } x , mesonCfgFile = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → '' [binaries] c = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}gcc' cpp = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}g++' ar = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}ar' strip = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}strip' pkgconfig = 'pkg-config' [host_machine] system = '${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } ( merge { None = cfg.buildOS , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.os } cfg.targetTriple )}' cpu_family = '${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } ( merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple )}' cpu = '${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } ( merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple )}' endian = 'little${"'"}'' , mesonConfigure = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "build" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = '' [binaries] c = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}gcc' cpp = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}g++' ar = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}ar' strip = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}strip' pkgconfig = 'pkg-config' [host_machine] system = '${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } ( merge { None = cfg.buildOS , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.os } cfg.targetTriple )}' cpu_family = '${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } ( merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple )}' cpu = '${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } ( merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple )}' endian = 'little${"'"}'' , file = "build/cross.txt" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "--prefix=${cfg.installDir}", ".." ] # ( if cfg.isCross then [ "--cross-file", "cross.txt" ] else [] : List Text ) , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.linkDirs # cfg.shareDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_PRELOAD" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "meson" } ] , mesonConfigureGeneral = λ ( envs : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } → Optional (List { value : Text, var : Text }) ) → λ(flags : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "build" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = '' [binaries] c = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}gcc' cpp = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}g++' ar = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}ar' strip = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}strip' pkgconfig = 'pkg-config' [host_machine] system = '${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } ( merge { None = cfg.buildOS , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.os } cfg.targetTriple )}' cpu_family = '${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } ( merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple )}' cpu = '${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } ( merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple )}' endian = 'little${"'"}'' , file = "build/cross.txt" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "--prefix=${cfg.installDir}", ".." ] # ( if cfg.isCross then [ "--cross-file", "cross.txt" ] else [] : List Text ) # flags , environment = envs cfg , procDir = Some "build" , program = "meson" } ] , mesonConfigureWithFlags = λ(flags : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "build" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = '' [binaries] c = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}gcc' cpp = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}g++' ar = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}ar' strip = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}strip' pkgconfig = 'pkg-config' [host_machine] system = '${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } ( merge { None = cfg.buildOS , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.os } cfg.targetTriple )}' cpu_family = '${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } ( merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple )}' cpu = '${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } ( merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple )}' endian = 'little${"'"}'' , file = "build/cross.txt" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "--prefix=${cfg.installDir}", ".." ] # ( if cfg.isCross then [ "--cross-file", "cross.txt" ] else [] : List Text ) # flags , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.linkDirs # cfg.shareDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_PRELOAD" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "meson" } ] , mesonEnv = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.linkDirs # cfg.shareDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_PRELOAD" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , mesonMoves = λ(_ : List Text) → List/fold Text _ (List { dest : Text, src : Text }) ( λ(_ : Text) → λ(_ : List { dest : Text, src : Text }) → [ { dest = "lib/pkgconfig/${_@1}" , src = "build/meson-private/${_@1}" } ] # _ ) ([] : List { dest : Text, src : Text }) , mkAclocalPath = λ(shareDirs : List Text) → { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text shareDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/aclocal:${_@1}/autoconf" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/aclocal:${_@2}/autoconf:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "ACLOCAL_PATH" } , mkCCArg = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → merge { None = [] : List Text , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "CC=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-gcc" ] } cfg.targetTriple , mkCCVar = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → merge { None = [] : List { value : Text, var : Text } , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ { value = "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-gcc" , var = "CC" } ] } cfg.targetTriple , mkCFlags = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , mkExe = λ(x : Text) → < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = x } , mkExes = λ(_ : List Text) → List/fold Text _ ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = _@1 } ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , mkFRCArg = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → merge { None = [] : List Text , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → [ "CC=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-gcc" ] } cfg.targetTriple , mkHost = λ ( _ : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } _ , mkIncludePath = λ(incls : List Text) → { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text incls < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "C_INCLUDE_PATH" } , mkLDFlags = λ(libDirs : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text libDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text libDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , mkLDFlagsGeneral = λ(libDirs : List Text) → λ(linkLibs : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text libDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text linkLibs Text (λ(_ : Text) → λ(_ : Text) → " -l${_@1}${_}") ""}${List/fold Text libDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , mkLDPath = λ(libDirs : List Text) → { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text libDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , mkLDPathWrapper = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → λ(binName : Text) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "wrapper" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = "LD_LIBRARY_PATH=${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}:${cfg.installDir}/lib LD_PRELOAD='${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ ( _ : Text ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}' ${cfg.installDir}/bin/${binName} \$@" , file = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile { dest = "wrapper/${binName}", src = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = "wrapper/${binName}" } ] , mkLDPathWrappers = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → λ(bins : List Text) → List/fold Text bins ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → List/fold < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "wrapper" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = "LD_LIBRARY_PATH=${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}:${cfg.installDir}/lib LD_PRELOAD='${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ ( _ : Text ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}' ${cfg.installDir}/bin/${_} \$@" , file = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile { dest = "wrapper/${_}", src = "wrapper/${_}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = "wrapper/${_}" } ] ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ ( _ : < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ _@1 ] # _ ) ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , mkLDPreload = λ(libs : List Text) → { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text libs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_PRELOAD" } , mkLDRunPath = λ(libDirs : List Text) → { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text libDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , mkPathVar = λ(binDirs : List Text) → List/fold Text binDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") "" , mkPerlLib = λ ( x : { cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } , libDirs : List Text , perlVersion : List Natural } ) → { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text x.libDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Natural x.perlVersion < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } x.cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } x.cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Natural x.perlVersion < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } x.cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } x.cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL${merge { None = "", Some = Natural/show } (List/head Natural x.perlVersion)}LIB" } , mkPkgConfigVar = λ(libDirs : List Text) → { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text libDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , mkPy2Wrapper = λ(binName : Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "wrapper" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = "${( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).var}=${( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value} PYTHONPATH=${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python2.7/site-packages" , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python2.7/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}:${cfg.installDir}/lib/python2.7/site-packages ${cfg.installDir}/bin/${binName} \$@" , file = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile { dest = "wrapper/${binName}", src = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = "wrapper/${binName}" } ] , mkPy3Path = λ(libDirs : List Text) → { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text libDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , mkPy3Wrapper = λ(binName : Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "wrapper" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = "${( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).var}=${( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value} PYTHONPATH=${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}:${cfg.installDir}/lib/python3.8/site-packages ${cfg.installDir}/bin/${binName} \$@" , file = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile { dest = "wrapper/${binName}", src = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = "wrapper/${binName}" } ] , mkPyPath = λ(version : List Natural) → λ(libDirs : List Text) → { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text libDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Natural version < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Natural version < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , mkPyWrapper = λ(version : List Natural) → λ(binName : Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "wrapper" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = "${( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).var}=${( if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ).value} PYTHONPATH=${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Natural version < Empty | NonEmpty : Text > ( λ ( _ : Natural ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/site-packages" , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Natural version < Empty | NonEmpty : Text > ( λ ( _ : Natural ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}:${cfg.installDir}/lib/python${merge { Empty = "" , NonEmpty = λ ( _ : Text ) → _ } ( List/fold Natural version < Empty | NonEmpty : Text > ( λ ( _ : Natural ) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty ( Natural/show _@1 ) , NonEmpty = λ ( _ : Text ) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}/site-packages ${cfg.installDir}/bin/${binName} \$@" , file = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.MakeExecutable { file = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile { dest = "wrapper/${binName}", src = "wrapper/${binName}" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = "wrapper/${binName}" } ] , mkStaPath = λ(libDirs : List Text) → { value = "${List/fold Text libDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } , mkXdgDataDirs = λ(shareDirs : List Text) → { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text shareDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "XDG_DATA_DIRS" } , ninjaBuild = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [] : List Text , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # ( if cfg.isCross then [] : List { value : Text, var : Text } else [ { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_PRELOAD" } ] ) ) , procDir = Some "build" , program = "ninja" } ] , ninjaInstall = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "ninja" } ] , ninjaInstallWithPkgConfig = λ(fs : List { dest : Text, src : Text }) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "ninja" } ] # List/fold { dest : Text, src : Text } fs ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : { dest : Text, src : Text }) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CopyFile _@1 ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , ninjaPackage = λ(x : { name : Text, version : List Natural }) → { buildCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [] : List Text , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # ( if cfg.isCross then [] : List { value : Text, var : Text } else [ { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_PRELOAD" } ] ) ) , procDir = Some "build" , program = "ninja" } ] , configureCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "build" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write { contents = '' [binaries] c = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}gcc' cpp = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}g++' ar = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}ar' strip = '${merge { None = "" , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } tgt.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } tgt.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } tgt.abi}-" } cfg.targetTriple}strip' pkgconfig = 'pkg-config' [host_machine] system = '${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } ( merge { None = cfg.buildOS , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.os } cfg.targetTriple )}' cpu_family = '${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } ( merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple )}' cpu = '${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } ( merge { None = cfg.buildArch , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.arch } cfg.targetTriple )}' endian = 'little${"'"}'' , file = "build/cross.txt" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "--prefix=${cfg.installDir}", ".." ] # ( if cfg.isCross then [ "--cross-file", "cross.txt" ] else [] : List Text ) , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.linkDirs # cfg.shareDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_PRELOAD" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "meson" } ] , installCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/python3.8/site-packages" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/python3.8/site-packages:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PYTHONPATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = Some "build" , program = "ninja" } ] , pkgBuildDeps = [ { bound = < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } >.NoBound , name = "meson" } , { bound = < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } >.NoBound , name = "ninja" } ] , pkgDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , pkgName = x.name , pkgSubdir = "${x.name}-${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Natural x.version < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty (Natural/show _@1) , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}" , pkgVersion = x.version } , osCfg = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → merge { None = cfg.buildOS , Some = λ ( tgt : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → tgt.os } cfg.targetTriple , patch = λ(x : Text) → < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Patch { patchContents = x } , perlConfigure = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "Makefile.PL", "PREFIX=${cfg.installDir}" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.shareDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "XDG_DATA_DIRS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_PRELOAD" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = "perl" } ] , preloadCfg = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.shareDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "XDG_DATA_DIRS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_PRELOAD" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , preloadEnv = λ(_ : List Text) → λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.shareDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "XDG_DATA_DIRS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.preloadLibs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_PRELOAD" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , printArch = λ ( arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > ) → merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } arch , printEnvVar = λ(var : { value : Text, var : Text }) → "${var.var}=${var.value}" , printManufacturer = λ(x : < Apple | IBM | PC | Unknown >) → merge { Apple = "apple", IBM = "ibm", PC = "pc", Unknown = "unknown" } x , printOS = λ ( os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > ) → merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } os , printTargetTriple = λ ( t : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → "${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } t.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } t.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } t.abi}" , python2Package = λ(x : { name : Text, version : List Natural }) → { buildCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "${cfg.installDir}/lib/python2.7/site-packages" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "setup.py", "build" ] , environment = Some ( [ { value = "${cfg.installDir}/lib/python2.7/site-packages" , var = "PYTHONPATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = None Text , program = "python2" } ] , configureCommand = λ ( _ : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > , installCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "${cfg.installDir}/lib/python2.7/site-packages" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "setup.py" , "install" , "--prefix=${cfg.installDir}" , "--optimize=1" ] , environment = Some ( [ { value = "${cfg.installDir}/lib/python2.7/site-packages" , var = "PYTHONPATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = None Text , program = "python2" } ] , pkgBuildDeps = [ { bound = < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } >.NoBound , name = "python2" } ] , pkgDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , pkgName = x.name , pkgSubdir = "${x.name}-${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Natural x.version < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty (Natural/show _@1) , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}" , pkgVersion = x.version } , python3Build = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "${cfg.installDir}/lib/python3.8/site-packages" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "setup.py", "build" ] , environment = Some ( [ { value = "${cfg.installDir}/lib/python3.8/site-packages" , var = "PYTHONPATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = None Text , program = "python3" } ] , python3Install = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "${cfg.installDir}/lib/python3.8/site-packages" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "setup.py" , "install" , "--prefix=${cfg.installDir}" , "--optimize=1" ] , environment = Some ( [ { value = "${cfg.installDir}/lib/python3.8/site-packages" , var = "PYTHONPATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = None Text , program = "python3" } ] , python3Package = λ(x : { name : Text, version : List Natural }) → { buildCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "${cfg.installDir}/lib/python3.8/site-packages" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "setup.py", "build" ] , environment = Some ( [ { value = "${cfg.installDir}/lib/python3.8/site-packages" , var = "PYTHONPATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = None Text , program = "python3" } ] , configureCommand = λ ( _ : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > , installCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.CreateDirectory { dir = "${cfg.installDir}/lib/python3.8/site-packages" } , < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "setup.py" , "install" , "--prefix=${cfg.installDir}" , "--optimize=1" ] , environment = Some ( [ { value = "${cfg.installDir}/lib/python3.8/site-packages" , var = "PYTHONPATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } ] # ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) ) , procDir = None Text , program = "python3" } ] , pkgBuildDeps = [ { bound = < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } >.NoBound , name = "python3" } ] , pkgDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , pkgName = x.name , pkgSubdir = "${x.name}-${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Natural x.version < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty (Natural/show _@1) , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}" , pkgVersion = x.version } , showVersion = λ(_ : List Natural) → merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Natural _ < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty (Natural/show _@1) , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , simplePackage = λ(pkg : { name : Text, version : List Natural }) → { buildCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "-j${Natural/show cfg.cpus}" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , configureCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = ( if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then λ(x : List Text) → [ "configure" ] # x else λ(x : List Text) → x ) ( merge { None = [ "--prefix=${cfg.installDir}" ] , Some = λ(x : Text) → [ "--prefix=${cfg.installDir}", x ] } ( merge { None = None Text , Some = λ ( _ : { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } ) → Some "--host=${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } _.arch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } _.os}${merge { None = "" , Some = λ ( abi : < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > ) → "-${merge { GNU = "gnu" , GNUabi64 = "gnuabi64" , GNUeabi = "gnueabi" , GNUeabihf = "gnueabihf" , GNUspe = "gnuspe" , MinGw = "mingw32" } abi}" } _.abi}" } cfg.targetTriple ) ) , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.includeDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-I${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-I${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${if cfg.static then " -static" else ""}" , var = "CPPFLAGS" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , if cfg.static then { value = "${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/lib:/lib:/usr/lib" , var = "LIBRARY_PATH" } else { value = merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_RUN_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } ] ) , procDir = None Text , program = if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "sh" else "./configure" } ] , installCommand = λ ( cfg : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Call { arguments = [ "install" ] , environment = Some ( ( if merge { AIX = True , Android = True , Darwin = True , Dragonfly = True , FreeBSD = True , Haiku = False , Hurd = True , IOS = True , Linux = True , NetBSD = True , NoOs = False , OpenBSD = True , Redox = False , Solaris = True , Windows = False } cfg.buildOS then [ { value = "${List/fold Text cfg.binDirs Text ( λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}" ) ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } ] else [] : List { value : Text, var : Text } ) # [ { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text (cfg.shareDirs # cfg.linkDirs) < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/pkgconfig" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/pkgconfig:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PKG_CONFIG_PATH" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "${_@1}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}/site_perl/5.30.2/${merge { AArch = "aarch64" , Alpha = "alpha" , Arm = "arm" , HPPA = "hppa" , HPPA64 = "hppa64" , M68k = "m68k" , Mips = "mips" , Mips64 = "mips64" , Mips64El = "mips64el" , MipsEl = "mipsel" , MipsIsa32r6 = "mipsisa32r6" , MipsIsa32r6El = "mipsisa32r6el" , MipsIsa64r6 = "mipsisa64r6" , MipsIsa64r6El = "mipsisa64r6el" , PowerPC = "powerpc" , PowerPC64 = "powerpc64" , PowerPC64le = "powerpc64le" , RISCV64 = "riscv64" , S390x = "s390x" , SH4 = "sh4" , Sparc64 = "sparc64" , X64 = "x86_64" , X86 = "i686" } cfg.buildArch}-${merge { AIX = "aix" , Android = "android" , Darwin = "darwin" , Dragonfly = "dragonfly" , FreeBSD = "freebsd" , Haiku = "haiku" , Hurd = "hurd" , IOS = "darwin" , Linux = "linux" , NetBSD = "netbsd" , NoOs = "none" , OpenBSD = "openbsd" , Redox = "redox" , Solaris = "solaris" , Windows = "w64" } cfg.buildOS}/:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "PERL5LIB" } , { value = merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty _@1 , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${_@2}:${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , var = "LD_LIBRARY_PATH" } , { value = "${merge { Empty = "" , NonEmpty = λ(_ : Text) → _ } ( List/fold Text cfg.linkDirs < Empty | NonEmpty : Text > ( λ(_ : Text) → λ ( _ : < Empty | NonEmpty : Text > ) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty "-L${_@1}" , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "-L${_@2} ${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}${List/fold Text cfg.linkDirs Text ( λ(_ : Text) → λ(_ : Text) → "${if merge { AIX = False , Android = False , Darwin = True , Dragonfly = False , FreeBSD = False , Haiku = False , Hurd = False , IOS = False , Linux = False , NetBSD = False , NoOs = False , OpenBSD = False , Redox = False , Solaris = False , Windows = False } cfg.buildOS then "" else " -Wl,-rpath-link,${_@1}"}${_}" ) ""}" , var = "LDFLAGS" } ] ) , procDir = None Text , program = merge { AIX = "make" , Android = "make" , Darwin = "make" , Dragonfly = "gmake" , FreeBSD = "gmake" , Haiku = "make" , Hurd = "make" , IOS = "make" , Linux = "make" , NetBSD = "gmake" , NoOs = "make" , OpenBSD = "gmake" , Redox = "make" , Solaris = "gmake" , Windows = "make" } cfg.buildOS } ] , pkgBuildDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , pkgDeps = [] : List { bound : < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } > , name : Text } , pkgName = pkg.name , pkgSubdir = "${pkg.name}-${merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Natural pkg.version < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty (Natural/show _@1) , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}.${_}" } _ ) < Empty | NonEmpty : Text >.Empty )}" , pkgVersion = pkg.version } , singleThreaded = λ ( _ : { binDirs : List Text , buildArch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , buildOS : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > , cpus : Natural , currentDir : Text , includeDirs : List Text , installDir : Text , isCross : Bool , linkDirs : List Text , preloadLibs : List Text , shareDirs : List Text , static : Bool , targetTriple : Optional { abi : Optional < GNU | GNUabi64 | GNUeabi | GNUeabihf | GNUspe | MinGw > , arch : < AArch | Alpha | Arm | HPPA | HPPA64 | M68k | Mips | Mips64 | Mips64El | MipsEl | MipsIsa32r6 | MipsIsa32r6El | MipsIsa64r6 | MipsIsa64r6El | PowerPC | PowerPC64 | PowerPC64le | RISCV64 | S390x | SH4 | Sparc64 | X64 | X86 > , manufacturer : Optional < Apple | IBM | PC | Unknown > , os : < AIX | Android | Darwin | Dragonfly | FreeBSD | Haiku | Hurd | IOS | Linux | NetBSD | NoOs | OpenBSD | Redox | Solaris | Windows > } } ) → 1 , squishVersion = λ(_ : List Natural) → List/fold Natural _ Text (λ(_ : Natural) → λ(_ : Text) → "${Natural/show _@1}${_}") "" , symlink = λ(tgt : Text) → λ(lnk : Text) → < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Symlink { linkName = lnk, tgt } , symlinkBinaries = λ(_ : List Text) → List/fold Text _ ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : Text) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file = _@1 } ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , symlinkBinary = λ(file : Text) → < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkBinary { file } , symlinkManpage = < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkManpage , symlinkManpages = λ(_ : List { file : Text, section : Natural }) → List/fold { file : Text, section : Natural } _ ( List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) ( λ(_ : { file : Text, section : Natural }) → λ ( _ : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) → [ < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.SymlinkManpage _@1 ] # _ ) ( [] : List < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } > ) , unbounded = λ(x : Text) → { bound = < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } >.NoBound , name = x } , underscoreVersion = λ(_ : List Natural) → merge { Empty = "", NonEmpty = λ(_ : Text) → _ } ( List/fold Natural _ < Empty | NonEmpty : Text > ( λ(_ : Natural) → λ(_ : < Empty | NonEmpty : Text >) → merge { Empty = < Empty | NonEmpty : Text >.NonEmpty (Natural/show _@1) , NonEmpty = λ(_ : Text) → < Empty | NonEmpty : Text >.NonEmpty "${Natural/show _@2}_${_}" } _ ) < Empty | NonEmpty : Text >.Empty ) , unixPath = λ(binDirs : List Text) → { value = "${List/fold Text binDirs Text (λ(_ : Text) → λ(_ : Text) → "${_@1}:${_}") ""}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , var = "PATH" } , upperBound = λ(pkg : { name : Text, upper : List Natural }) → { bound = < Lower : { lower : List Natural } | LowerUpper : { lower : List Natural, upper : List Natural } | NoBound | Upper : { upper : List Natural } >.Upper { upper = pkg.upper } , name = pkg.name } , writeFile = < Call : { arguments : List Text , environment : Optional (List { value : Text, var : Text }) , procDir : Optional Text , program : Text } | CopyFile : { dest : Text, src : Text } | CreateDirectory : { dir : Text } | MakeExecutable : { file : Text } | Patch : { patchContents : Text } | Symlink : { linkName : Text, tgt : Text } | SymlinkBinary : { file : Text } | SymlinkManpage : { file : Text, section : Natural } | Write : { contents : Text, file : Text } >.Write } let gpgPackage = λ(x : { name : Text, version : List Natural }) → prelude.simplePackage x ⫽ { pkgUrl = "https://gnupg.org/ftp/gcrypt/${x.name}/${x.name}-${prelude.showVersion x.version}.tar.bz2" } let gnupg = λ(v : List Natural) → gpgPackage { name = "gnupg", version = v } ⫽ { pkgDeps = [ prelude.lowerBound { name = "npth", lower = [ 1, 2 ] } , prelude.lowerBound { name = "libgpg-error", lower = [ 1, 24 ] } , prelude.lowerBound { name = "libgcrypt", lower = [ 1, 7, 0 ] } , prelude.lowerBound { name = "libassuan", lower = [ 2, 5, 0 ] } , prelude.lowerBound { name = "libksba", lower = [ 1, 3, 4 ] } ] , installCommand = prelude.installWithBinaries [ "bin/gpg" ] } let npth = λ(v : List Natural) → gpgPackage { name = "npth", version = v } let libgpgError = λ(v : List Natural) → gpgPackage { name = "libgpg-error", version = v } let libgcrypt = λ(v : List Natural) → gpgPackage { name = "libgcrypt", version = v } ⫽ { pkgDeps = [ prelude.lowerBound { name = "libgpg-error", lower = [ 1, 25 ] } ] } let libassuan = λ(v : List Natural) → gpgPackage { name = "libassuan", version = v } ⫽ { pkgDeps = [ prelude.lowerBound { name = "libgpg-error", lower = [ 1, 24 ] } ] } let libksba = λ(v : List Natural) → gpgPackage { name = "libksba", version = v } ⫽ { pkgDeps = [ prelude.lowerBound { name = "libgpg-error", lower = [ 1, 8 ] } ] } let musl = λ(v : List Natural) → prelude.simplePackage { name = "musl", version = v } ⫽ { pkgUrl = "https://www.musl-libc.org/releases/musl-${prelude.showVersion v}.tar.gz" , installCommand = prelude.installWithBinaries [ "bin/musl-gcc" ] } let binutils = λ(v : List Natural) → prelude.makeGnuExe { name = "binutils", version = v } ⫽ { pkgUrl = "https://ftp.wayne.edu/gnu/binutils/binutils-${prelude.showVersion v}.tar.lz" , installCommand = prelude.installWithBinaries [ "bin/ar" , "bin/as" , "bin/ld" , "bin/strip" , "bin/strings" , "bin/readelf" , "bin/objdump" , "bin/nm" , "bin/ranlib" ] } let bison = λ(v : List Natural) → prelude.makeGnuExe { name = "bison", version = v } ⫽ { buildCommand = λ(cfg : types.BuildVars) → prelude.generalBuild prelude.singleThreaded (prelude.buildEnv cfg) cfg , installCommand = prelude.installWithBinaries [ "bin/bison", "bin/yacc" ] , pkgBuildDeps = [ prelude.unbounded "m4" ] } let cmake = λ(cfg : { version : List Natural, patch : Natural }) → let patchString = Natural/show cfg.patch let versionString = prelude.showVersion cfg.version let cmakeConfigure = λ(cfg : types.BuildVars) → prelude.configureMkExesExtraFlags { bins = [ "bootstrap" ] , extraFlags = [ "--parallel=${Natural/show cfg.cpus}" ] } cfg in prelude.defaultPackage ⫽ { pkgName = "cmake" , pkgVersion = prelude.fullVersion cfg , pkgUrl = "https://cmake.org/files/v${versionString}/cmake-${versionString}.${patchString}.tar.gz" , pkgSubdir = "cmake-${versionString}.${patchString}" , configureCommand = cmakeConfigure , installCommand = λ(cfg : types.BuildVars) → let wrapper = "CMAKE_ROOT=${cfg.installDir}/share/cmake-${versionString}/ ${cfg.installDir}/bin/cmake \$@" let wrapped = "wrapper/cmake" in prelude.defaultInstall cfg # [ prelude.createDir "wrapper" , prelude.writeFile { file = wrapped, contents = wrapper } , prelude.mkExe wrapped , prelude.copyFile wrapped wrapped , prelude.symlinkBinary wrapped ] } let curl = λ(v : List Natural) → prelude.simplePackage { name = "curl", version = v } ⫽ { pkgUrl = "https://curl.haxx.se/download/curl-${prelude.showVersion v}.tar.xz" , installCommand = prelude.installWithBinaries [ "bin/curl" ] , pkgDeps = [ prelude.unbounded "zlib" ] } let dbus = λ(v : List Natural) → prelude.simplePackage { name = "dbus", version = v } ⫽ { pkgUrl = "https://dbus.freedesktop.org/releases/dbus/dbus-${prelude.showVersion v}.tar.xz" , pkgDeps = [ prelude.unbounded "expat", prelude.unbounded "libselinux" ] , configureCommand = prelude.configureLinkExtraLibs [ "pcre" ] , pkgBuildDeps = [ prelude.unbounded "pkg-config" ] } let fltk = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "fltk", version = v } ⫽ { pkgUrl = "http://fltk.org/pub/fltk/${versionString}/fltk-${versionString}-source.tar.bz2" , pkgSubdir = "fltk-${versionString}" , pkgDeps = [ prelude.unbounded "libX11" , prelude.unbounded "alsa-lib" , prelude.unbounded "zlib" , prelude.unbounded "libpng" , prelude.unbounded "libXft" , prelude.unbounded "freetype" ] } let gawk = λ(v : List Natural) → prelude.makeGnuExe { name = "gawk", version = v } ⫽ { installCommand = prelude.installWithBinaries [ "bin/gawk", "bin/awk" ] } let gc = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "gc", version = v } ⫽ { pkgUrl = "https://github.com/ivmai/bdwgc/releases/download/v${versionString}/gc-${versionString}.tar.gz" , pkgDeps = [ prelude.unbounded "libatomic_ops" ] } let libatomic_ops = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libatomic_ops", version = v } ⫽ { pkgUrl = "https://github.com/ivmai/libatomic_ops/releases/download/v${versionString}/libatomic_ops-${versionString}.tar.gz" } let git = λ(v : List Natural) → prelude.simplePackage { name = "git", version = v } ⫽ { pkgUrl = "https://mirrors.edge.kernel.org/pub/software/scm/git/git-${prelude.showVersion v}.tar.xz" , installCommand = prelude.installWithBinaries [ "bin/git" ] , pkgBuildDeps = [ prelude.unbounded "gettext" ] } let glibc = let buildDir = Some "build" let glibcConfigure = λ(cfg : types.BuildVars) → let maybeHost = prelude.mkHost cfg.targetTriple let modifyArgs = prelude.maybeAppend Text maybeHost in [ prelude.createDir "build" , prelude.call { program = "../configure" , arguments = modifyArgs [ "--prefix=${cfg.installDir}" ] , environment = prelude.configSome ([] : List Text) cfg , procDir = buildDir } ] let glibcBuild = λ(cfg : types.BuildVars) → [ prelude.call { program = prelude.makeExe cfg.buildOS , arguments = [ "-j${Natural/show cfg.cpus}" ] , environment = prelude.configSome ([] : List Text) cfg , procDir = buildDir } ] let glibcInstall = λ(cfg : types.BuildVars) → [ prelude.call { program = prelude.makeExe cfg.buildOS , arguments = [ "install" ] , environment = prelude.configSome ([] : List Text) cfg , procDir = buildDir } ] in λ(v : List Natural) → prelude.defaultPackage ⫽ { pkgName = "glibc" , pkgVersion = v , pkgUrl = "http://mirror.keystealth.org/gnu/libc/glibc-${prelude.showVersion v}.tar.xz" , pkgSubdir = "glibc-${prelude.showVersion v}" , configureCommand = glibcConfigure , buildCommand = glibcBuild , installCommand = glibcInstall , pkgBuildDeps = [ prelude.unbounded "bison" , prelude.unbounded "gawk" , prelude.unbounded "python3" ] } let gmp = λ(v : List Natural) → prelude.simplePackage { name = "gmp", version = v } ⫽ { pkgUrl = "https://gmplib.org/download/gmp/gmp-${prelude.showVersion v}.tar.lz" , pkgBuildDeps = [ prelude.unbounded "m4" ] } let harfbuzz = let symlinkHarfbuzz = λ(h : Text) → prelude.symlink "include/harfbuzz/${h}" "include/${h}" in λ(v : List Natural) → prelude.simplePackage { name = "harfbuzz", version = v } ⫽ { pkgUrl = "https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-${prelude.showVersion v}.tar.xz" , pkgDeps = [ prelude.unbounded "freetype-prebuild" , prelude.unbounded "glib" ] , pkgBuildDeps = [ prelude.unbounded "pkg-config" ] , configureCommand = prelude.configureLinkExtraLibs [ "pcre", "z" ] , installCommand = λ(cfg : types.BuildVars) → prelude.defaultInstall cfg # [ symlinkHarfbuzz "hb-aat-layout.h" , symlinkHarfbuzz "hb-aat.h" , symlinkHarfbuzz "hb-blob.h" , symlinkHarfbuzz "hb-buffer.h" , symlinkHarfbuzz "hb-common.h" , symlinkHarfbuzz "hb-deprecated.h" , symlinkHarfbuzz "hb-face.h" , symlinkHarfbuzz "hb-font.h" , symlinkHarfbuzz "hb-ft.h" , symlinkHarfbuzz "hb-glib.h" , symlinkHarfbuzz "hb-icu.h" , symlinkHarfbuzz "hb-map.h" , symlinkHarfbuzz "hb-ot-color.h" , symlinkHarfbuzz "hb-ot-font.h" , symlinkHarfbuzz "hb-ot-layout.h" , symlinkHarfbuzz "hb-ot-math.h" , symlinkHarfbuzz "hb-ot-name.h" , symlinkHarfbuzz "hb-ot-shape.h" , symlinkHarfbuzz "hb-ot-var.h" , symlinkHarfbuzz "hb-ot.h" , symlinkHarfbuzz "hb-set.h" , symlinkHarfbuzz "hb-shape-plan.h" , symlinkHarfbuzz "hb-shape.h" , symlinkHarfbuzz "hb-subset.h" , symlinkHarfbuzz "hb-unicode.h" , symlinkHarfbuzz "hb-version.h" , symlinkHarfbuzz "hb.h" ] } let libjpeg-turbo = λ(v : List Natural) → prelude.cmakePackage ⫽ { pkgName = "libjpeg-turbo" , pkgVersion = v , pkgUrl = "https://ayera.dl.sourceforge.net/project/libjpeg-turbo/${prelude.showVersion v}/libjpeg-turbo-${prelude.showVersion v}.tar.gz" , pkgSubdir = "libjpeg-turbo-${prelude.showVersion v}" , pkgBuildDeps = [ prelude.unbounded "cmake" , prelude.unbounded "nasm" , prelude.unbounded "make" ] } let libuv = λ(v : List Natural) → prelude.defaultPackage ⫽ { pkgName = "libuv" , pkgVersion = v , pkgUrl = "https://dist.libuv.org/dist/v${prelude.showVersion v}/libuv-v${prelude.showVersion v}.tar.gz" , pkgSubdir = "libuv-v${prelude.showVersion v}" , configureCommand = prelude.autogenConfigure , pkgBuildDeps = [ prelude.unbounded "m4" , prelude.unbounded "automake" , prelude.unbounded "libtool" ] } let nasm = λ(v : List Natural) → prelude.simplePackage { name = "nasm", version = v } ⫽ { pkgUrl = "http://www.nasm.us/pub/nasm/releasebuilds/${prelude.showVersion v}.02/nasm-${prelude.showVersion v}.02.tar.xz" , pkgSubdir = "nasm-${prelude.showVersion v}.02" , installCommand = prelude.installWithBinaries [ "bin/nasm", "bin/ndisasm" ] } let ncurses = λ(v : List Natural) → prelude.simplePackage { name = "ncurses", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/ncurses/ncurses-${prelude.showVersion v}.tar.gz" , configureCommand = λ(cfg : types.BuildVars) → let crossArgs = if cfg.isCross then [ "--disable-stripping" ] else [] : List Text in prelude.configureWithFlags ([ "--with-shared", "--enable-widec" ] # crossArgs) cfg , installCommand = λ(cfg : types.BuildVars) → prelude.defaultInstall cfg # [ prelude.symlink "lib/libncursesw.so" "lib/libncurses.so" ] } let pcre2 = λ(v : List Natural) → prelude.simplePackage { name = "pcre2", version = v } ⫽ { pkgUrl = "https://ftp.pcre.org/pub/pcre/pcre2-${prelude.showVersion v}.tar.bz2" } let pcre = λ(v : List Natural) → prelude.simplePackage { name = "pcre", version = v } ⫽ { pkgUrl = "https://ftp.pcre.org/pub/pcre/pcre-${prelude.showVersion v}.tar.bz2" , configureCommand = prelude.configureWithFlags [ "--enable-utf8", "--enable-unicode-properties" ] } let perl5 = let perlConfigure = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "sh" , arguments = [ "./Configure" , "-des" , "-Dprefix=${cfg.installDir}" ] # ( if cfg.static then [] : List Text else [ "-Duseshrplib" ] ) } ) ] let linkDir = λ(os : types.OS) → merge { FreeBSD = "CORE" , OpenBSD = "CORE" , NetBSD = "CORE" , Solaris = "CORE" , Dragonfly = "CORE" , Linux = "CORE" , Darwin = "darwin-2level/CORE" , Windows = "CORE" , Redox = "CORE" , Haiku = "CORE" , IOS = "darwin-2level/CORE" , AIX = "CORE" , Hurd = "CORE" , Android = "CORE" , NoOs = "CORE" } os in λ(v : List Natural) → let major = merge { Some = Natural/show, None = "" } (List/head Natural v) in prelude.simplePackage { name = "perl", version = v } ⫽ { pkgUrl = "https://www.cpan.org/src/${major}.0/perl-${prelude.showVersion v}.tar.gz" , configureCommand = perlConfigure , buildCommand = λ(cfg : types.BuildVars) → prelude.generalBuild prelude.singleThreaded (prelude.buildEnv cfg) cfg , installCommand = λ(cfg : types.BuildVars) → let libperlFile = if cfg.static then "libperl.a" else "libperl.${prelude.libSuffix (prelude.osCfg cfg)}" in prelude.installWithBinaries [ "bin/perl", "bin/cpan", "bin/ptar" ] cfg # [ prelude.symlink "lib/${prelude.showVersion v}/${prelude.printArch cfg.buildArch}-${prelude.printOS cfg.buildOS}/${linkDir cfg.buildOS}/${libperlFile}" "lib/${libperlFile}" ] } let libpng = λ(v : List Natural) → prelude.simplePackage { name = "libpng", version = v } ⫽ { pkgUrl = "https://download.sourceforge.net/libpng/libpng-${prelude.showVersion v}.tar.xz" , pkgDeps = [ prelude.unbounded "zlib" ] } let sed = λ(v : List Natural) → prelude.makeGnuExe { name = "sed", version = v } ⫽ { installCommand = prelude.installWithManpages [ { file = "share/man/man1/sed.1", section = 1 } ] , configureCommand = prelude.configureWithFlags [ "--disable-dependency-tracking" ] } let tar = λ(v : List Natural) → prelude.makeGnuExe { name = "tar", version = v } let unistring = λ(v : List Natural) → prelude.makeGnuLibrary { name = "unistring", version = v } let valgrind = λ(v : List Natural) → prelude.simplePackage { name = "valgrind", version = v } ⫽ { pkgUrl = "https://sourceware.org/pub/valgrind/valgrind-${prelude.showVersion v}.tar.bz2" , installCommand = λ(cfg : types.BuildVars) → prelude.installWithBinaries [ "bin/valgrind" ] cfg # prelude.symlinkManpages [ { file = "share/man/man1/pdfgrep.1", section = 1 } ] } let vim = λ(v : List Natural) → prelude.defaultPackage ⫽ { pkgName = "vim" , pkgVersion = v , pkgUrl = "http://ftp.vim.org/vim/unix/vim-${prelude.showVersion v}.tar.bz2" , pkgSubdir = "vim${prelude.squishVersion v}" , configureCommand = prelude.configureMkExesExtraFlags { bins = [ "src/configure", "src/auto/configure", "src/which.sh" ] , extraFlags = [ "--enable-gui=no", "--enable-pythoninterp" ] } , installCommand = λ(cfg : types.BuildVars) → let mkLibDynload = λ(libs : List Text) → concatMapSep ":" Text ( λ(dir : Text) → "${dir}:${dir}/python2.7/lib-dynload" ) libs let mkPython = λ(libs : List Text) → concatMapSep ":" Text ( λ(dir : Text) → "${dir}/python2.7/:${dir}/python2.7/lib-dynload" ) libs let wrapper = "LD_LIBRARY_PATH=${mkLibDynload cfg.linkDirs} PYTHONPATH=${mkPython cfg.linkDirs} ${cfg.installDir}/bin/vim \$@" let wrapped = "wrapper/vim" in prelude.installWithBinaries [ "bin/xxd" ] cfg # [ prelude.createDir "wrapper" , prelude.writeFile { file = wrapped, contents = wrapper } , prelude.mkExe wrapped , prelude.copyFile wrapped wrapped , prelude.symlinkBinary wrapped ] , pkgDeps = [ prelude.unbounded "ncurses" , prelude.unbounded "libXpm" , prelude.unbounded "libXt" , prelude.unbounded "python2" ] } let xz = λ(v : List Natural) → prelude.simplePackage { name = "xz", version = v } ⫽ { pkgUrl = "https://tukaani.org/xz/xz-${prelude.showVersion v}.tar.xz" , installCommand = prelude.installWithBinaries [ "bin/xz" ] } let zlib = λ(v : List Natural) → let zlibConfigure = λ(cfg : types.BuildVars) → let host = prelude.mkCCVar cfg in [ prelude.call ( prelude.defaultCall ⫽ { program = "sh" , arguments = [ "configure", "--prefix=${cfg.installDir}" ] , environment = Some ( host # [ { var = "PATH" , value = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" } ] ) } ) ] in prelude.simplePackage { name = "zlib", version = v } ⫽ { pkgUrl = "http://www.zlib.net/zlib-${prelude.showVersion v}.tar.xz" , configureCommand = zlibConfigure , installCommand = prelude.installWithManpages [ { file = "share/man/man3/zlib.3", section = 3 } ] } let gettext = λ(v : List Natural) → prelude.makeGnuExe { name = "gettext", version = v } ⫽ { installCommand = prelude.installWithBinaries [ "bin/gettext", "bin/msgfmt", "bin/autopoint" ] , configureCommand = prelude.configureWithFlags [ "--disable-dependency-tracking" ] } let gzip = λ(v : List Natural) → prelude.makeGnuExe { name = "gzip", version = v } let wget = λ(v : List Natural) → prelude.makeGnuExe { name = "wget", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/wget/wget-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "gnutls" ] , pkgBuildDeps = [ prelude.unbounded "perl" ] , installCommand = prelude.installWithWrappers [ "wget" ] } let gnutls = λ(cfg : { version : List Natural, patch : List Natural }) → let versionString = prelude.showVersion cfg.version in prelude.simplePackage { name = "gnutls", version = cfg.version # cfg.patch } ⫽ { pkgUrl = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${versionString}/gnutls-${versionString}.${prelude.showVersion cfg.patch}.tar.xz" , pkgDeps = [ prelude.lowerBound { name = "nettle", lower = [ 3, 1 ] } , prelude.unbounded "unistring" , prelude.lowerBound { name = "libtasn1", lower = [ 4, 9 ] } , prelude.lowerBound { name = "p11-kit", lower = [ 0, 23, 1 ] } ] , configureCommand = prelude.configureLinkExtraLibs [ "nettle", "hogweed" ] } let lapack = λ(v : List Natural) → prelude.cmakePackage ⫽ { pkgName = "lapack" , pkgVersion = v , pkgUrl = "http://www.netlib.org/lapack/lapack-${prelude.showVersion v}.tar.gz" , pkgSubdir = "lapack-${prelude.showVersion v}" , pkgBuildDeps = [ prelude.unbounded "cmake", prelude.unbounded "gcc" ] } let cairo = let symlinkCairo = λ(h : Text) → prelude.symlink "include/cairo/${h}" "include/${h}" in λ(v : List Natural) → prelude.simplePackage { name = "cairo", version = v } ⫽ { pkgUrl = "https://www.cairographics.org/releases/cairo-${prelude.showVersion v}.tar.xz" , pkgDeps = [ prelude.lowerBound { name = "pixman", lower = [ 0, 30, 0 ] } , prelude.lowerBound { name = "freetype", lower = [ 9, 7, 3 ] } , prelude.lowerBound { name = "fontconfig", lower = [ 2, 2, 95 ] } , prelude.unbounded "libXext" ] , installCommand = λ(cfg : types.BuildVars) → prelude.defaultInstall cfg # [ symlinkCairo "cairo-deprecated.h" , symlinkCairo "cairo-features.h" , symlinkCairo "cairo-ft.h" , symlinkCairo "cairo-gobject.h" , symlinkCairo "cairo-pdf.h" , symlinkCairo "cairo-ps.h" , symlinkCairo "cairo-script-interpreter.h" , symlinkCairo "cairo-script.h" , symlinkCairo "cairo-svg.h" , symlinkCairo "cairo-version.h" , symlinkCairo "cairo-xcb.h" , symlinkCairo "cairo-xlib-xrender.h" , symlinkCairo "cairo-xlib.h" , symlinkCairo "cairo.h" ] } let pycairo = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.python2Package { name = "pycairo", version = v } ⫽ { pkgUrl = "https://github.com/pygobject/pycairo/releases/download/v${versionString}/pycairo-${versionString}.tar.gz" , pkgDeps = [ prelude.unbounded "cairo" ] } let libnettle = λ(v : List Natural) → prelude.simplePackage { name = "nettle", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/nettle/nettle-${prelude.showVersion v}.tar.gz" , pkgBuildDeps = [ prelude.unbounded "m4" ] } let diffutils = λ(v : List Natural) → prelude.simplePackage { name = "diffutils", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/diffutils/diffutils-${prelude.showVersion v}.tar.xz" , installCommand = prelude.installWithBinaries [ "bin/diff" ] } let patch = λ(v : List Natural) → prelude.makeGnuExe { name = "patch", version = v } ⫽ { installCommand = λ(cfg : types.BuildVars) → prelude.installWithBinaries [ "bin/patch" ] cfg # prelude.symlinkManpages [ { file = "share/man/man1/patch.1", section = 1 } ] } let m4 = λ(v : List Natural) → prelude.makeGnuExe { name = "m4", version = v } ⫽ { configureCommand = λ(cfg : types.BuildVars) → [ prelude.patch '' diff --color -u lib/fflush.c lib/fflush.c --- lib/fflush.c 2016-12-31 07:54:41.000000000 -0600 +++ lib/fflush.c 2019-05-24 15:43:00.800903010 -0500 @@ -33,7 +33,7 @@ #undef fflush -#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */ static void @@ -72,7 +72,7 @@ #endif -#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) +#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ @@ -148,7 +148,7 @@ if (stream == NULL || ! freading (stream)) return fflush (stream); -#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ clear_ungetc_buffer_preserving_position (stream); diff --color -u lib/fpending.c lib/fpending.c --- lib/fpending.c 2016-12-31 07:54:41.000000000 -0600 +++ lib/fpending.c 2019-05-24 15:43:00.800903010 -0500 @@ -32,7 +32,7 @@ /* Most systems provide FILE as a struct and the necessary bitmask in , because they need it for implementing getc() and putc() as fast macros. */ -#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ return fp->_IO_write_ptr - fp->_IO_write_base; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ diff --color -u lib/fpurge.c lib/fpurge.c --- lib/fpurge.c 2016-12-31 07:54:41.000000000 -0600 +++ lib/fpurge.c 2019-05-24 15:43:00.800903010 -0500 @@ -62,7 +62,7 @@ /* Most systems provide FILE as a struct and the necessary bitmask in , because they need it for implementing getc() and putc() as fast macros. */ -# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ fp->_IO_read_end = fp->_IO_read_ptr; fp->_IO_write_ptr = fp->_IO_write_base; /* Avoid memory leak when there is an active ungetc buffer. */ diff --color -u lib/freadahead.c lib/freadahead.c --- lib/freadahead.c 2016-12-31 07:54:41.000000000 -0600 +++ lib/freadahead.c 2019-05-24 15:43:00.800903010 -0500 @@ -25,7 +25,7 @@ size_t freadahead (FILE *fp) { -#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ if (fp->_IO_write_ptr > fp->_IO_write_base) return 0; return (fp->_IO_read_end - fp->_IO_read_ptr) diff --color -u lib/freading.c lib/freading.c --- lib/freading.c 2016-12-31 07:54:41.000000000 -0600 +++ lib/freading.c 2019-05-24 15:43:00.800903010 -0500 @@ -31,7 +31,7 @@ /* Most systems provide FILE as a struct and the necessary bitmask in , because they need it for implementing getc() and putc() as fast macros. */ -# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ return ((fp->_flags & _IO_NO_WRITES) != 0 || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 && fp->_IO_read_base != NULL)); diff --color -u lib/fseeko.c lib/fseeko.c --- lib/fseeko.c 2016-12-31 07:54:41.000000000 -0600 +++ lib/fseeko.c 2019-05-24 15:43:00.800903010 -0500 @@ -47,7 +47,7 @@ #endif /* These tests are based on fpurge.c. */ -#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ if (fp->_IO_read_end == fp->_IO_read_ptr && fp->_IO_write_ptr == fp->_IO_write_base && fp->_IO_save_base == NULL) @@ -123,7 +123,7 @@ return -1; } -#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ fp->_flags &= ~_IO_EOF_SEEN; fp->_offset = pos; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ Common subdirectories: lib/glthread and lib/glthread diff --color -u lib/stdio-impl.h lib/stdio-impl.h --- lib/stdio-impl.h 2016-12-31 07:54:42.000000000 -0600 +++ lib/stdio-impl.h 2019-05-24 15:43:10.885006876 -0500 @@ -138,3 +138,4 @@ # define _IOERR 0x10 #endif +#define _IO_IN_BACKUP 0x100 '' ] # prelude.defaultConfigure cfg , installCommand = prelude.installWithManpages [ { file = "share/man/man1/m4.1", section = 1 } ] , pkgBuildDeps = [ prelude.unbounded "patch" ] } let nginx = λ(v : List Natural) → prelude.simplePackage { name = "nginx", version = v } ⫽ { pkgUrl = "http://nginx.org/download/nginx-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "zlib", prelude.unbounded "pcre2" ] } let openssl = let opensslCfgVars = λ(cfg : types.BuildVars) → Some (prelude.mkCCVar cfg # prelude.configEnv ([] : List Text) cfg) let cfgOS = λ(os : types.OS) → merge { FreeBSD = "BSD-x86_64" , OpenBSD = "BSD-x86_64" , NetBSD = "BSD-x86_64" , Solaris = "solaris64-x86_64-cc" , Dragonfly = "BSD-x86_64" , Linux = "linux-x86_64" , Darwin = "darwin64-x86_64-cc" , Windows = "mingw64" , Redox = "gcc" , Haiku = "haiku-x86_64" , IOS = "ios64-cross" , AIX = "aix64-cc" , Hurd = "hurd-x86" , Android = "android64-aarch64" , NoOs = "gcc" } os in λ(v : List Natural) → prelude.simplePackage { name = "openssl", version = v } ⫽ { pkgUrl = "https://www.openssl.org/source/openssl-${prelude.showVersion v}d.tar.gz" , configureCommand = λ(cfg : types.BuildVars) → let sharedFlag = if cfg.static then "no-shared" else "shared" let targetMakefile = if cfg.isCross then "gcc" else cfgOS cfg.buildOS in [ prelude.call ( prelude.defaultCall ⫽ { program = "perl" , arguments = [ "./Configure" , "--prefix=${cfg.installDir}" , targetMakefile , sharedFlag ] , environment = opensslCfgVars cfg } ) ] , pkgSubdir = "openssl-${prelude.showVersion v}d" , pkgBuildDeps = [ prelude.unbounded "perl" ] } let libssh2 = λ(v : List Natural) → prelude.simplePackage { name = "libssh2", version = v } ⫽ { pkgUrl = "https://www.libssh2.org/download/libssh2-${prelude.showVersion v}.tar.gz" } let giflib = λ(v : List Natural) → prelude.simplePackage { name = "giflib", version = v } ⫽ { pkgUrl = "https://downloads.sourceforge.net/giflib/giflib-${prelude.showVersion v}.tar.bz2" } let emacs = λ(v : List Natural) → prelude.makeGnuExe { name = "emacs", version = v } ⫽ { pkgDeps = [ prelude.unbounded "giflib" , prelude.unbounded "libXaw" , prelude.unbounded "libpng" , prelude.unbounded "libjpeg-turbo" , prelude.unbounded "ncurses" , prelude.unbounded "gtk3" , prelude.unbounded "libotf" , prelude.unbounded "m17n-lib" , prelude.unbounded "gnutls" , prelude.unbounded "libXft" , prelude.unbounded "dbus" , prelude.unbounded "cairo" ] , configureCommand = prelude.configureMkExesExtraFlags { bins = [ "build-aux/move-if-change", "build-aux/update-subdirs" ] , extraFlags = [ "--with-tiff=no" , "--with-libotf" , "--with-m17n-flt" , "--with-gnutls" , "--with-xft" , "--with-dbus" , "--with-cairo=yes" ] } , installCommand = λ(cfg : types.BuildVars) → if cfg.static then prelude.installWithBinaries [ "bin/emacs" ] cfg else prelude.installWithWrappers [ "emacs" ] cfg } let which = λ(v : List Natural) → prelude.makeGnuExe { name = "which", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/which/which-${prelude.showVersion v}.tar.gz" } let automake = λ(v : List Natural) → prelude.makeGnuExe { name = "automake", version = v } ⫽ { pkgBuildDeps = [ prelude.lowerBound { name = "autoconf", lower = [ 2, 65 ] } ] , installCommand = prelude.installWithBinaries [ "bin/automake", "bin/aclocal" ] } let autoconf = λ(v : List Natural) → prelude.makeGnuExe { name = "autoconf", version = v } ⫽ { pkgBuildDeps = [ prelude.lowerBound { name = "m4", lower = [ 1, 4, 16 ] } ] , installCommand = prelude.installWithBinaries [ "bin/autoconf" , "bin/autoheader" , "bin/autom4te" , "bin/autoreconf" ] } let python = λ(v : List Natural) → let major = merge { Some = Natural/show, None = "" } (List/head Natural v) let versionString = prelude.showVersion v let pyEnv = λ(_ : List Text) → λ(cfg : types.BuildVars) → Some ( prelude.configEnv ([] : List Text) cfg # [ { var = "CONFIG_SITE", value = "config.site" } ] ) in prelude.simplePackage { name = "python${major}", version = v } ⫽ { pkgUrl = "https://www.python.org/ftp/python/${versionString}/Python-${versionString}.tar.xz" , pkgSubdir = "Python-${versionString}" , configureCommand = λ(cfg : types.BuildVars) → let config = '' ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no '' let staticFlag = if cfg.static then [] : List Text else [ "--enable-shared" ] let crossArgs = if cfg.isCross then [ "--disable-ipv6" ] else [] : List Text in [ prelude.writeFile { file = "config.site", contents = config } ] # prelude.generalConfigure pyEnv "configure" ([] : List Text) ( [ "--build=${prelude.printArch cfg.buildArch}" ] # crossArgs # staticFlag ) cfg , pkgDeps = [ prelude.unbounded "libffi", prelude.unbounded "ncurses" ] , installCommand = λ(cfg : types.BuildVars) → prelude.installWithBinaries [ "bin/python${major}" ] cfg # prelude.symlinkManpages [ { file = "share/man/man1/python${major}.1" , section = 1 } ] } let lua = λ(v : List Natural) → let printLuaOS = λ(os : types.OS) → merge { FreeBSD = "freebsd" , OpenBSD = "bsd" , NetBSD = "bsd" , Solaris = "solaris" , Dragonfly = "bsd" , Linux = "linux" , Darwin = "macosx" , Windows = "mingw" , Redox = "generic" , Haiku = "generic" , IOS = "generic" , AIX = "generic" , Hurd = "generic" , Android = "generic" , NoOs = "c89" } os let luaBuild = λ(cfg : types.BuildVars) → let cc = prelude.mkCCArg cfg let ldflags = (prelude.mkLDFlags cfg.linkDirs cfg).value let cflags = (prelude.mkCFlags cfg).value let os = prelude.osCfg cfg in [ prelude.call ( prelude.defaultCall ⫽ { program = "make" , arguments = cc # [ printLuaOS os , "MYLDFLAGS=${ldflags}" , "MYCFLAGS=${cflags}" , "MYLIBS=-lncurses" , "-j${Natural/show cfg.cpus}" ] } ) ] let luaInstall = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "make" , arguments = [ "install", "INSTALL_TOP=${cfg.installDir}" ] } ) ] # prelude.symlinkBinaries [ "bin/lua", "bin/luac" ] in prelude.simplePackage { name = "lua", version = v } ⫽ { pkgUrl = "http://www.lua.org/ftp/lua-${prelude.showVersion v}.tar.gz" , configureCommand = prelude.doNothing , buildCommand = luaBuild , installCommand = luaInstall , pkgDeps = [ prelude.unbounded "readline", prelude.unbounded "ncurses" ] } let libtasn1 = λ(v : List Natural) → prelude.simplePackage { name = "libtasn1", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/libtasn1/libtasn1-${prelude.showVersion v}.tar.gz" } let p11kit = λ(v : List Natural) → prelude.simplePackage { name = "p11-kit", version = v } ⫽ { pkgUrl = "https://github.com/p11-glue/p11-kit/releases/download/${prelude.showVersion v}/p11-kit-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.lowerBound { name = "libffi", lower = [ 3, 0, 0 ] } , prelude.unbounded "libtasn1" ] , pkgBuildDeps = [ prelude.unbounded "pkg-config" ] } let libffi = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libffi", version = v } ⫽ { pkgUrl = "https://github.com/libffi/libffi/releases/download/v${versionString}/libffi-${versionString}.tar.gz" } let gdb = λ(v : List Natural) → prelude.makeGnuExe { name = "gdb", version = v } ⫽ { pkgBuildDeps = [ prelude.unbounded "texinfo" ] } let libtool = λ(v : List Natural) → prelude.makeGnuExe { name = "libtool", version = v } ⫽ { pkgUrl = "https://ftp.wayne.edu/gnu/libtool/libtool-${prelude.showVersion v}.tar.xz" , pkgBuildDeps = [ prelude.lowerBound { name = "m4", lower = [ 1, 4, 16 ] } ] } let pkg-config = λ(v : List Natural) → prelude.simplePackage { name = "pkg-config", version = v } ⫽ { pkgUrl = "https://pkg-config.freedesktop.org/releases/pkg-config-${prelude.showVersion v}.tar.gz" , configureCommand = prelude.configureWithFlags [ "--with-internal-glib" ] } let qrencode = λ(v : List Natural) → prelude.simplePackage { name = "qrencode", version = v } ⫽ { pkgUrl = "https://fukuchi.org/works/qrencode/qrencode-${prelude.showVersion v}.tar.gz" , configureCommand = prelude.configureWithFlags [ "--without-tools" ] } let readline = λ(v : List Natural) → prelude.simplePackage { name = "readline", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/readline/readline-${prelude.showVersion v}.tar.gz" } let pixman = λ(v : List Natural) → prelude.simplePackage { name = "pixman", version = v } ⫽ { pkgUrl = "https://www.cairographics.org/releases/pixman-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "libpng" ] } let freetype-shared = λ(x : { name : Text, version : List Natural }) → let versionString = prelude.showVersion x.version in prelude.simplePackage x ⫽ { pkgUrl = "https://download.savannah.gnu.org/releases/freetype/freetype-${versionString}.tar.gz" , pkgSubdir = "freetype-${versionString}" , pkgBuildDeps = [ prelude.unbounded "sed" ] , installCommand = λ(cfg : types.BuildVars) → prelude.defaultInstall cfg # [ prelude.symlink "include/freetype2/ft2build.h" "include/ft2build.h" , prelude.symlink "include/freetype2/freetype" "include/freetype" ] } let freetype-prebuild = λ(v : List Natural) → freetype-shared { name = "freetype-prebuild", version = v } ⫽ { pkgDeps = [ prelude.unbounded "zlib", prelude.unbounded "libpng" ] , pkgBuildDeps = [ prelude.unbounded "pkg-config" ] } let freetype = λ(v : List Natural) → freetype-shared { name = "freetype", version = v } ⫽ { pkgDeps = [ prelude.unbounded "zlib" , prelude.unbounded "harfbuzz" , prelude.unbounded "libpng" ] , configureCommand = prelude.configureMkExesExtraFlags { bins = [ "builds/unix/configure" ] , extraFlags = [ "--enable-freetype-config" ] } } let sdl2 = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "sdl2", version = v } ⫽ { pkgUrl = "https://www.libsdl.org/release/SDL2-${versionString}.tar.gz" , pkgSubdir = "SDL2-${versionString}" } let imageMagick = λ(v : List Natural) → let versionString = prelude.showVersion v let major = merge { Some = Natural/show, None = "" } (List/head Natural v) in prelude.simplePackage { name = "imagemagick", version = v } ⫽ { pkgUrl = "https://imagemagick.org/download/ImageMagick-${versionString}-67.tar.xz" , pkgSubdir = "ImageMagick-${versionString}-67" , pkgDeps = [ prelude.unbounded "zlib" , prelude.unbounded "libtool" , prelude.unbounded "bzip2" , prelude.unbounded "glib" ] , installCommand = λ(cfg : types.BuildVars) → prelude.defaultInstall cfg # [ prelude.symlink "include/ImageMagick-${major}/MagickWand" "include/wand" , prelude.symlinkBinary "bin/convert" ] } let gtk2 = let gtkEnv = λ(cfg : types.BuildVars) → prelude.defaultPath cfg # [ { var = "LDFLAGS" , value = (prelude.mkLDFlags cfg.linkDirs cfg).value ++ " -lpcre -lfribidi" } , prelude.mkCFlags cfg , prelude.mkPkgConfigVar cfg.linkDirs , prelude.libPath cfg , prelude.mkLDRunPath cfg.linkDirs , prelude.mkXdgDataDirs cfg.shareDirs , prelude.mkLDPreload cfg.preloadLibs ] let gtkConfig = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "./configure" , arguments = [ "--prefix=${cfg.installDir}" ] , environment = Some (gtkEnv cfg) } ) ] in λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.simplePackage { name = "gtk2", version = prelude.fullVersion x } ⫽ { pkgUrl = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${versionString}/gtk+-${fullVersion}.tar.xz" , pkgSubdir = "gtk+-${fullVersion}" , pkgDeps = [ prelude.lowerBound { name = "cairo", lower = [ 1, 6 ] } , prelude.lowerBound { name = "pango", lower = [ 1, 20 ] } , prelude.lowerBound { name = "atk", lower = [ 1, 29, 2 ] } , prelude.lowerBound { name = "glib", lower = [ 2, 28, 0 ] } , prelude.lowerBound { name = "gdk-pixbuf", lower = [ 2, 38, 0 ] } ] , buildCommand = λ(cfg : types.BuildVars) → prelude.buildWith (gtkEnv cfg) cfg , configureCommand = gtkConfig , installCommand = λ(cfg : types.BuildVars) → prelude.defaultInstall cfg # [ prelude.symlink "include/gdk-pixbuf-2.0/gdk-pixbuf" "include/gdk-pixbuf" ] } let mkXProto = λ(name : Text) → λ(v : List Natural) → prelude.simplePackage { name, version = v } ⫽ { pkgUrl = "https://www.x.org/releases/individual/proto/${name}-${prelude.showVersion v}.tar.bz2" } let mkXProtoWithPatch = λ(name : Text) → λ(patch : Text) → λ(v : List Natural) → mkXProto name v ⫽ { configureCommand = prelude.configureWithPatch patch , pkgBuildDeps = [ prelude.unbounded "patch" ] } let xproto = mkXProtoWithPatch "xproto" '' --- config.sub 2019-04-27 16:40:36.266089495 -0500 +++ config.sub 2019-04-27 16:41:44.593275058 -0500 @@ -240,7 +240,7 @@ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | arc | aarch64 | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ '' let renderproto = mkXProtoWithPatch "renderproto" '' --- config.sub 2010-08-10 09:11:53.000000000 -0500 +++ config.sub.new 2019-04-27 17:18:57.730988579 -0500 @@ -248,7 +248,7 @@ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | arc | aarch64 | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ '' let randrproto = mkXProto "randrproto" let scrnsaverproto = mkXProtoWithPatch "scrnsaverproto" '' --- config.sub 2012-03-22 22:49:47.000000000 -0500 +++ config.sub 2019-04-28 04:52:47.247723846 -0500 @@ -250,7 +250,7 @@ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | arc | aarch64 | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ '' let recordproto = mkXProto "recordproto" let xf86vidmodeproto = mkXProto "xf86vidmodeproto" let glproto = mkXProto "glproto" let dri2proto = mkXProto "dri2proto" let pango = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch let pangoCfgFile = '' option('enable_docs', description: 'Build API reference for Pango using GTK-Doc', type: 'boolean', value: false) option('gir', description: 'Build the GObject introspection data for Pango', type: 'boolean', value: false) '' let no_gir = λ(cfg : types.BuildVars) → if cfg.isCross then [ prelude.writeFile { file = "meson_options.txt" , contents = pangoCfgFile } ] else [] : List types.Command in prelude.simplePackage { name = "pango", version = prelude.fullVersion x } ⫽ { pkgUrl = "http://ftp.gnome.org/pub/GNOME/sources/pango/${versionString}/pango-${fullVersion}.tar.xz" , configureCommand = λ(cfg : types.BuildVars) → no_gir cfg # prelude.mesonConfigure cfg , buildCommand = prelude.ninjaBuild , installCommand = λ(cfg : types.BuildVars) → prelude.ninjaInstallWithPkgConfig ( prelude.mesonMoves [ "pango.pc", "pangocairo.pc", "pangoft2.pc" ] ) cfg # [ prelude.symlink "include/pango-1.0/pango" "include/pango" ] , pkgBuildDeps = [ prelude.lowerBound { name = "meson", lower = [ 0, 48, 0 ] } , prelude.unbounded "gobject-introspection" ] , pkgDeps = [ prelude.lowerBound { name = "fontconfig", lower = [ 2, 11, 91 ] } , prelude.lowerBound { name = "cairo", lower = [ 1, 12, 10 ] } , prelude.lowerBound { name = "fribidi", lower = [ 0, 19, 7 ] } , prelude.lowerBound { name = "harfbuzz", lower = [ 1, 4, 2 ] } , prelude.unbounded "libXrender" , prelude.unbounded "libxcb" ] } let libxml2 = λ(v : List Natural) → prelude.simplePackage { name = "libxml2", version = v } ⫽ { pkgUrl = "http://xmlsoft.org/sources/libxml2-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "zlib" , prelude.unbounded "xz" , prelude.unbounded "python2" ] } let shared-mime-info = λ(v : List Natural) → prelude.simplePackage { name = "shared-mime-info", version = v } ⫽ { pkgUrl = "http://freedesktop.org/~hadess/shared-mime-info-${prelude.showVersion v}.tar.xz" , buildCommand = λ(cfg : types.BuildVars) → prelude.generalBuild prelude.singleThreaded (prelude.buildEnv cfg) cfg , installCommand = λ(cfg : types.BuildVars) → prelude.defaultInstall cfg # [ prelude.symlink "share/pkgconfig" "lib/pkgconfig" ] , pkgDeps = [ prelude.unbounded "glib", prelude.unbounded "libxml2" ] , pkgBuildDeps = [ prelude.lowerBound { name = "intltool", lower = [ 0, 35, 0 ] } , prelude.unbounded "sed" , prelude.unbounded "gettext" ] } let intltool = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "intltool", version = v } ⫽ { pkgUrl = "https://launchpad.net/intltool/trunk/${versionString}/+download/intltool-${versionString}.tar.gz" , configureCommand = λ(cfg : types.BuildVars) → [ prelude.patch '' --- intltool-update.in 2015-03-08 20:39:54.000000000 -0500 +++ intltool-update.in 2019-06-19 20:58:02.349782444 -0500 @@ -1062,13 +1062,13 @@ } } - if ($str =~ /^(.*)\''${?([A-Z_]+)}?(.*)$/) + if ($str =~ /^(.*)\$\{?([A-Z_]+)}?(.*)$/) { my $rest = $3; my $untouched = $1; my $sub = ""; # Ignore recursive definitions of variables - $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\''${?$2}?/; + $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\$\{?$2}?/; return SubstituteVariable ("$untouched$sub$rest"); } @@ -1190,10 +1190,10 @@ $name =~ s/\(+$//g; $version =~ s/\(+$//g; - $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\''${?AC_PACKAGE_NAME}?/); - $varhash{"PACKAGE"} = $name if (not $name =~ /\''${?PACKAGE}?/); - $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\''${?AC_PACKAGE_VERSION}?/); - $varhash{"VERSION"} = $version if (not $name =~ /\''${?VERSION}?/); + $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/); + $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/); + $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/); + $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/); } if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)[,]?([^,\)]+)?/m) @@ -1219,11 +1219,11 @@ $version =~ s/\(+$//g; $bugurl =~ s/\(+$//g if (defined $bugurl); - $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\''${?AC_PACKAGE_NAME}?/); - $varhash{"PACKAGE"} = $name if (not $name =~ /\''${?PACKAGE}?/); - $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\''${?AC_PACKAGE_VERSION}?/); - $varhash{"VERSION"} = $version if (not $name =~ /\''${?VERSION}?/); - $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\''${?\w+}?/); + $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/); + $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/); + $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/); + $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/); + $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\$\{?\w+}?/); } # \s makes this not work, why? '' , prelude.call ( prelude.defaultCall ⫽ { program = "./configure" , arguments = [ "--prefix=${cfg.installDir}" ] , environment = Some ( prelude.defaultPath cfg # [ prelude.mkPerlLib { libDirs = cfg.linkDirs , perlVersion = [ 5, 30, 1 ] , cfg } ] ) } ) ] , pkgDeps = [ prelude.unbounded "XML-Parser" ] , pkgBuildDeps = [ prelude.lowerBound { name = "perl", lower = [ 5, 8, 1 ] } ] } let gdk-pixbuf = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch let gdkInstall = λ(fs : List { src : Text, dest : Text }) → λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "ninja" , environment = Some [ prelude.mkPkgConfigVar cfg.linkDirs , { var = "PATH" , value = prelude.mkPathVar cfg.binDirs ++ ":${cfg.currentDir}/gdk-pixbuf-${fullVersion}/build/gdk-pixbuf:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" } , prelude.mkPy3Path cfg.linkDirs , prelude.libPath cfg , prelude.mkLDRunPath cfg.linkDirs , prelude.mkLDFlags cfg.linkDirs cfg , prelude.mkCFlags cfg ] , arguments = [ "install" ] , procDir = Some "build" } ) , prelude.symlink "include/gdk-pixbuf-2.0/gdk-pixbuf" "include/gdk-pixbuf" ] # prelude.copyFiles fs in prelude.simplePackage { name = "gdk-pixbuf", version = prelude.fullVersion x } ⫽ { pkgUrl = "http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/${versionString}/gdk-pixbuf-${fullVersion}.tar.xz" , configureCommand = prelude.mesonConfigure , buildCommand = prelude.ninjaBuild , installCommand = gdkInstall (prelude.mesonMoves [ "gdk-pixbuf-2.0.pc" ]) , pkgDeps = [ prelude.unbounded "glib" , prelude.unbounded "libjpeg-turbo" , prelude.unbounded "libpng" , prelude.unbounded "gobject-introspection" , prelude.unbounded "shared-mime-info" , prelude.unbounded "libX11" ] } let xmlParser = λ(v : List Natural) → prelude.simplePackage { name = "XML-Parser", version = v } ⫽ { pkgUrl = "https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-${prelude.showVersion v}.tar.gz" , configureCommand = prelude.perlConfigure , pkgBuildDeps = [ prelude.unbounded "perl" ] , pkgDeps = [ prelude.unbounded "expat" ] } let meson = λ(v : List Natural) → prelude.simplePackage { name = "meson", version = v } ⫽ { pkgUrl = "https://github.com/mesonbuild/meson/archive/${prelude.showVersion v}.tar.gz" , configureCommand = λ(cfg : types.BuildVars) → prelude.python3Install cfg # prelude.mkPy3Wrapper "meson" cfg , buildCommand = prelude.doNothing , installCommand = prelude.doNothing , pkgDeps = [ prelude.unbounded "python3" ] } let ninja = let ninjaConfigure = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "./configure.py" , arguments = [ "--bootstrap" ] } ) ] let ninjaInstall = λ(cfg : types.BuildVars) → [ prelude.copyFile "ninja" "bin/ninja" , prelude.symlinkBinary "bin/ninja" ] in λ(v : List Natural) → prelude.simplePackage { name = "ninja", version = v } ⫽ { pkgUrl = "https://github.com/ninja-build/ninja/archive/v${prelude.showVersion v}.tar.gz" , configureCommand = ninjaConfigure , buildCommand = prelude.doNothing , installCommand = ninjaInstall , pkgBuildDeps = [ prelude.unbounded "python2" ] } let fontconfig = λ(v : List Natural) → prelude.simplePackage { name = "fontconfig", version = v } ⫽ { pkgUrl = "https://www.freedesktop.org/software/fontconfig/release/fontconfig-${prelude.showVersion v}.tar.bz2" , pkgDeps = [ prelude.unbounded "freetype" , prelude.unbounded "expat" , prelude.unbounded "util-linux" ] , pkgBuildDeps = [ prelude.unbounded "gperf" ] } let util-linux = λ(x : { version : List Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString in prelude.simplePackage { name = "util-linux", version = x.version } ⫽ { pkgUrl = "https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v${versionString}/util-linux-${fullVersion}.tar.xz" , configureCommand = λ(cfg : types.BuildVars) → let crossFlags = if cfg.isCross then [ "--disable-pylibmount", "--without-tinfo" ] else [] : List Text in prelude.configureWithFlags ( [ "--disable-makeinstall-chown" , "--disable-bash-completion" ] # crossFlags ) cfg , pkgDeps = [ prelude.unbounded "ncurses", prelude.unbounded "pcre2" ] } let fribidi = λ(v : List Natural) → prelude.simplePackage { name = "fribidi", version = v } ⫽ { pkgUrl = "https://github.com/fribidi/fribidi/releases/download/v${prelude.showVersion v}/fribidi-${prelude.showVersion v}.tar.bz2" } let gobject-introspection = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.ninjaPackage { name = "gobject-introspection" , version = prelude.fullVersion x } ⫽ { pkgUrl = "https://download.gnome.org/sources/gobject-introspection/${versionString}/gobject-introspection-${fullVersion}.tar.xz" , pkgBuildDeps = [ prelude.unbounded "meson" , prelude.unbounded "m4" , prelude.unbounded "bison" , prelude.unbounded "flex" , prelude.unbounded "pkg-config" , prelude.unbounded "glibc" ] , pkgDeps = [ prelude.lowerBound { name = "glib", lower = [ 2, 58, 0 ] } ] , installCommand = λ(cfg : types.BuildVars) → [ prelude.mkExe "build/tools/g-ir-scanner" , prelude.copyFile "build/gobject-introspection-1.0.pc" "lib/pkgconfig/gobject-introspection-1.0.pc" ] # prelude.ninjaInstall cfg } let flex = λ(v : List Natural) → let versionString = prelude.showVersion v let flexEnv = λ(_ : List Text) → λ(cfg : types.BuildVars) → Some ( prelude.configEnv ([] : List Text) cfg # [ { var = "YFLAGS", value = "-Wno-error=yacc" } ] ) in prelude.simplePackage { name = "flex", version = v } ⫽ { pkgUrl = "https://github.com/westes/flex/releases/download/v${versionString}/flex-${versionString}.tar.gz" , pkgBuildDeps = [ prelude.unbounded "m4", prelude.unbounded "bison" ] , configureCommand = prelude.configWithEnv flexEnv , installCommand = prelude.installWithBinaries [ "bin/flex" ] } let glib = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch let glibConfigure = λ(cfg : types.BuildVars) → let crossArgs = if cfg.isCross then [ "--cross-file", "cross.txt" ] else [] : List Text in [ prelude.createDir "build" , prelude.writeFile { file = "build/cross.txt" , contents = prelude.mesonCfgFile cfg } , prelude.call { program = "meson" , arguments = [ "--prefix=${cfg.installDir}" , ".." , "-Dselinux=disabled" ] # crossArgs , environment = Some ( [ prelude.mkPkgConfigVar cfg.linkDirs , { var = "LDFLAGS" , value = (prelude.mkLDFlags cfg.linkDirs cfg).value } , prelude.mkPy3Path cfg.linkDirs , prelude.libPath cfg , prelude.mkCFlags cfg , prelude.mkPkgConfigVar cfg.linkDirs ] # prelude.defaultPath cfg ) , procDir = Some "build" } ] let symlinkGio = λ(h : Text) → prelude.symlink "include/glib-2.0/gio/${h}" "include/gio/${h}" let symlinkGunix = λ(h : Text) → prelude.symlink "include/gio-unix-2.0/gio/${h}" "include/gio/${h}" in prelude.simplePackage { name = "glib", version = prelude.fullVersion x } ⫽ { pkgUrl = "http://ftp.gnome.org/pub/gnome/sources/glib/${versionString}/glib-${fullVersion}.tar.xz" , configureCommand = glibConfigure , buildCommand = λ(cfg : types.BuildVars) → prelude.ninjaBuild cfg # prelude.mkExes [ "build/gobject/glib-mkenums" , "build/gobject/glib-genmarshal" , "build/gio/gdbus-2.0/codegen/gdbus-codegen" ] , installCommand = λ(cfg : types.BuildVars) → prelude.ninjaInstallWithPkgConfig ( prelude.mesonMoves [ "glib-2.0.pc" , "gobject-2.0.pc" , "gio-2.0.pc" , "gio-unix-2.0.pc" , "gmodule-no-export-2.0.pc" , "gmodule-export-2.0.pc" , "gmodule-2.0.pc" , "gthread-2.0.pc" ] ) cfg # [ prelude.symlink "include/glib-2.0/glib" "include/glib" , prelude.symlink "include/glib-2.0/gobject" "include/gobject" , prelude.symlink "include/glib-2.0/glib.h" "include/glib.h" , prelude.symlink "include/glib-2.0/glib-object.h" "include/glib-object.h" , prelude.symlink "include/glib-2.0/glib-unix.h" "include/glib-unix.h" , prelude.symlink "include/glib-2.0/gmodule.h" "include/gmodule.h" , symlinkGio "gaction.h" , symlinkGio "gactiongroup.h" , symlinkGio "gactiongroupexporter.h" , symlinkGio "gactionmap.h" , symlinkGio "gappinfo.h" , symlinkGio "gapplication.h" , symlinkGio "gapplicationcommandline.h" , symlinkGio "gasyncinitable.h" , symlinkGio "gasyncresult.h" , symlinkGio "gbufferedinputstream.h" , symlinkGio "gbufferedoutputstream.h" , symlinkGio "gbytesicon.h" , symlinkGio "gcancellable.h" , symlinkGio "gcharsetconverter.h" , symlinkGio "gcontenttype.h" , symlinkGio "gconverter.h" , symlinkGio "gconverterinputstream.h" , symlinkGio "gconverteroutputstream.h" , symlinkGio "gcredentials.h" , symlinkGio "gdatagrambased.h" , symlinkGio "gdatainputstream.h" , symlinkGio "gdataoutputstream.h" , symlinkGio "gdbusactiongroup.h" , symlinkGio "gdbusaddress.h" , symlinkGio "gdbusauthobserver.h" , symlinkGio "gdbusconnection.h" , symlinkGio "gdbuserror.h" , symlinkGio "gdbusinterface.h" , symlinkGio "gdbusinterfaceskeleton.h" , symlinkGio "gdbusintrospection.h" , symlinkGio "gdbusmenumodel.h" , symlinkGio "gdbusmessage.h" , symlinkGio "gdbusmethodinvocation.h" , symlinkGio "gdbusnameowning.h" , symlinkGio "gdbusnamewatching.h" , symlinkGio "gdbusobject.h" , symlinkGio "gdbusobjectmanager.h" , symlinkGio "gdbusobjectmanagerclient.h" , symlinkGio "gdbusobjectmanagerserver.h" , symlinkGio "gdbusobjectproxy.h" , symlinkGio "gdbusobjectskeleton.h" , symlinkGio "gdbusproxy.h" , symlinkGio "gdbusserver.h" , symlinkGio "gdbusutils.h" , symlinkGio "gdrive.h" , symlinkGio "gdtlsclientconnection.h" , symlinkGio "gdtlsconnection.h" , symlinkGio "gdtlsserverconnection.h" , symlinkGio "gemblem.h" , symlinkGio "gemblemedicon.h" , symlinkGio "gfile.h" , symlinkGio "gfileattribute.h" , symlinkGio "gfileenumerator.h" , symlinkGio "gfileicon.h" , symlinkGio "gfileinfo.h" , symlinkGio "gfileinputstream.h" , symlinkGio "gfileiostream.h" , symlinkGio "gfilemonitor.h" , symlinkGio "gfilenamecompleter.h" , symlinkGio "gfileoutputstream.h" , symlinkGio "gfilterinputstream.h" , symlinkGio "gfilteroutputstream.h" , symlinkGio "gicon.h" , symlinkGio "ginetaddress.h" , symlinkGio "ginetaddressmask.h" , symlinkGio "ginetsocketaddress.h" , symlinkGio "ginitable.h" , symlinkGio "ginputstream.h" , symlinkGio "gio-autocleanups.h" , symlinkGio "gio.h" , symlinkGio "gioenums.h" , symlinkGio "gioenumtypes.h" , symlinkGio "gioerror.h" , symlinkGio "giomodule.h" , symlinkGio "gioscheduler.h" , symlinkGio "giostream.h" , symlinkGio "giotypes.h" , symlinkGio "glistmodel.h" , symlinkGio "gliststore.h" , symlinkGio "gloadableicon.h" , symlinkGio "gmemoryinputstream.h" , symlinkGio "gmemoryoutputstream.h" , symlinkGio "gmenu.h" , symlinkGio "gmenuexporter.h" , symlinkGio "gmenumodel.h" , symlinkGio "gmount.h" , symlinkGio "gmountoperation.h" , symlinkGio "gnativevolumemonitor.h" , symlinkGio "gnetworkaddress.h" , symlinkGio "gnetworking.h" , symlinkGio "gnetworkmonitor.h" , symlinkGio "gnetworkservice.h" , symlinkGio "gnotification.h" , symlinkGio "goutputstream.h" , symlinkGio "gpermission.h" , symlinkGio "gpollableinputstream.h" , symlinkGio "gpollableoutputstream.h" , symlinkGio "gpollableutils.h" , symlinkGio "gpropertyaction.h" , symlinkGio "gproxy.h" , symlinkGio "gproxyaddress.h" , symlinkGio "gproxyaddressenumerator.h" , symlinkGio "gproxyresolver.h" , symlinkGio "gremoteactiongroup.h" , symlinkGio "gresolver.h" , symlinkGio "gresource.h" , symlinkGio "gseekable.h" , symlinkGio "gsettings.h" , symlinkGio "gsettingsbackend.h" , symlinkGio "gsettingsschema.h" , symlinkGio "gsimpleaction.h" , symlinkGio "gsimpleactiongroup.h" , symlinkGio "gsimpleasyncresult.h" , symlinkGio "gsimpleiostream.h" , symlinkGio "gsimplepermission.h" , symlinkGio "gsimpleproxyresolver.h" , symlinkGio "gsocket.h" , symlinkGio "gsocketaddress.h" , symlinkGio "gsocketaddressenumerator.h" , symlinkGio "gsocketclient.h" , symlinkGio "gsocketconnectable.h" , symlinkGio "gsocketconnection.h" , symlinkGio "gsocketcontrolmessage.h" , symlinkGio "gsocketlistener.h" , symlinkGio "gsocketservice.h" , symlinkGio "gsrvtarget.h" , symlinkGio "gsubprocess.h" , symlinkGio "gsubprocesslauncher.h" , symlinkGio "gtask.h" , symlinkGio "gtcpconnection.h" , symlinkGio "gtcpwrapperconnection.h" , symlinkGio "gtestdbus.h" , symlinkGio "gthemedicon.h" , symlinkGio "gthreadedsocketservice.h" , symlinkGio "gtlsbackend.h" , symlinkGio "gtlscertificate.h" , symlinkGio "gtlsclientconnection.h" , symlinkGio "gtlsconnection.h" , symlinkGio "gtlsdatabase.h" , symlinkGio "gtlsfiledatabase.h" , symlinkGio "gtlsinteraction.h" , symlinkGio "gtlspassword.h" , symlinkGio "gtlsserverconnection.h" , symlinkGio "gvfs.h" , symlinkGio "gvolume.h" , symlinkGio "gvolumemonitor.h" , symlinkGio "gzlibcompressor.h" , symlinkGio "gzlibdecompressor.h" , symlinkGunix "gdesktopappinfo.h" , symlinkGunix "gfiledescriptorbased.h" , symlinkGunix "gunixconnection.h" , symlinkGunix "gunixcredentialsmessage.h" , symlinkGunix "gunixfdlist.h" , symlinkGunix "gunixfdmessage.h" , symlinkGunix "gunixinputstream.h" , symlinkGunix "gunixmounts.h" , symlinkGunix "gunixoutputstream.h" , symlinkGunix "gunixsocketaddress.h" ] , pkgBuildDeps = [ prelude.unbounded "meson", prelude.unbounded "ninja" ] , pkgDeps = [ prelude.unbounded "util-linux" , prelude.unbounded "pcre" , prelude.unbounded "libffi" , prelude.unbounded "zlib" , prelude.unbounded "dbus" ] } let atk = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.ninjaPackage { name = "atk", version = prelude.fullVersion x } ⫽ { pkgUrl = "https://ftp.gnome.org/pub/gnome/sources/atk/${versionString}/atk-${fullVersion}.tar.xz" , pkgBuildDeps = [ prelude.unbounded "gobject-introspection" , prelude.unbounded "gettext" ] , pkgDeps = [ prelude.unbounded "glib" ] , installCommand = prelude.ninjaInstallWithPkgConfig [ { src = "build/meson-private/atk.pc" , dest = "lib/pkgconfig/atk.pc" } ] } let re2c = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "re2c", version = v } ⫽ { pkgUrl = "https://github.com/skvadrik/re2c/releases/download/${versionString}/re2c-${versionString}.tar.gz" } let chickenScheme = λ(v : List Natural) → let versionString = prelude.showVersion v let printChickenOS = λ(os : types.OS) → merge { FreeBSD = "bsd" , OpenBSD = "bsd" , NetBSD = "bsd" , Solaris = "solaris" , Dragonfly = "bsd" , Linux = "linux" , Darwin = "macosx" , Windows = "mingw" , Haiku = "haiku" , IOS = "ios" , AIX = "aix" , Hurd = "hurd" , Android = "android" , Redox = "error: no port for Redox OS" , NoOs = "error: no port for no OS" } os let chickenBuild = λ(cfg : types.BuildVars) → let cc = merge { Some = λ(tgt : types.TargetTriple) → [ "C_COMPILER=${prelude.printTargetTriple tgt}-gcc" ] , None = [] : List Text } cfg.targetTriple let os = prelude.osCfg cfg in [ prelude.call ( prelude.defaultCall ⫽ { program = prelude.makeExe cfg.buildOS , arguments = cc # [ "PLATFORM=${printChickenOS os}" , "PREFIX=${cfg.installDir}" ] } ) , prelude.call ( prelude.defaultCall ⫽ { program = prelude.makeExe cfg.buildOS , arguments = cc # [ "PLATFORM=${printChickenOS os}" , "PREFIX=${cfg.installDir}" , "install" ] } ) ] # prelude.symlinkBinaries [ "bin/csc", "bin/chicken-install", "bin/csi" ] in prelude.simplePackage { name = "chicken-scheme", version = v } ⫽ { pkgUrl = "https://code.call-cc.org/releases/${versionString}/chicken-${versionString}.tar.gz" , configureCommand = prelude.doNothing , buildCommand = chickenBuild , installCommand = prelude.doNothing , pkgSubdir = "chicken-${versionString}" } let xcb-proto = λ(v : List Natural) → prelude.simplePackage { name = "xcb-proto", version = v } ⫽ { pkgUrl = "https://xorg.freedesktop.org/archive/individual/xcb/xcb-proto-${prelude.showVersion v}.tar.bz2" } let libxcb = λ(v : List Natural) → prelude.simplePackage { name = "libxcb", version = v } ⫽ { pkgUrl = "https://xorg.freedesktop.org/archive/individual/xcb/libxcb-${prelude.showVersion v}.tar.bz2" , pkgDeps = [ prelude.lowerBound { name = "xcb-proto", lower = [ 1, 13 ] } , prelude.unbounded "libXau" , prelude.unbounded "libpthread-stubs" , prelude.unbounded "libXdmcp" ] } let libpthread-stubs = λ(v : List Natural) → prelude.simplePackage { name = "libpthread-stubs", version = v } ⫽ { pkgUrl = "https://www.x.org/archive/individual/xcb/libpthread-stubs-${prelude.showVersion v}.tar.bz2" } let xorgConfigure = prelude.configureWithFlags [ "--disable-malloc0returnsnull" ] let mkXLib = λ(name : Text) → λ(v : List Natural) → prelude.simplePackage { name, version = v } ⫽ { pkgUrl = "https://www.x.org/releases/individual/lib/${name}-${prelude.showVersion v}.tar.bz2" , configureCommand = xorgConfigure , pkgBuildDeps = [ prelude.unbounded "pkg-config" ] } let mkXLibDeps = λ(x : { name : Text, deps : List types.Dep }) → λ(v : List Natural) → mkXLib x.name v ⫽ { pkgDeps = x.deps } let libXdmcp = mkXLibDeps { name = "libXdmcp", deps = [ prelude.unbounded "xproto" ] } let libXau = mkXLibDeps { name = "libXau", deps = [ prelude.unbounded "xproto" ] } let mkXUtil = λ(name : Text) → λ(v : List Natural) → prelude.simplePackage { name, version = v } ⫽ { pkgUrl = "https://www.x.org/releases/individual/util/${name}-${prelude.showVersion v}.tar.bz2" } let libXrender = mkXLibDeps { name = "libXrender" , deps = [ prelude.unbounded "xproto" , prelude.unbounded "renderproto" , prelude.unbounded "libX11" ] } let util-macros = mkXUtil "util-macros" let libXft = mkXLibDeps { name = "libXft" , deps = [ prelude.unbounded "freetype" , prelude.unbounded "fontconfig" , prelude.unbounded "libXrender" , prelude.unbounded "libX11" ] } let kbproto = mkXProto "kbproto" let libX11 = mkXLibDeps { name = "libX11" , deps = [ prelude.unbounded "libxcb" , prelude.unbounded "kbproto" , prelude.unbounded "xextproto" , prelude.unbounded "inputproto" , prelude.unbounded "xtrans" ] } let inputproto = mkXProto "inputproto" let xineramaproto = mkXProtoWithPatch "xineramaproto" '' --- config.sub 2009-10-01 05:35:23.000000000 -0500 +++ config.sub 2019-04-28 04:57:15.837809557 -0500 @@ -242,7 +242,7 @@ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | arc | aarch64 | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ '' let xtrans = mkXLib "xtrans" let libXrandr = mkXLibDeps { name = "libXrandr" , deps = [ prelude.unbounded "util-macros" , prelude.unbounded "libXext" , prelude.unbounded "libXrender" , prelude.unbounded "libX11" , prelude.unbounded "randrproto" ] } let libXinerama = mkXLibDeps { name = "libXinerama" , deps = [ prelude.unbounded "util-macros" , prelude.unbounded "libX11" , prelude.unbounded "libXext" , prelude.unbounded "xineramaproto" ] } let libXext = mkXLibDeps { name = "libXext" , deps = [ prelude.lowerBound { name = "xextproto", lower = [ 7, 1, 99 ] } , prelude.lowerBound { name = "xproto", lower = [ 7, 0, 13 ] } , prelude.lowerBound { name = "libX11", lower = [ 1, 6 ] } ] } let xextproto = mkXProtoWithPatch "xextproto" '' --- config.sub 2019-04-27 17:01:47.137694014 -0500 +++ config.sub 2019-04-27 17:02:05.329622757 -0500 @@ -249,7 +249,7 @@ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | arc | aarch64 | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ '' let fixesproto = mkXProto "fixesproto" let damageproto = mkXProto "damageproto" let libXScrnSaver = λ(v : List Natural) → mkXLib "libXScrnSaver" v ⫽ { pkgDeps = [ prelude.unbounded "util-macros" , prelude.unbounded "libXext" , prelude.unbounded "scrnsaverproto" ] } let bzip2 = let cc = prelude.mkCCArg in λ(v : List Natural) → let versionString = prelude.showVersion v let bzipInstall = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = prelude.makeExe cfg.buildOS , arguments = cc cfg # [ "PREFIX=${cfg.installDir}" , "install" , "-j${Natural/show cfg.cpus}" ] } ) , prelude.copyFile "libbz2.so.${versionString}" "lib/libbz2.so.${versionString}" , prelude.symlink "lib/libbz2.so.${versionString}" "lib/libbz2.so.1.0" , prelude.symlink "lib/libbz2.so.${versionString}" "lib/libbz2.so" , prelude.symlinkBinary "bin/bzip2" , prelude.symlinkBinary "bin/bzip2recover" ] let bzipShared = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = prelude.makeExe cfg.buildOS , arguments = cc cfg # [ "-f", "Makefile-libbz2_so" ] } ) ] in prelude.simplePackage { name = "bzip2", version = v } ⫽ { pkgUrl = "https://www.sourceware.org/pub/bzip2/bzip2-${versionString}.tar.gz" , configureCommand = prelude.doNothing , buildCommand = bzipShared , installCommand = bzipInstall } let expat = λ(v : List Natural) → prelude.simplePackage { name = "expat", version = v } ⫽ { pkgUrl = "https://github.com/libexpat/libexpat/releases/download/R_${prelude.underscoreVersion v}/expat-${prelude.showVersion v}.tar.bz2" } let gperf = λ(v : List Natural) → prelude.makeGnuExe { name = "gperf", version = v } ⫽ { pkgUrl = "http://ftp.gnu.org/pub/gnu/gperf/gperf-${prelude.showVersion v}.tar.gz" } let coreutils = λ(v : List Natural) → prelude.makeGnuExe { name = "coreutils", version = v } ⫽ { installCommand = prelude.installWithBinaries [ "bin/install" , "bin/chmod" , "bin/rm" , "bin/cp" , "bin/ln" , "bin/mkdir" , "bin/test" , "bin/od" , "bin/readlink" ] } let libsepol = let cc = prelude.mkCCArg let sepolInstall = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = prelude.makeExe cfg.buildOS , arguments = cc cfg # [ "PREFIX=${cfg.installDir}" , "SHLIBDIR=${cfg.installDir}/lib" , "CFLAGS=-Wno-error -O2" , "install" , "-j${Natural/show cfg.cpus}" ] , environment = Some ( prelude.defaultPath cfg # [ prelude.mkLDFlags cfg.linkDirs cfg , prelude.mkCFlags cfg , prelude.mkPkgConfigVar cfg.linkDirs ] ) } ) ] in λ(v : List Natural) → prelude.simplePackage { name = "libsepol", version = v } ⫽ { pkgUrl = "https://github.com/SELinuxProject/selinux/releases/download/20191204/libsepol-${prelude.showVersion v}.tar.gz" , configureCommand = prelude.doNothing , buildCommand = prelude.doNothing , installCommand = sepolInstall , pkgBuildDeps = [ prelude.unbounded "flex" ] } let libselinux = let cc = prelude.mkCCArg let selinuxInstall = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = prelude.makeExe cfg.buildOS , arguments = cc cfg # [ "PREFIX=${cfg.installDir}" , "SHLIBDIR=${cfg.installDir}/lib" , "EXTRA_CFLAGS=-Wno-error -lpcre " ++ (prelude.mkCFlags cfg).value , "install" , "-j${Natural/show cfg.cpus}" ] , environment = Some ( prelude.defaultPath cfg # [ prelude.mkLDFlags cfg.linkDirs cfg , prelude.mkCFlags cfg , prelude.mkPkgConfigVar cfg.linkDirs , prelude.libPath cfg ] ) } ) ] in λ(v : List Natural) → prelude.simplePackage { name = "libselinux", version = v } ⫽ { pkgUrl = "https://github.com/SELinuxProject/selinux/releases/download/20191204/libselinux-${prelude.showVersion v}.tar.gz" , configureCommand = prelude.doNothing , buildCommand = prelude.doNothing , installCommand = selinuxInstall , pkgDeps = [ prelude.unbounded "pcre", prelude.unbounded "libsepol" ] , pkgBuildDeps = [ prelude.unbounded "pkg-config" ] } let libXtst = mkXLibDeps { name = "libXtst" , deps = [ prelude.unbounded "libXi", prelude.unbounded "recordproto" ] } let libXi = mkXLibDeps { name = "libXi" , deps = [ prelude.unbounded "libXext", prelude.unbounded "libXfixes" ] } let mkGnomeNinja = λ(name : Text) → λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.ninjaPackage { name, version = prelude.fullVersion x } ⫽ { pkgUrl = "http://ftp.gnome.org/pub/gnome/sources/${name}/${versionString}/${name}-${fullVersion}.tar.xz" } let at-spi-core = λ(x : { version : List Natural, patch : Natural }) → mkGnomeNinja "at-spi2-core" x ⫽ { pkgDeps = [ prelude.unbounded "libXtst", prelude.unbounded "glib" ] , installCommand = prelude.ninjaInstallWithPkgConfig [ { src = "build/meson-private/atspi-2.pc" , dest = "lib/pkgconfig/atspi-2.pc" } ] } let at-spi-atk = λ(x : { version : List Natural, patch : Natural }) → mkGnomeNinja "at-spi2-atk" x ⫽ { pkgDeps = [ prelude.lowerBound { name = "at-spi2-core", lower = [ 2, 32, 2 ] } , prelude.lowerBound { name = "atk", lower = [ 2, 29, 2 ] } , prelude.unbounded "libxml2" ] , installCommand = prelude.ninjaInstallWithPkgConfig (prelude.mesonMoves [ "atk-bridge-2.0.pc" ]) } let libdrm = λ(v : List Natural) → prelude.ninjaPackage { name = "libdrm", version = v } ⫽ { pkgUrl = "https://dri.freedesktop.org/libdrm/libdrm-${prelude.showVersion v}.tar.bz2" , pkgDeps = [ prelude.unbounded "libpciaccess", prelude.unbounded "cairo" ] , installCommand = prelude.ninjaInstallWithPkgConfig ( prelude.mesonMoves [ "libdrm.pc" , "libdrm_amdgpu.pc" , "libdrm_intel.pc" , "libdrm_nouveau.pc" , "libdrm_radeon.pc" , "libkms.pc" ] ) } let libpciaccess = mkXLib "libpciaccess" let markupSafe = λ(v : List Natural) → prelude.python3Package { name = "MarkupSafe", version = v } ⫽ { pkgUrl = "https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-${prelude.showVersion v}.tar.gz" } let mako = λ(v : List Natural) → prelude.python3Package { name = "Mako", version = v } ⫽ { pkgUrl = "https://files.pythonhosted.org/packages/source/M/Mako/Mako-${prelude.showVersion v}.tar.gz" } let elfutils = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "elfutils", version = v } ⫽ { pkgUrl = "https://sourceware.org/ftp/elfutils/${versionString}/elfutils-${versionString}.tar.bz2" } let mkGnomeSimple = λ(name : Text) → λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.simplePackage { name, version = prelude.fullVersion x } ⫽ { pkgUrl = "http://ftp.gnome.org/pub/gnome/sources/${name}/${versionString}/${name}-${fullVersion}.tar.xz" } let gtk3 = let mkLDFlagsGtk = λ(linkDirs : List Text) → concatMapSep " " Text (λ(dir : Text) → "-L${dir}") linkDirs let gtkEnv = λ(cfg : types.BuildVars) → prelude.defaultPath cfg # [ { var = "LDFLAGS" , value = mkLDFlagsGtk cfg.linkDirs ++ " -lpcre -lfribidi" } , prelude.mkPkgConfigVar cfg.linkDirs , prelude.mkLDPreload cfg.preloadLibs , prelude.mkXdgDataDirs cfg.shareDirs , prelude.mkCFlags cfg ] let gtkConfig = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "./configure" , arguments = [ "--prefix=${cfg.installDir}" ] , environment = Some (gtkEnv cfg) } ) ] in λ(x : { version : List Natural, patch : Natural }) → mkGnomeSimple "gtk+" x ⫽ { pkgName = "gtk3" , configureCommand = gtkConfig , buildCommand = λ(cfg : types.BuildVars) → prelude.buildWith (gtkEnv cfg) cfg , pkgDeps = [ prelude.lowerBound { name = "pango", lower = [ 1, 41, 0 ] } , prelude.unbounded "at-spi2-atk" , prelude.lowerBound { name = "atk", lower = [ 2, 15, 1 ] } , prelude.lowerBound { name = "gdk-pixbuf", lower = [ 2, 30, 0 ] } , prelude.unbounded "libXft" , prelude.lowerBound { name = "libepoxy", lower = [ 1, 4 ] } , prelude.unbounded "libXi" ] , pkgBuildDeps = [ prelude.unbounded "binutils" ] } let graphviz = λ(v : List Natural) → prelude.simplePackage { name = "graphviz", version = v } ⫽ { pkgUrl = "https://graphviz.gitlab.io/pub/graphviz/stable/SOURCES/graphviz.tar.gz" , pkgDeps = [ prelude.unbounded "perl" ] , installCommand = prelude.installWithBinaries [ "bin/dot" ] } let wayland = λ(v : List Natural) → prelude.simplePackage { name = "wayland", version = v } ⫽ { pkgUrl = "https://wayland.freedesktop.org/releases/wayland-${prelude.showVersion v}.tar.xz" , pkgDeps = [ prelude.unbounded "libxml2" ] , configureCommand = prelude.configureWithFlags [ "--disable-documentation" ] } let swig = λ(v : List Natural) → prelude.simplePackage { name = "swig", version = v } ⫽ { pkgUrl = "https://downloads.sourceforge.net/swig/swig-${prelude.showVersion v}.tar.gz" , installCommand = prelude.installWithBinaries [ "bin/swig" ] } let lmdb = let cc = prelude.mkCCArg let ar = λ(cfg : types.BuildVars) → merge { Some = λ(tgt : types.TargetTriple) → [ "AR=${prelude.printTargetTriple tgt}-ar" ] , None = [] : List Text } cfg.targetTriple let lmdbInstall = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "make" , arguments = cc cfg # ar cfg # [ "prefix=${cfg.installDir}" , "install" , "-j${Natural/show cfg.cpus}" ] , procDir = Some "libraries/liblmdb" } ) ] in λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "lmdb", version = v } ⫽ { pkgUrl = "https://github.com/LMDB/lmdb/archive/LMDB_${versionString}.tar.gz" , pkgSubdir = "lmdb-LMDB_${versionString}" , configureCommand = prelude.doNothing , buildCommand = prelude.doNothing , installCommand = lmdbInstall } let gsl = λ(v : List Natural) → prelude.simplePackage { name = "gsl", version = v } ⫽ { pkgUrl = "http://mirror.keystealth.org/gnu/gsl/gsl-${prelude.showVersion v}.tar.gz" } let postgresql = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "postgresql", version = v } ⫽ { pkgUrl = "https://ftp.postgresql.org/pub/source/v${versionString}/postgresql-${versionString}.tar.bz2" , configureCommand = prelude.configureWithFlags [ "--without-readline" ] , installCommand = prelude.installWithBinaries [ "bin/pg_config" ] , pkgDeps = [ prelude.unbounded "zlib" ] } let sqlite = λ(x : { version : List Natural }) → prelude.simplePackage { name = "sqlite", version = x.version } ⫽ { pkgUrl = "https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz" , pkgSubdir = "sqlite-autoconf-3300100" } let ragel = λ(v : List Natural) → prelude.simplePackage { name = "ragel", version = v } ⫽ { pkgUrl = "http://www.colm.net/files/ragel/ragel-${prelude.showVersion v}.tar.gz" , installCommand = prelude.installWithBinaries [ "bin/ragel" ] } let nano = λ(v : List Natural) → prelude.makeGnuExe { name = "nano", version = v } ⫽ { pkgDeps = [ prelude.unbounded "ncurses" ] } let libarchive = λ(v : List Natural) → prelude.simplePackage { name = "libarchive", version = v } ⫽ { pkgUrl = "https://www.libarchive.org/downloads/libarchive-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "xz" , prelude.unbounded "bzip2" , prelude.unbounded "zlib" ] , installCommand = prelude.installWithBinaries [ "bin/bsdtar", "bin/bsdcpio" ] } let pygobject = λ(x : { version : List Natural, patch : Natural }) → mkGnomeSimple "pygobject" x ⫽ { pkgDeps = [ prelude.unbounded "glib" ] , configureCommand = prelude.preloadCfg } let pygtk = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in mkGnomeSimple "pygtk" x ⫽ { pkgUrl = "http://ftp.gnome.org/pub/gnome/sources/pygtk/${versionString}/pygtk-${fullVersion}.tar.bz2" , configureCommand = prelude.preloadCfg , pkgDeps = [ prelude.lowerBound { name = "glib", lower = [ 2, 8, 0 ] } , prelude.lowerBound { name = "pygobject", lower = [ 2, 21, 3 ] } , prelude.unbounded "python2" ] } let libglade = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.simplePackage { name = "libglade", version = prelude.fullVersion x } ⫽ { pkgUrl = "http://ftp.gnome.org/pub/gnome/sources/libglade/${versionString}/libglade-${fullVersion}.tar.bz2" , pkgDeps = [ prelude.lowerBound { name = "libxml2", lower = [ 2, 4, 10 ] } , prelude.lowerBound { name = "gtk2", lower = [ 2, 5, 0 ] } ] , configureCommand = prelude.configureLinkExtraLibs [ "fribidi" ] } let scour = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.python3Package { name = "scour", version = v } ⫽ { pkgUrl = "https://github.com/scour-project/scour/archive/v${versionString}/scour-${versionString}.tar.gz" , installCommand = prelude.installWithPy3Wrappers [ "scour" ] } let libXpm = λ(v : List Natural) → mkXLib "libXpm" v ⫽ { pkgDeps = [ prelude.unbounded "libXext", prelude.unbounded "libXt" ] , pkgBuildDeps = [ prelude.unbounded "gettext" ] } let libXt = mkXLibDeps { name = "libXt" , deps = [ prelude.unbounded "libICE" , prelude.unbounded "libSM" , prelude.unbounded "libX11" , prelude.unbounded "kbproto" ] } let libICE = mkXLibDeps { name = "libICE" , deps = [ prelude.unbounded "xproto", prelude.unbounded "xtrans" ] } let libSM = mkXLibDeps { name = "libSM" , deps = [ prelude.unbounded "libICE", prelude.unbounded "util-linux" ] } let libXaw = mkXLibDeps { name = "libXaw" , deps = [ prelude.unbounded "libXmu", prelude.unbounded "libXpm" ] } let libXaw3d = mkXLibDeps { name = "libXaw3d" , deps = [ prelude.unbounded "libX11" , prelude.unbounded "libXt" , prelude.unbounded "libXmu" , prelude.unbounded "libXext" ] } let libXmu = mkXLibDeps { name = "libXmu" , deps = [ prelude.unbounded "util-macros" , prelude.unbounded "libXt" , prelude.unbounded "libXext" ] } let libotf = λ(v : List Natural) → prelude.simplePackage { name = "libotf", version = v } ⫽ { pkgUrl = "http://download.savannah.gnu.org/releases/m17n/libotf-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "freetype" ] } let m17n = λ(v : List Natural) → prelude.simplePackage { name = "m17n-lib", version = v } ⫽ { pkgUrl = "http://download.savannah.gnu.org/releases/m17n/m17n-lib-${prelude.showVersion v}.tar.gz" , buildCommand = λ(cfg : types.BuildVars) → prelude.generalBuild prelude.singleThreaded (prelude.buildEnv cfg) cfg , pkgDeps = [ prelude.unbounded "libXt" ] , pkgBuildDeps = [ prelude.unbounded "binutils" ] } let mkGimpPackage = λ(name : Text) → λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.simplePackage { name, version = prelude.fullVersion x } ⫽ { pkgUrl = "https://download.gimp.org/pub/${name}/${versionString}/${name}-${fullVersion}.tar.bz2" } let babl = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.simplePackage { name = "babl", version = prelude.fullVersion x } ⫽ { pkgUrl = "https://download.gimp.org/pub/babl/${versionString}/babl-${fullVersion}.tar.xz" , pkgBuildDeps = [ prelude.unbounded "autoconf" , prelude.unbounded "automake" , prelude.unbounded "libtool" , prelude.unbounded "pkg-config" ] , pkgDeps = [ prelude.unbounded "lcms2" ] , configureCommand = prelude.autogenConfigure } let gegl = λ(x : { version : List Natural, patch : Natural }) → mkGimpPackage "gegl" x ⫽ { pkgDeps = [ prelude.lowerBound { name = "babl", lower = [ 0, 1, 58 ] } , prelude.lowerBound { name = "glib", lower = [ 2, 44, 0 ] } , prelude.unbounded "json-glib" ] , configureCommand = prelude.preloadCfg } let libexif = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libexif", version = v } ⫽ { pkgUrl = "https://nchc.dl.sourceforge.net/project/libexif/libexif/${versionString}/libexif-${versionString}.tar.bz2" } let json-glib = λ(x : { version : List Natural, patch : Natural }) → mkGnomeNinja "json-glib" x ⫽ { pkgDeps = [ prelude.unbounded "glib" , prelude.unbounded "libjpeg-turbo" , prelude.unbounded "libpng" ] , pkgBuildDeps = [ prelude.unbounded "gettext" ] , installCommand = prelude.ninjaInstallWithPkgConfig (prelude.mesonMoves [ "json-glib-1.0.pc" ]) } let lcms2 = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "lcms2", version = v } ⫽ { pkgUrl = "https://github.com/mm2/Little-CMS/archive/lcms${versionString}.tar.gz" , pkgSubdir = "Little-CMS-lcms${versionString}" } let libmypaint = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libmypaint", version = v } ⫽ { pkgUrl = "https://github.com/mypaint/libmypaint/releases/download/v${versionString}/libmypaint-${versionString}.tar.xz" , pkgDeps = [ prelude.unbounded "json-c" ] , pkgBuildDeps = [ prelude.unbounded "intltool", prelude.unbounded "gettext" ] } let json-c = λ(x : { version : List Natural, dateStr : Text }) → let versionString = "${prelude.showVersion x.version}-${x.dateStr}" in prelude.simplePackage { name = "json-c", version = x.version } ⫽ { pkgUrl = "https://github.com/json-c/json-c/archive/json-c-${versionString}.tar.gz" , pkgSubdir = "json-c-json-c-${versionString}" } let libopenjpeg = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libopenjpeg", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "https://github.com/uclouvain/openjpeg/archive/v${versionString}.tar.gz" , pkgSubdir = "openjpeg-${versionString}" , pkgDeps = [ prelude.unbounded "zlib" ] , pkgBuildDeps = [ prelude.unbounded "make", prelude.unbounded "cmake" ] , installCommand = λ(cfg : types.BuildVars) → prelude.cmakeInstall cfg # [ prelude.symlink "lib/openjpeg-2.3/OpenJPEGConfig.cmake" "lib/OpenJPEGConfig.cmake" ] } let libevent = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libevent", version = v } ⫽ { pkgUrl = "https://github.com/libevent/libevent/releases/download/release-${versionString}-stable/libevent-${versionString}-stable.tar.gz" , pkgSubdir = "libevent-${versionString}-stable" , pkgDeps = [ prelude.unbounded "openssl" ] } let memcached = λ(v : List Natural) → prelude.simplePackage { name = "memcached", version = v } ⫽ { pkgUrl = "https://memcached.org/files/memcached-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "libevent" ] } let motif = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "motif", version = v } ⫽ { pkgUrl = "https://iweb.dl.sourceforge.net/project/motif/Motif%20${versionString}%20Source%20Code/motif-${versionString}.tar.gz" , pkgDeps = [ prelude.unbounded "libXft" , prelude.unbounded "libpng" , prelude.unbounded "freetype" ] } let libjpeg = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libjpeg", version = v } ⫽ { pkgUrl = "http://www.ijg.org/files/jpegsrc.v${versionString}c.tar.gz" , pkgSubdir = "jpeg-${versionString}c" } let feh = let cc = prelude.mkCCArg let fehMake = λ(cfg : types.BuildVars) → { program = prelude.makeExe cfg.buildOS } let fehBuild = λ(v : List Natural) → λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ fehMake cfg ⫽ { arguments = [ "feh.1" ], procDir = Some "man" } ) , prelude.call ( prelude.defaultCall ⫽ fehMake cfg ⫽ { arguments = cc cfg # [ "CFLAGS=${( prelude.mkCFlags cfg ).value} -DPACKAGE=\\\"feh\\\" -DPREFIX=\\\"${cfg.installDir}\\\" -DVERSION=\\\"${prelude.showVersion v}\\\" ${( prelude.mkLDFlags cfg.linkDirs cfg ).value}" , "feh" ] , procDir = Some "src" } ) , prelude.call ( prelude.defaultCall ⫽ fehMake cfg ⫽ { arguments = [ "feh.desktop" ] , procDir = Some "share/applications" } ) ] let fehInstall = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = prelude.makeExe cfg.buildOS , arguments = [ "CFLAGS=${(prelude.mkCFlags cfg).value}" , "-j${Natural/show cfg.cpus}" , "PREFIX=${cfg.installDir}" , "install" ] } ) ] # prelude.mkLDPathWrapper cfg "feh" in λ(v : List Natural) → prelude.simplePackage { name = "feh", version = v } ⫽ { pkgUrl = "https://github.com/derf/feh/archive/${prelude.showVersion v}.tar.gz" , configureCommand = prelude.doNothing , buildCommand = fehBuild v , installCommand = fehInstall , pkgBuildDeps = [ prelude.unbounded "sed" ] , pkgDeps = [ prelude.unbounded "imlib2" , prelude.unbounded "libXt" , prelude.unbounded "libXinerama" , prelude.unbounded "curl" ] } let imlib2 = λ(v : List Natural) → prelude.simplePackage { name = "imlib2", version = v } ⫽ { pkgUrl = "https://downloads.sourceforge.net/enlightenment/imlib2-${prelude.showVersion v}.tar.bz2" , pkgDeps = [ prelude.unbounded "libXext" , prelude.unbounded "freetype" , prelude.unbounded "libjpeg" , prelude.unbounded "libpng" , prelude.unbounded "giflib" ] } let jemalloc = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "jemalloc", version = v } ⫽ { pkgUrl = "https://github.com/jemalloc/jemalloc/releases/download/${versionString}/jemalloc-${versionString}.tar.bz2" } let gperftools = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "gperftools", version = v } ⫽ { pkgUrl = "https://github.com/gperftools/gperftools/releases/download/gperftools-${versionString}/gperftools-${versionString}.tar.gz" } let openssh = let opensshInstall = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = prelude.makeExe cfg.buildOS , arguments = [ "PRIVSEP_PATH=${cfg.installDir}/var" , "install" , "-j${Natural/show cfg.cpus}" ] , environment = Some ( prelude.defaultPath cfg # [ prelude.mkPkgConfigVar cfg.linkDirs , prelude.libPath cfg ] ) } ) ] in λ(v : List Natural) → prelude.simplePackage { name = "openssh", version = v } ⫽ { pkgUrl = "https://mirrors.gigenet.com/pub/OpenBSD/OpenSSH/portable/openssh-${prelude.showVersion v}p1.tar.gz" , pkgSubdir = "openssh-${prelude.showVersion v}p1" , installCommand = opensshInstall , pkgDeps = [ prelude.unbounded "openssl" ] } let libxslt = λ(v : List Natural) → prelude.simplePackage { name = "libxslt", version = v } ⫽ { pkgUrl = "http://xmlsoft.org/sources/libxslt-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "libxml2" ] } let libepoxy = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.ninjaPackage { name = "libepoxy", version = v } ⫽ { pkgUrl = "https://github.com/anholt/libepoxy/releases/download/${versionString}/libepoxy-${versionString}.tar.xz" , pkgDeps = [ prelude.unbounded "mesa" ] , installCommand = prelude.ninjaInstallWithPkgConfig (prelude.mesonMoves [ "epoxy.pc" ]) } let mesa = λ(v : List Natural) → prelude.simplePackage { name = "mesa", version = v } ⫽ { pkgUrl = "https://mesa.freedesktop.org/archive/mesa-${prelude.showVersion v}.tar.xz" , pkgDeps = [ prelude.lowerBound { name = "libdrm", lower = [ 2, 4, 75 ] } , prelude.unbounded "libXdamage" , prelude.unbounded "libXfixes" , prelude.unbounded "libXxf86vm" , prelude.lowerBound { name = "libxshmfence", lower = [ 1, 1 ] } , prelude.lowerBound { name = "glproto", lower = [ 1, 4, 14 ] } , prelude.lowerBound { name = "dri2proto", lower = [ 2, 8 ] } , prelude.unbounded "libXrandr" ] , configureCommand = prelude.configureWithFlags [ "--enable-autotools" , "--with-gallium-drivers=nouveau,swrast" ] } let libXdamage = mkXLibDeps { name = "libXdamage" , deps = [ prelude.unbounded "libXfixes", prelude.unbounded "damageproto" ] } let libXfixes = mkXLibDeps { name = "libXfixes" , deps = [ prelude.unbounded "xproto" , prelude.unbounded "fixesproto" , prelude.unbounded "xextproto" , prelude.unbounded "libX11" ] } let libXxf86vm = mkXLibDeps { name = "libXxf86vm" , deps = [ prelude.unbounded "xproto" , prelude.unbounded "libX11" , prelude.unbounded "xextproto" , prelude.unbounded "libXext" , prelude.unbounded "xf86vidmodeproto" ] } let libxshmfence = mkXLibDeps { name = "libxshmfence", deps = [ prelude.unbounded "xproto" ] } let gnome-doc-utils = λ(x : { version : List Natural, patch : Natural }) → mkGnomeSimple "gnome-doc-utils" x ⫽ { pkgDeps = [ prelude.lowerBound { name = "libxslt", lower = [ 1, 1, 8 ] } , prelude.lowerBound { name = "libxml2", lower = [ 2, 6, 12 ] } ] , pkgBuildDeps = [ prelude.lowerBound { name = "intltool", lower = [ 0, 35, 0 ] } , prelude.unbounded "gettext" , prelude.unbounded "python2" ] } let itstool = λ(v : List Natural) → prelude.simplePackage { name = "itstool", version = v } ⫽ { pkgUrl = "http://files.itstool.org/itstool/itstool-${prelude.showVersion v}.tar.bz2" , pkgDeps = [ prelude.unbounded "libxml2" ] } let gexiv2 = λ(x : { version : List Natural, patch : Natural }) → mkGnomeNinja "gexiv2" x ⫽ { pkgDeps = [ prelude.unbounded "exiv2", prelude.unbounded "glib" ] , installCommand = prelude.ninjaInstallWithPkgConfig (prelude.mesonMoves [ "gexiv2.pc" ]) } let exiv2 = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "exiv2", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "http://www.exiv2.org/builds/exiv2-${versionString}-Source.tar.gz" , pkgSubdir = "exiv2-${versionString}-Source" } let libtiff = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.ninjaPackage { name = "libtiff", version = v } ⫽ { pkgUrl = "https://download.osgeo.org/libtiff/tiff-${versionString}.tar.gz" , pkgSubdir = "tiff-${versionString}" , configureCommand = prelude.cmakeConfigureNinja , pkgBuildDeps = [ prelude.unbounded "cmake", prelude.unbounded "ninja" ] } let nspr = λ(v : List Natural) → let versionString = prelude.showVersion v let bitFlag = λ(cfg : types.BuildVars) → if prelude.isX64 (prelude.archCfg cfg) then [ "--enable-64bit" ] else [] : List Text in prelude.simplePackage { name = "nspr", version = v } ⫽ { pkgUrl = "https://archive.mozilla.org/pub/nspr/releases/v${versionString}/src/nspr-${versionString}.tar.gz" , pkgSubdir = "nspr-${versionString}/nspr" , configureCommand = λ(cfg : types.BuildVars) → prelude.configureWithFlags (bitFlag cfg) cfg } let libthai = λ(v : List Natural) → prelude.simplePackage { name = "libthai", version = v } ⫽ { pkgUrl = "https://linux.thai.net/pub/thailinux/software/libthai/libthai-${prelude.showVersion v}.tar.xz" , pkgDeps = [ prelude.unbounded "libdatrie" ] } let libdatrie = λ(v : List Natural) → prelude.simplePackage { name = "libdatrie", version = v } ⫽ { pkgUrl = "https://linux.thai.net/pub/thailinux/software/libthai/libdatrie-${prelude.showVersion v}.tar.xz" } let joe = λ(v : List Natural) → prelude.simplePackage { name = "joe", version = v } ⫽ { pkgUrl = "https://downloads.sourceforge.net/joe-editor/joe-${prelude.showVersion v}.tar.gz" , installCommand = prelude.installWithBinaries [ "bin/joe" ] } let fossil = λ(v : List Natural) → prelude.simplePackage { name = "fossil", version = v } ⫽ { pkgUrl = "https://fossil-scm.org/fossil/uv/fossil-src-${prelude.showVersion v}.tar.gz" , installCommand = prelude.installWithBinaries [ "bin/fossil" ] , pkgDeps = [ prelude.unbounded "zlib", prelude.unbounded "openssl" ] } let libcroco = λ(x : { version : List Natural, patch : Natural }) → mkGnomeSimple "libcroco" x ⫽ { pkgDeps = [ prelude.lowerBound { name = "glib", lower = [ 2, 0 ] } , prelude.lowerBound { name = "libxml2", lower = [ 2, 4, 23 ] } ] } let libsoup = λ(x : { version : List Natural, patch : Natural }) → let libsoupCfgFile = '' option('gssapi', type : 'boolean', value : true, description : 'Build with GSSAPI support' ) option('krb5_config', type : 'string', description : 'Where to look for krb5-config, path points to krb5-config installation (defaultly looking in PATH)' ) option('ntlm', type : 'boolean', value : false, description : 'Build with NTLM support' ) option('tls_check', type : 'boolean', value : true, description : 'Enable TLS support through glib-networking. If you are building a package, you can disable this to allow building libsoup anyway (since glib-networking is not actually required at compile time), but you should be sure to add a runtime dependency on it.' ) option('gnome', type : 'boolean', value : true, description : 'Build libsoup with GNOME support' ) option('introspection', type : 'boolean', value : true, description : 'Build GObject Introspection data' ) option('vapi', type : 'boolean', value : false, description : 'Build Vala bindings' ) option('doc', type: 'boolean', value: false, description: 'Enable generating the API reference' ) option('tests', type: 'boolean', value: true, description: 'Enable unit tests compilation' ) '' in mkGnomeNinja "libsoup" x ⫽ { pkgDeps = [ prelude.unbounded "glib" , prelude.unbounded "sqlite" , prelude.unbounded "libxml2" , prelude.unbounded "libpsl" , prelude.unbounded "krb5" , prelude.unbounded "gobject-introspection" ] , pkgBuildDeps = [ prelude.unbounded "vala" ] , configureCommand = λ(cfg : types.BuildVars) → [ prelude.writeFile { file = "meson_options.txt" , contents = libsoupCfgFile } ] # prelude.mesonConfigure cfg , installCommand = prelude.ninjaInstallWithPkgConfig (prelude.mesonMoves [ "libsoup-2.4.pc" ]) } let libpsl = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libpsl", version = v } ⫽ { pkgUrl = "https://github.com/rockdaboot/libpsl/releases/download/libpsl-${versionString}/libpsl-${versionString}.tar.gz" } let krb5 = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "krb5", version = v } ⫽ { pkgUrl = "https://kerberos.org/dist/krb5/${versionString}/krb5-${versionString}.tar.gz" , pkgSubdir = "krb5-${versionString}/src" , pkgBuildDeps = [ prelude.unbounded "bison" ] } let vala = λ(x : { version : List Natural, patch : Natural }) → mkGnomeSimple "vala" x ⫽ { pkgBuildDeps = [ prelude.unbounded "flex" ] , pkgDeps = [ prelude.lowerBound { name = "glib", lower = [ 2, 40, 0 ] } , prelude.lowerBound { name = "graphviz", lower = [ 2, 15 ] } ] } let htop = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "htop", version = v } ⫽ { pkgUrl = "https://hisham.hm/htop/releases/${versionString}/htop-${versionString}.tar.gz" , pkgDeps = [ prelude.unbounded "ncurses" ] , pkgBuildDeps = [ prelude.unbounded "python3" ] , installCommand = prelude.installWithBinaries [ "bin/htop" ] } let mpfr = λ(v : List Natural) → prelude.simplePackage { name = "mpfr", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/mpfr/mpfr-${prelude.showVersion v}.tar.xz" } let libsodium = λ(v : List Natural) → prelude.simplePackage { name = "libsodium", version = v } ⫽ { pkgUrl = "https://download.libsodium.org/libsodium/releases/libsodium-${prelude.showVersion v}.tar.gz" } let libev = λ(v : List Natural) → prelude.simplePackage { name = "libev", version = v } ⫽ { pkgUrl = "http://dist.schmorp.de/libev/Attic/libev-${prelude.showVersion v}.tar.gz" } let ctags = λ(v : List Natural) → prelude.simplePackage { name = "ctags", version = v } ⫽ { pkgUrl = "http://prdownloads.sourceforge.net/ctags/ctags-${prelude.showVersion v}.tar.gz" , installCommand = prelude.installWithBinaries [ "bin/ctags" ] } let tcc = λ(v : List Natural) → prelude.simplePackage { name = "tcc", version = v } ⫽ { pkgUrl = "http://download.savannah.gnu.org/releases/tinycc/tcc-${prelude.showVersion v}.tar.bz2" , pkgBuildDeps = [ prelude.unbounded "perl", prelude.unbounded "texinfo" ] , installCommand = prelude.installWithBinaries [ "bin/tcc" ] } let texinfo = λ(v : List Natural) → prelude.simplePackage { name = "texinfo", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/texinfo/texinfo-${prelude.showVersion v}.tar.xz" , configureCommand = prelude.configureWithFlags [ "--disable-dependency-tracking" ] } let node = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "node", version = v } ⫽ { pkgUrl = "https://nodejs.org/dist/v${versionString}/node-v${versionString}.tar.gz" , pkgSubdir = "node-v${versionString}" , installCommand = λ(cfg : types.BuildVars) → prelude.installWithBinaries [ "bin/node", "bin/npm" ] cfg # [ prelude.mkExe "${cfg.installDir}/lib/node_modules/npm/bin/npm-cli.js" ] } let glu = λ(v : List Natural) → prelude.simplePackage { name = "glu", version = v } ⫽ { pkgUrl = "https://mesa.freedesktop.org/archive/glu/glu-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "mesa" ] } let compositeproto = mkXProto "compositeproto" let libXcomposite = mkXLibDeps { name = "libXcomposite" , deps = [ prelude.unbounded "libX11" , prelude.lowerBound { name = "compositeproto", lower = [ 0, 4 ] } , prelude.unbounded "libXfixes" ] } let mosh = λ(v : List Natural) → prelude.simplePackage { name = "mosh", version = v } ⫽ { pkgUrl = "https://mosh.org/mosh-${prelude.showVersion v}.tar.gz" , pkgBuildDeps = [ prelude.unbounded "protobuf" ] , pkgDeps = [ prelude.unbounded "zlib" , prelude.unbounded "protobuf" , prelude.unbounded "openssl" ] , installCommand = prelude.installWithBinaries [ "bin/mosh" ] } let protobuf = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "protobuf", version = v } ⫽ { pkgUrl = "https://github.com/protocolbuffers/protobuf/releases/download/v${versionString}/protobuf-cpp-${versionString}.tar.gz" , pkgSubdir = "protobuf-${versionString}" } let libcds = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libcds", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "https://downloads.sourceforge.net/libcds/cds-${prelude.showVersion v}.tar.gz" , pkgSubdir = "cds-${versionString}" , pkgDeps = [ prelude.unbounded "libboost" ] } let libboost = -- TODO: use bootstrap.bat on windows let boostConfigure = λ(cfg : types.BuildVars) → [ prelude.call (prelude.defaultCall ⫽ { program = "./bootstrap.sh" }) ] let boostInstall = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "./b2" , arguments = [ "install" , "--prefix=${cfg.installDir}" , "--without-python" ] } ) ] in λ(v : List Natural) → let versionString = prelude.underscoreVersion v in prelude.simplePackage { name = "libboost", version = v } ⫽ { pkgUrl = "https://dl.bintray.com/boostorg/release/${prelude.showVersion v}/source/boost_${versionString}.tar.bz2" , pkgSubdir = "boost_${versionString}" , configureCommand = boostConfigure , buildCommand = prelude.doNothing , installCommand = boostInstall } let slowBuild = λ(cfg : types.BuildVars) → [ prelude.call { program = "cmake" , arguments = [ "--build", ".", "--config", "Release", "--", "-j", "2" ] , environment = prelude.defaultEnv , procDir = Some "build" } ] let clang = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "clang", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "http://releases.llvm.org/${versionString}/cfe-${versionString}.src.tar.xz" , pkgSubdir = "cfe-${versionString}.src" , buildCommand = slowBuild , pkgDeps = [ prelude.unbounded "llvm" ] , installCommand = λ(cfg : types.BuildVars) → prelude.cmakeInstall cfg # [ prelude.symlinkBinary "bin/clang" , prelude.symlinkBinary "bin/clang-format" ] } let llvm = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "llvm", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "http://releases.llvm.org/${versionString}/llvm-${versionString}.src.tar.xz" , pkgSubdir = "llvm-${versionString}.src" , buildCommand = slowBuild } let pari = λ(v : List Natural) → prelude.simplePackage { name = "pari", version = v } ⫽ { pkgUrl = "http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-${prelude.showVersion v}.tar.gz" , configureCommand = prelude.generalConfigure prelude.configSome "Configure" ([] : List Text) ([] : List Text) } let pdfgrep = λ(v : List Natural) → prelude.simplePackage { name = "pdfgrep", version = v } ⫽ { pkgUrl = "https://pdfgrep.org/download/pdfgrep-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "poppler", prelude.unbounded "libgcrypt" ] , installCommand = λ(cfg : types.BuildVars) → prelude.installWithWrappers [ "pdfgrep" ] cfg # prelude.symlinkManpages [ { file = "share/man/man1/pdfgrep.1", section = 1 } ] } let mpc = λ(v : List Natural) → prelude.simplePackage { name = "mpc", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/mpc/mpc-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "mpfr" ] } let gcc = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "gcc", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/gcc/gcc-${versionString}/gcc-${versionString}.tar.xz" , configureCommand = λ(cfg : types.BuildVars) → [ prelude.call { program = "contrib/download_prerequisites" , arguments = [] : List Text , environment = None (List types.EnvVar) , procDir = None Text } ] # prelude.configureWithFlags [ "--disable-multilib" ] cfg , installCommand = prelude.installWithBinaries [ "bin/gcc" , "bin/g++" , "bin/gcc-ar" , "bin/gcc-nm" , "bin/gfortran" , "bin/gcc-ranlib" ] , pkgBuildDeps = [ prelude.unbounded "curl" , prelude.unbounded "sed" , prelude.unbounded "libtool" ] } let ruby = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.simplePackage { name = "ruby", version = prelude.fullVersion x } ⫽ { pkgUrl = "https://cache.ruby-lang.org/pub/ruby/${versionString}/ruby-${fullVersion}.tar.gz" , installCommand = prelude.installWithBinaries [ "bin/ruby", "bin/gem" ] , pkgDeps = [ prelude.unbounded "readline", prelude.unbounded "openssl" ] } let poppler = λ(v : List Natural) → prelude.simplePackage { name = "poppler", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "https://poppler.freedesktop.org/poppler-${prelude.showVersion v}.tar.xz" , pkgDeps = [ prelude.unbounded "fontconfig" , prelude.unbounded "libopenjpeg" , prelude.unbounded "libjpeg-turbo" , prelude.unbounded "libjpeg" , prelude.unbounded "freetype" , prelude.unbounded "zlib" , prelude.unbounded "libpng" , prelude.unbounded "libiconv" , prelude.unbounded "harfbuzz" , prelude.unbounded "glib" ] , installCommand = λ(cfg : types.BuildVars) → prelude.cmakeInstall cfg # prelude.mkLDPathWrappers cfg [ "pdfdetach" , "pdffonts" , "pdfimages" , "pdfinfo" , "pdfseparate" , "pdfsig" , "pdftocairo" , "pdftohtml" , "pdftoppm" , "pdftops" , "pdftotext" , "pdfunite" ] } let tesseract = λ(v : List Natural) → prelude.simplePackage { name = "tesseract", version = v } ⫽ { pkgUrl = "https://github.com/tesseract-ocr/tesseract/archive/${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.lowerBound { name = "leptonica", lower = [ 1, 74 ] } ] , pkgBuildDeps = [ prelude.unbounded "libtool" , prelude.unbounded "automake" , prelude.unbounded "pkg-config" ] , configureCommand = prelude.autogenConfigure , installCommand = prelude.installWithBinaries [ "bin/tesseract" ] } let leptonica = λ(v : List Natural) → prelude.simplePackage { name = "leptonica", version = v } ⫽ { pkgUrl = "http://leptonica.org/source/leptonica-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "zlib" ] } let grep = λ(v : List Natural) → prelude.makeGnuExe { name = "grep", version = v } let phash = λ(v : List Natural) → prelude.simplePackage { name = "pHash", version = v } ⫽ { pkgUrl = "http://phash.org/releases/pHash-${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.lowerBound { name = "CImg", lower = [ 1, 3 ] } , prelude.unbounded "ffmpeg" , prelude.unbounded "libsndfile" , prelude.unbounded "libsamplerate" , prelude.unbounded "mpg123" , prelude.unbounded "libjpeg-turbo" , prelude.unbounded "libpng" , prelude.unbounded "fftw" ] , pkgBuildDeps = [ prelude.unbounded "autoconf" , prelude.unbounded "automake" , prelude.unbounded "grep" , prelude.unbounded "coreutils" , prelude.unbounded "sed" , prelude.unbounded "libtool" ] , configureCommand = λ(cfg : types.BuildVars) → [ prelude.patch '' --- src/cimgffmpeg.cpp 2019-06-22 20:18:05.632517868 -0500 +++ src/cimgffmpeg.cpp 2019-06-22 20:18:45.569003435 -0500 @@ -100,12 +100,12 @@ AVFrame *pFrame; // Allocate video frame - pFrame=avcodec_alloc_frame(); + pFrame=av_frame_alloc(); if (pFrame==NULL) return -1; // Allocate an AVFrame structure - AVFrame *pConvertedFrame = avcodec_alloc_frame(); + AVFrame *pConvertedFrame = av_frame_alloc(); if(pConvertedFrame==NULL) return -1; @@ -254,10 +254,10 @@ AVFrame *pFrame; // Allocate video frame - pFrame=avcodec_alloc_frame(); + pFrame=av_frame_alloc(); // Allocate an AVFrame structure - AVFrame *pConvertedFrame = avcodec_alloc_frame(); + AVFrame *pConvertedFrame = av_frame_alloc(); if(pConvertedFrame==NULL){ return -1; } --- configure.ac 2019-06-22 21:22:10.582842002 -0500 +++ configure.ac 2019-06-22 21:21:48.962982961 -0500 @@ -122,7 +122,7 @@ AC_DEFUN([AC_CHECK_FFMPEG], [ AC_MSG_CHECKING([whether FFmpeg is present]) -AC_CHECK_LIB([avcodec], [avcodec_alloc_frame], [], [AC_MSG_ERROR([ +AC_CHECK_LIB([avutil], [av_frame_alloc], [], [AC_MSG_ERROR([ *** libavcodec not found. You need FFmpeg. Get it at ])]) --- src/pHash.h 2019-06-23 11:31:15.678771295 -0500 +++ src/pHash.h 2019-06-23 11:31:31.754816275 -0500 @@ -47,6 +47,8 @@ #if defined(HAVE_IMAGE_HASH) || defined(HAVE_VIDEO_HASH) #define cimg_debug 0 #define cimg_display 0 +#define cimg_use_png +#define cimg_use_jpeg #include "CImg.h" using namespace cimg_library; #endif --- src/cimgffmpeg.cpp 2019-06-22 21:50:15.060403190 -0500 +++ src/cimgffmpeg.cpp 2019-06-22 21:56:50.839827371 -0500 @@ -39,11 +39,11 @@ int ReadFrames(VFInfo *st_info, CImgList *pFrameList, unsigned int low_index, unsigned int hi_index) { //target pixel format - PixelFormat ffmpeg_pixfmt; + AVPixelFormat ffmpeg_pixfmt; if (st_info->pixelformat == 0) - ffmpeg_pixfmt = PIX_FMT_GRAY8; + ffmpeg_pixfmt = AV_PIX_FMT_GRAY8; else - ffmpeg_pixfmt = PIX_FMT_RGB24; + ffmpeg_pixfmt = AV_PIX_FMT_RGB24; st_info->next_index = low_index; @@ -123,7 +123,7 @@ int size = 0; - int channels = ffmpeg_pixfmt == PIX_FMT_GRAY8 ? 1 : 3; + int channels = ffmpeg_pixfmt == AV_PIX_FMT_GRAY8 ? 1 : 3; AVPacket packet; int result = 1; @@ -189,11 +189,11 @@ int NextFrames(VFInfo *st_info, CImgList *pFrameList) { - PixelFormat ffmpeg_pixfmt; + AVPixelFormat ffmpeg_pixfmt; if (st_info->pixelformat == 0) - ffmpeg_pixfmt = PIX_FMT_GRAY8; + ffmpeg_pixfmt = AV_PIX_FMT_GRAY8; else - ffmpeg_pixfmt = PIX_FMT_RGB24; + ffmpeg_pixfmt = AV_PIX_FMT_RGB24; if (st_info->pFormatCtx == NULL) { @@ -287,7 +287,7 @@ break; if(packet.stream_index == st_info->videoStream) { - int channels = ffmpeg_pixfmt == PIX_FMT_GRAY8 ? 1 : 3; + int channels = ffmpeg_pixfmt == AV_PIX_FMT_GRAY8 ? 1 : 3; AVPacket avpkt; av_init_packet(&avpkt); avpkt.data = packet.data; --- src/cimgffmpeg.h 2019-06-23 11:47:59.046307628 -0500 +++ src/cimgffmpeg.h 2019-06-23 11:32:14.754956444 -0500 @@ -30,6 +30,8 @@ #define cimg_display 0${"\r"} #define cimg_debug 0${"\r"} ${"\r"} +#define cimg_use_png${"\r"} +#define cimg_use_jpeg${"\r"} #include "CImg.h"${"\r"} ${"\r"} #define __STDC_CONSTANT_MACROS${"\r"} '' , prelude.call { program = "autoreconf" , arguments = [ "-i" ] , environment = Some [ { var = "PATH" , value = prelude.mkPathVar cfg.binDirs } , prelude.mkAclocalPath cfg.shareDirs ] , procDir = None Text } ] # prelude.defaultConfigure cfg } let cimg = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "CImg", version = v } ⫽ { pkgUrl = "http://cimg.eu/files/CImg_${versionString}.zip" , pkgBuildDeps = [] : List types.Dep , configureCommand = prelude.doNothing , buildCommand = prelude.doNothing , installCommand = λ(_ : types.BuildVars) → [ prelude.copyFile "CImg.h" "include/CImg.h" ] } let ffmpeg = λ(v : List Natural) → prelude.simplePackage { name = "ffmpeg", version = v } ⫽ { pkgUrl = "https://ffmpeg.org/releases/ffmpeg-${prelude.showVersion v}.tar.bz2" , pkgBuildDeps = [ prelude.unbounded "nasm" ] , configureCommand = prelude.configureWithFlags [ "--enable-shared" , "--enable-libmp3lame" , "--enable-gpl" , "--enable-version3" , "--enable-nonfree" , "--disable-debug" , "--enable-libass" , "--enable-libfreetype" , "--enable-libvorbis" , "--enable-avresample" , "--enable-gnutls" , "--enable-libvpx" , "--enable-libfdk-aac" ] , installCommand = prelude.installWithWrappers [ "ffmpeg" ] , pkgDeps = [ prelude.unbounded "bzip2" , prelude.unbounded "libmp3lame" , prelude.unbounded "libass" , prelude.unbounded "freetype" , prelude.unbounded "libvorbis" , prelude.unbounded "gnutls" , prelude.unbounded "libvpx" , prelude.unbounded "fdk-aac" ] } let libsndfile = λ(v : List Natural) → prelude.simplePackage { name = "libsndfile", version = v } ⫽ { pkgUrl = "http://www.mega-nerd.com/libsndfile/files/libsndfile-${prelude.showVersion v}.tar.gz" } let libsamplerate = λ(v : List Natural) → prelude.simplePackage { name = "libsamplerate", version = v } ⫽ { pkgUrl = "http://www.mega-nerd.com/SRC/libsamplerate-${prelude.showVersion v}.tar.gz" } let mpg123 = λ(v : List Natural) → prelude.simplePackage { name = "mpg123", version = v } ⫽ { pkgUrl = "http://www.mpg123.de/download/mpg123-${prelude.showVersion v}.tar.bz2" } let time = λ(v : List Natural) → prelude.makeGnuExe { name = "time", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/time/time-${prelude.showVersion v}.tar.gz" } let make = λ(v : List Natural) → prelude.makeGnuExe { name = "make", version = v } ⫽ { pkgUrl = "https://ftp.wayne.edu/gnu/make/make-${prelude.showVersion v}.tar.bz2" , configureCommand = prelude.configureWithPatch '' --- glob/glob.c 2013-10-20 17:14:38.000000000 +0000 +++ glob/glob.c 2018-09-18 10:16:03.860886356 +0000 @@ -208,7 +208,7 @@ #endif /* __GNU_LIBRARY__ || __DJGPP__ */ -#if !defined __alloca && !defined __GNU_LIBRARY__ +#if !defined __alloca && defined __GNU_LIBRARY__ # ifdef __GNUC__ # undef alloca '' , buildCommand = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "sh" , arguments = [ "build.sh" ] , environment = Some (prelude.buildEnv cfg) } ) ] , installCommand = λ(_ : types.BuildVars) → [ prelude.copyFile "make" "bin/make" , prelude.symlinkBinary "bin/make" ] , pkgBuildDeps = [ prelude.unbounded "patch" ] } let mercury = let mercuryBuild = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "make" , arguments = [ "PARALLEL=-j${Natural/show cfg.cpus}" ] , environment = Some (prelude.buildEnv cfg) } ) ] let mercuryCommon = { pkgUrl = "http://dl.mercurylang.org/release/mercury-srcdist-14.01.1.tar.gz" , pkgSubdir = "mercury-srcdist-14.01.1" , buildCommand = mercuryBuild } in prelude.simplePackage { name = "mercury", version = [ 14, 1, 1 ] } ⫽ mercuryCommon ⫽ { pkgBuildDeps = [ prelude.unbounded "flex" ] } let qt = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.simplePackage { name = "qt", version = prelude.fullVersion x } ⫽ { pkgUrl = "https://download.qt.io/archive/qt/${versionString}/${fullVersion}/single/qt-everywhere-src-${fullVersion}.tar.xz" , pkgSubdir = "qt-everywhere-src-${fullVersion}" , pkgBuildDeps = [ prelude.unbounded "flex" , prelude.unbounded "bison" , prelude.unbounded "pkg-config" , prelude.unbounded "gperf" , prelude.unbounded "perl" , prelude.unbounded "python2" , prelude.unbounded "git" ] , pkgDeps = [ prelude.unbounded "fontconfig" , prelude.unbounded "mesa" , prelude.unbounded "dbus" , prelude.unbounded "freetype" , prelude.unbounded "harfbuzz" , prelude.unbounded "libjpeg-turbo" , prelude.unbounded "libpng" , prelude.unbounded "giflib" , prelude.unbounded "glib" ] } let lz4 = λ(v : List Natural) → prelude.simplePackage { name = "lz4", version = v } ⫽ { pkgUrl = "https://github.com/lz4/lz4/archive/v${prelude.showVersion v}.tar.gz" , configureCommand = prelude.doNothing , installCommand = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "make" , arguments = [ "PREFIX=${cfg.installDir}", "install" ] , environment = Some (prelude.buildEnv cfg) } ) , prelude.symlinkBinary "bin/lz4" ] # prelude.symlinkManpages [ { file = "share/man/man1/lz4.1", section = 1 } ] } let fftw = λ(v : List Natural) → prelude.simplePackage { name = "fftw", version = v } ⫽ { pkgUrl = "http://www.fftw.org/fftw-${prelude.showVersion v}.tar.gz" , configureCommand = prelude.configureWithFlags [ "--enable-shared" , "--enable-threads" , "--with-combined-threads" ] } let icu-le-hb = λ(v : List Natural) → prelude.simplePackage { name = "icu-le-hb", version = v } ⫽ { pkgUrl = "https://github.com/harfbuzz/icu-le-hb/archive/${prelude.showVersion v}.tar.gz" , configureCommand = prelude.autogenConfigure , pkgDeps = [ prelude.unbounded "harfbuzz", prelude.unbounded "icu" ] , pkgBuildDeps = [ prelude.unbounded "pkg-config" ] } let icu = λ(v : List Natural) → prelude.simplePackage { name = "icu", version = v } ⫽ { pkgUrl = "http://download.icu-project.org/files/icu4c/${prelude.showVersion v}/icu4c-${prelude.underscoreVersion v}-src.tgz" , pkgSubdir = "icu/source" , pkgBuildDeps = [ prelude.lowerBound { name = "make", lower = [ 3, 80 ] } , prelude.unbounded "python3" ] } let opencv = λ(v : List Natural) → prelude.simplePackage { name = "opencv", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "https://github.com/opencv/opencv/archive/${prelude.showVersion v}.zip" , pkgBuildDeps = [ prelude.lowerBound { name = "cmake", lower = [ 2, 8, 7 ] } , prelude.unbounded "pkg-config" , prelude.unbounded "python2" ] , pkgDeps = [ prelude.unbounded "zlib" , prelude.unbounded "libjpeg-turbo" , prelude.unbounded "libpng" , prelude.unbounded "gtk3" , prelude.unbounded "ffmpeg" ] } let libraw = λ(v : List Natural) → prelude.simplePackage { name = "libraw", version = v } ⫽ { pkgUrl = "https://www.libraw.org/data/LibRaw-${prelude.showVersion v}.tar.gz" , pkgSubdir = "LibRaw-${prelude.showVersion v}" } let quazip = λ(v : List Natural) → prelude.simplePackage { name = "quazip", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "https://github.com/stachenov/quazip/archive/v${prelude.showVersion v}.tar.gz" , pkgDeps = [ prelude.unbounded "zlib", prelude.unbounded "qt" ] } let eigen = λ(v : List Natural) → prelude.simplePackage { name = "eigen", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "http://bitbucket.org/eigen/eigen/get/${prelude.showVersion v}.tar.bz2" , pkgSubdir = "eigen-eigen-323c052e1731" } let blas = λ(v : List Natural) → prelude.simplePackage { name = "blas", version = v } ⫽ { pkgUrl = "http://www.netlib.org/blas/blas-${prelude.showVersion v}.tgz" , pkgSubdir = "BLAS-${prelude.showVersion v}" , pkgBuildDeps = [ prelude.unbounded "gcc" ] , configureCommand = prelude.doNothing , installCommand = λ(_ : types.BuildVars) → [ prelude.copyFile "blas_LINUX.a" "lib/blas.a" ] } let openblas = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "openblas", version = v } ⫽ { pkgUrl = "https://github.com/xianyi/OpenBLAS/archive/v${versionString}.tar.gz" , pkgSubdir = "OpenBLAS-${versionString}" , pkgBuildDeps = [ prelude.unbounded "gcc" ] , pkgDeps = [ prelude.unbounded "gcc" ] , configureCommand = prelude.doNothing , installCommand = prelude.installPrefix } let r = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "r", version = v } ⫽ { pkgUrl = "https://cran.r-project.org/src/base/R-4/R-${versionString}.tar.gz" , pkgSubdir = "R-${versionString}" , pkgDeps = [ prelude.unbounded "readline" , prelude.unbounded "libXt" , prelude.unbounded "pcre" ] , pkgBuildDeps = [ prelude.unbounded "gcc" ] , installCommand = prelude.installWithBinaries [ "bin/R", "bin/Rscript" ] } let libspng = λ(v : List Natural) → prelude.ninjaPackage { name = "libspng", version = v } ⫽ { pkgUrl = "https://github.com/randy408/libspng/archive/v${prelude.showVersion v}.tar.gz" , pkgBuildDeps = [ prelude.unbounded "pkg-config" , prelude.unbounded "meson" , prelude.lowerBound { name = "ninja", lower = [ 1, 5, 0 ] } ] , pkgDeps = [ prelude.unbounded "zlib" ] } let glib-networking = λ(x : { version : List Natural, patch : Natural }) → let versionString = prelude.showVersion x.version let fullVersion = versionString ++ "." ++ Natural/show x.patch in prelude.ninjaPackage { name = "glib-networking", version = prelude.fullVersion x } ⫽ { pkgUrl = "http://ftp.gnome.org/pub/gnome/sources/glib-networking/${versionString}/glib-networking-${fullVersion}.tar.xz" , pkgBuildDeps = [ prelude.unbounded "pkg-config", prelude.unbounded "gettext" ] , pkgDeps = [ prelude.unbounded "glib", prelude.unbounded "gnutls" ] } let libwebp = λ(v : List Natural) → prelude.simplePackage { name = "libwebp", version = v } ⫽ { pkgUrl = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${prelude.showVersion v}.tar.gz" } let rustc = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "rustc", version = v } ⫽ { pkgUrl = "https://static.rust-lang.org/dist/rust-${versionString}-x86_64-unknown-linux-gnu.tar.gz" , pkgSubdir = "rust-${versionString}-x86_64-unknown-linux-gnu" , configureCommand = prelude.doNothing , buildCommand = prelude.doNothing , installCommand = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "./install.sh" , arguments = [ "--prefix=${cfg.installDir}" , "--disable-ldconfig" ] } ) ] } let librsvg = λ(x : { version : List Natural, patch : Natural }) → mkGnomeSimple "librsvg" x ⫽ { pkgBuildDeps = [ prelude.lowerBound { name = "rustc", lower = [ 1, 16, 0 ] } , prelude.unbounded "pkg-config" ] , pkgDeps = [ prelude.lowerBound { name = "cairo", lower = [ 1, 16, 0 ] } , prelude.lowerBound { name = "libxml2", lower = [ 2, 9, 0 ] } , prelude.lowerBound { name = "libcroco", lower = [ 0, 6, 1 ] } , prelude.unbounded "pango" , prelude.lowerBound { name = "gdk-pixbuf", lower = [ 2, 20 ] } , prelude.unbounded "gobject-introspection" , prelude.lowerBound { name = "glib", lower = [ 2, 10, 0 ] } ] } let ats = λ(v : List Natural) → let versionString = prelude.showVersion v let atsBuild = λ(cfg : types.BuildVars) → let buildDir = cfg.currentDir ++ "/ATS2-Postiats-gmp-${versionString}" in [ prelude.call ( prelude.defaultCall ⫽ { program = prelude.makeExe cfg.buildOS , arguments = [ "CFLAGS=${( prelude.mkCFlags cfg ).value} -I${buildDir}/src/CBOOT/ccomp/runtime -I${buildDir}/src/CBOOT" , "LDFLAGS='${( prelude.mkLDFlags cfg.linkDirs cfg ).value}'" ] , environment = Some (prelude.buildEnv cfg) } ) ] in prelude.simplePackage { name = "ats", version = v } ⫽ { pkgUrl = "http://ats-lang.sourceforge.net/IMPLEMENT/Postiats/ATS2-Postiats-gmp-${versionString}.tgz" , pkgSubdir = "ATS2-Postiats-gmp-${versionString}" , pkgDeps = [ prelude.unbounded "gmp" ] , buildCommand = atsBuild , installCommand = prelude.installWithBinaries [ "bin/patsopt", "bin/patscc" ] } let libiconv = λ(v : List Natural) → prelude.simplePackage { name = "libiconv", version = v } ⫽ { pkgUrl = "https://ftp.wayne.edu/gnu/libiconv/libiconv-${prelude.showVersion v}.tar.gz" } let libav = λ(v : List Natural) → prelude.simplePackage { name = "libav", version = v } ⫽ { pkgUrl = "https://libav.org/releases/libav-${prelude.showVersion v}.tar.xz" , pkgBuildDeps = [ prelude.unbounded "nasm", prelude.unbounded "perl" ] , installCommand = prelude.installWithBinaries [ "bin/avconv", "bin/avprobe" ] } let alsa-lib = λ(v : List Natural) → prelude.simplePackage { name = "alsa-lib", version = v } ⫽ { pkgUrl = "https://www.alsa-project.org/files/pub/lib/alsa-lib-${prelude.showVersion v}.tar.bz2" } let bash-completion = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "bash-completion", version = v } ⫽ { pkgUrl = "https://github.com/scop/bash-completion/releases/download/${versionString}/bash-completion-${versionString}.tar.xz" } let hugs = let hugsEnv = λ(_ : List Text) → λ(cfg : types.BuildVars) → Some [ { var = "CFLAGS", value = "-std=gnu89" } , { var = "PATH", value = prelude.mkPathVar cfg.binDirs } ] in prelude.simplePackage { name = "hugs", version = [ 2006, 9 ] } ⫽ { pkgUrl = "https://www.haskell.org/hugs/downloads/2006-09/hugs98-plus-Sep2006.tar.gz" , pkgSubdir = "hugs98-plus-Sep2006" , configureCommand = prelude.generalConfigure hugsEnv "configure" ([] : List Text) ([] : List Text) , pkgBuildDeps = [ prelude.unbounded "coreutils" , prelude.unbounded "sed" , prelude.unbounded "gcc" , prelude.unbounded "binutils" , prelude.unbounded "grep" , prelude.unbounded "findutils" ] } let bash = λ(v : List Natural) → prelude.simplePackage { name = "bash", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/gnu/bash/bash-${prelude.showVersion v}.tar.gz" } let findutils = λ(v : List Natural) → prelude.simplePackage { name = "findutils", version = v } ⫽ { pkgUrl = "https://ftp.gnu.org/pub/gnu/findutils/findutils-${prelude.showVersion v}.tar.xz" } let ghc = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "ghc", version = v } ⫽ { pkgUrl = "https://downloads.haskell.org/~ghc/${versionString}/ghc-${versionString}-x86_64-deb9-linux.tar.xz" , buildCommand = prelude.doNothing } let cmark = λ(v : List Natural) → prelude.simplePackage { name = "cmark", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "https://github.com/commonmark/cmark/archive/${prelude.showVersion v}.tar.gz" } let lzip = λ(v : List Natural) → prelude.simplePackage { name = "lzip", version = v } ⫽ { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/lzip-${prelude.showVersion v}.tar.lz" , installCommand = λ(cfg : types.BuildVars) → prelude.installWithBinaries [ "bin/lzip" ] cfg # prelude.symlinkManpages [ { file = "share/man/man1/lzip.1", section = 1 } ] } let clzip = λ(v : List Natural) → prelude.simplePackage { name = "clzip", version = v } ⫽ { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/clzip/clzip-${prelude.showVersion v}.tar.lz" , installCommand = λ(cfg : types.BuildVars) → prelude.installWithBinaries [ "bin/clzip" ] cfg # prelude.symlinkManpages [ { file = "share/man/man1/clzip.1", section = 1 } ] } let lunzip = λ(v : List Natural) → prelude.simplePackage { name = "lunzip", version = v } ⫽ { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/lunzip/lunzip-${prelude.showVersion v}.tar.lz" , installCommand = λ(cfg : types.BuildVars) → prelude.installWithBinaries [ "bin/lunzip" ] cfg # prelude.symlinkManpages [ { file = "share/man/man1/lunzip.1", section = 1 } ] } let lzlib = λ(v : List Natural) → prelude.simplePackage { name = "lzlib", version = v } ⫽ { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/lzlib/lzlib-${prelude.showVersion v}.tar.lz" , configureCommand = prelude.configureWithFlags [ "--enable-shared" ] } let lziprecover = λ(v : List Natural) → prelude.simplePackage { name = "lziprecover", version = v } ⫽ { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/lziprecover/lziprecover-${prelude.showVersion v}.tar.lz" , installCommand = prelude.installWithBinaries [ "bin/lziprecover" ] } let libmp3lame = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libmp3lame", version = v } ⫽ { pkgUrl = "https://downloads.sourceforge.net/lame/lame-${versionString}.tar.gz" , pkgSubdir = "lame-${versionString}" } let libass = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libass", version = v } ⫽ { pkgUrl = "https://github.com/libass/libass/releases/download/${versionString}/libass-${versionString}.tar.xz" , pkgBuildDeps = [ prelude.unbounded "nasm" ] , pkgDeps = [ prelude.lowerBound { name = "freetype", lower = [ 9, 10, 3 ] } , prelude.lowerBound { name = "fribidi", lower = [ 0, 19, 0 ] } , prelude.lowerBound { name = "harfbuzz", lower = [ 0, 9, 5 ] } , prelude.lowerBound { name = "fontconfig", lower = [ 2, 10, 92 ] } ] } let libogg = λ(v : List Natural) → prelude.simplePackage { name = "libogg", version = v } ⫽ { pkgUrl = "https://downloads.xiph.org/releases/ogg/libogg-${prelude.showVersion v}.tar.xz" } let libvorbis = λ(v : List Natural) → prelude.simplePackage { name = "libvorbis", version = v } ⫽ { pkgUrl = "https://downloads.xiph.org/releases/vorbis/libvorbis-${prelude.showVersion v}.tar.xz" , pkgDeps = [ prelude.unbounded "libogg" ] } let libvpx = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "libvpx", version = v } ⫽ { pkgUrl = "https://github.com/webmproject/libvpx/archive/v${versionString}/libvpx-${versionString}.tar.gz" , pkgBuildDeps = [ prelude.unbounded "nasm", prelude.unbounded "perl" ] } let fdk-aac = λ(v : List Natural) → prelude.simplePackage { name = "fdk-aac", version = v } ⫽ { pkgUrl = "https://downloads.sourceforge.net/opencore-amr/fdk-aac-${prelude.showVersion v}.tar.gz" } let swi-prolog = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.ninjaPackage { name = "swi-prolog", version = v } ⫽ { pkgUrl = "https://www.swi-prolog.org/download/stable/src/swipl-${versionString}.tar.gz" , configureCommand = prelude.cmakeConfigureNinja , pkgBuildDeps = [ prelude.unbounded "cmake" , prelude.unbounded "ninja" , prelude.unbounded "coreutils" ] , pkgSubdir = "swipl-${versionString}" } let exiftool = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "exiftool", version = v } ⫽ { pkgUrl = "https://sno.phy.queensu.ca/~phil/exiftool/Image-ExifTool-${versionString}.tar.gz" , pkgSubdir = "Image-ExifTool-${versionString}" , configureCommand = prelude.perlConfigure , installCommand = λ(cfg : types.BuildVars) → let perlWrapper = "PERL5LIB=${cfg.installDir}/lib/site_perl/5.30.0/ ${cfg.installDir}/bin/exiftool \$@" let wrapped = "wrapper/exiftool" in prelude.defaultInstall cfg # [ prelude.createDir "wrapper" , prelude.writeFile { file = wrapped, contents = perlWrapper } , prelude.mkExe wrapped , prelude.copyFile wrapped wrapped , prelude.symlinkBinary wrapped ] , pkgBuildDeps = [ prelude.unbounded "perl" ] } let subversion = λ(v : List Natural) → prelude.simplePackage { name = "subversion", version = v } ⫽ { pkgUrl = "https://www-eu.apache.org/dist/subversion/subversion-${prelude.showVersion v}.tar.bz2" , pkgDeps = [ prelude.unbounded "apr" , prelude.unbounded "apr-util" , prelude.unbounded "sqlite" , prelude.unbounded "lz4" , prelude.unbounded "zlib" , prelude.unbounded "utf8proc" ] , pkgBuildDeps = [ prelude.unbounded "pkg-config" ] , installCommand = prelude.installWithBinaries [ "bin/svn" ] } let utf8proc = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "utf8proc", version = v } ⫽ prelude.cmakePackage ⫽ { pkgUrl = "https://github.com/JuliaStrings/utf8proc/archive/v${versionString}.tar.gz" } let apr = λ(v : List Natural) → prelude.simplePackage { name = "apr", version = v } ⫽ { pkgUrl = "https://www-eu.apache.org/dist/apr/apr-${prelude.showVersion v}.tar.bz2" } let apr-util = λ(v : List Natural) → prelude.simplePackage { name = "apr-util", version = v } ⫽ { pkgUrl = "https://www-eu.apache.org/dist/apr/apr-util-${prelude.showVersion v}.tar.bz2" , pkgDeps = [ prelude.unbounded "apr" ] , configureCommand = λ(cfg : types.BuildVars) → prelude.configureWithFlags [ "--with-apr=${concat cfg.linkDirs}/../" ] cfg } let libsass = λ(v : List Natural) → prelude.simplePackage { name = "libsass", version = v } ⫽ { pkgUrl = "https://github.com/sass/libsass/archive/${prelude.showVersion v}.tar.gz" , pkgBuildDeps = [ prelude.unbounded "autoconf" , prelude.unbounded "automake" , prelude.unbounded "m4" , prelude.unbounded "grep" , prelude.unbounded "sed" , prelude.unbounded "coreutils" , prelude.unbounded "libtool" ] , configureCommand = λ(cfg : types.BuildVars) → [ prelude.call { program = "autoreconf" , arguments = [ "-i" ] , environment = Some [ { var = "PATH" , value = prelude.mkPathVar cfg.binDirs } , prelude.mkAclocalPath cfg.shareDirs ] , procDir = None Text } ] # prelude.defaultConfigure cfg } let zstd = λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "zstd", version = v } ⫽ { pkgUrl = "https://github.com/facebook/zstd/releases/download/v${versionString}/zstd-${versionString}.tar.zst" , configureCommand = prelude.doNothing , installCommand = λ(cfg : types.BuildVars) → [ prelude.call { program = "make" , arguments = [ "PREFIX=${cfg.installDir}", "install" ] , environment = Some (prelude.buildEnv cfg) , procDir = None Text } , prelude.symlinkBinary "bin/zstd" ] # prelude.symlinkManpages [ { file = "share/man/man1/zstd.1", section = 1 } ] } let luarocks = λ(v : List Natural) → prelude.simplePackage { name = "luarocks", version = v } ⫽ { pkgUrl = "http://luarocks.org/releases/luarocks-${prelude.showVersion v}.tar.gz" , pkgBuildDeps = [ prelude.unbounded "lua" ] , installCommand = prelude.installWithWrappers [ "luarocks" ] } let star = λ(v : List Natural) → prelude.simplePackage { name = "star", version = v } ⫽ { pkgUrl = "https://downloads.sourceforge.net/s-tar/star-${prelude.showVersion v}.tar.bz2" , configureCommand = prelude.doNothing , installCommand = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "make" , arguments = [ "DESTDIR=${cfg.installDir}", "install" ] , environment = Some (prelude.buildEnv cfg) } ) , prelude.symlinkBinary "opt/schily/bin/star" ] # prelude.symlinkManpages [ { file = "opt/schily/share/man/man1/star.1", section = 1 } , { file = "opt/schily/share/man/man1/scpio.1" , section = 1 } , { file = "opt/schily/share/man/man1/spax.1", section = 1 } ] } let smake = λ(v : List Natural) → prelude.simplePackage { name = "smake", version = v } ⫽ { pkgUrl = "https://downloads.sourceforge.net/s-make/smake-${prelude.showVersion v}.tar.bz2" , configureCommand = prelude.doNothing , installCommand = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "make" , arguments = [ "DESTDIR=${cfg.installDir}", "install" ] , environment = Some (prelude.buildEnv cfg) } ) , prelude.symlinkBinary "opt/schily/bin/smake" ] # prelude.symlinkManpages [ { file = "opt/schily/share/man/man1/smake.1" , section = 1 } , { file = "opt/schily/share/man/man5/makefiles.5" , section = 5 } , { file = "opt/schily/share/man/man5/makerules.5" , section = 5 } ] } let busybox = λ(v : List Natural) → prelude.simplePackage { name = "busybox", version = v } ⫽ { pkgUrl = "https://www.busybox.net/downloads/busybox-${prelude.showVersion v}.tar.bz2" , configureCommand = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "make" , arguments = [ "defconfig" ] , environment = Some (prelude.buildEnv cfg) } ) ] , installCommand = λ(cfg : types.BuildVars) → [ prelude.call ( prelude.defaultCall ⫽ { program = "make" , arguments = [ "CONFIG_PREFIX=${cfg.installDir}", "install" ] , environment = Some (prelude.buildEnv cfg) } ) , prelude.symlinkBinary "bin/busybox" ] } let tarlz = λ(v : List Natural) → prelude.simplePackage { name = "tarlz", version = v } ⫽ { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/tarlz/tarlz-${prelude.showVersion v}.tar.lz" , installCommand = λ(cfg : types.BuildVars) → prelude.installWithBinaries [ "bin/tarlz" ] cfg # prelude.symlinkManpages [ { file = "share/man/man1/tarlz.1", section = 1 } ] } in [ alsa-lib [ 1, 1, 9 ] , apr [ 1, 7, 0 ] , apr-util [ 1, 6, 1 ] , at-spi-atk { version = [ 2, 33 ], patch = 2 } , at-spi-core { version = [ 2, 33 ], patch = 2 } , atk { version = [ 2, 36 ], patch = 0 } , ats [ 0, 4, 0 ] , autoconf [ 2, 69 ] , automake [ 1, 16, 2 ] , babl { version = [ 0, 1 ], patch = 68 } , bash [ 5, 0, 17 ] , bash-completion [ 2, 9 ] , binutils [ 2, 33, 1 ] , bison [ 3, 5 ] , blas [ 3, 8, 0 ] , busybox [ 1, 31, 1 ] , bzip2 [ 1, 0, 8 ] , cairo [ 1, 16, 0 ] , chickenScheme [ 5, 0, 0 ] , cimg [ 2, 7, 0 ] , clang [ 9, 0, 0 ] , clzip [ 1, 11 ] , cmake { version = [ 3, 17 ], patch = 2 } , cmark [ 0, 29, 0 ] , compositeproto [ 0, 4 ] , coreutils [ 8, 31 ] , ctags [ 5, 8 ] , curl [ 7, 66, 0 ] , damageproto [ 1, 2, 1 ] , dbus [ 1, 13, 12 ] , diffutils [ 3, 7 ] , dri2proto [ 2, 8 ] , eigen [ 3, 3, 7 ] , elfutils [ 0, 177 ] , emacs [ 26, 3 ] , exiftool [ 11, 65 ] , exiv2 [ 0, 27, 1 ] , expat [ 2, 2, 9 ] , fdk-aac [ 2, 0, 1 ] , feh [ 3, 2, 1 ] , ffmpeg [ 4, 2, 2 ] , fftw [ 3, 3, 8 ] , findutils [ 4, 7, 0 ] , fixesproto [ 5, 0 ] , fontconfig [ 2, 13, 1 ] , fossil [ 2, 10 ] , flex [ 2, 6, 3 ] , fltk [ 1, 3, 5 ] , freetype-prebuild [ 2, 10, 1 ] , freetype [ 2, 10, 1 ] , fribidi [ 1, 0, 9 ] , gawk [ 5, 0, 1 ] , gc [ 8, 0, 4 ] , gcc [ 10, 1, 0 ] , gdb [ 8, 3, 1 ] , gdk-pixbuf { version = [ 2, 38 ], patch = 1 } , gegl { version = [ 0, 4 ], patch = 16 } , gettext [ 0, 20, 2 ] , gexiv2 { version = [ 0, 12 ], patch = 0 } , ghc [ 8, 8, 3 ] , gperf [ 3, 1 ] , gperftools [ 2, 7 ] , giflib [ 5, 1, 4 ] , git [ 2, 26, 2 ] , glib { version = [ 2, 64 ], patch = 2 } , glib-networking { version = [ 2, 61 ], patch = 2 } , glproto [ 1, 4, 17 ] , glu [ 9, 0, 0 ] , json-glib { version = [ 1, 4 ], patch = 4 } , glibc [ 2, 30 ] , gmp [ 6, 2, 0 ] , gobject-introspection { version = [ 1, 62 ], patch = 0 } , gnome-doc-utils { version = [ 0, 20 ], patch = 10 } , gnupg [ 2, 2, 20 ] , gnutls { version = [ 3, 6 ], patch = [ 13 ] } , graphviz [ 2, 40, 1 ] , grep [ 3, 3 ] , gsl [ 2, 6 ] , gtk2 { version = [ 2, 24 ], patch = 32 } , gtk3 { version = [ 3, 24 ], patch = 18 } , gzip [ 1, 10 ] , harfbuzz [ 2, 6, 4 ] , htop [ 2, 2, 0 ] , hugs , icu [ 64, 2 ] , icu-le-hb [ 1, 0, 3 ] , imageMagick [ 7, 0, 8 ] , imlib2 [ 1, 5, 1 ] , inputproto [ 2, 3, 2 ] , intltool [ 0, 51, 0 ] , itstool [ 2, 0, 6 ] , jemalloc [ 5, 2, 1 ] , joe [ 4, 6 ] , json-c { version = [ 0, 13, 1 ], dateStr = "20180305" } , kbproto [ 1, 0, 7 ] , krb5 [ 1, 18 ] , lapack [ 3, 8, 0 ] , lcms2 [ 2, 9 ] , leptonica [ 1, 78, 0 ] , libarchive [ 3, 4, 3 ] , libass [ 0, 14, 0 ] , libassuan [ 2, 5, 3 ] , libatomic_ops [ 7, 6, 10 ] , libav [ 12, 3 ] , libboost [ 1, 72, 0 ] , libcds [ 2, 3, 2 ] , libcroco { version = [ 0, 6 ], patch = 12 } , libdatrie [ 0, 2, 12 ] , libdrm [ 2, 4, 96 ] , libepoxy [ 1, 5, 3 ] , libev [ 4, 25 ] , libevent [ 2, 1, 10 ] , libexif [ 0, 6, 21 ] , libffi [ 3, 3 ] , libgcrypt [ 1, 8, 5 ] , libglade { version = [ 2, 6 ], patch = 4 } , libgpgError [ 1, 37 ] , libICE [ 1, 0, 9 ] , libiconv [ 1, 16 ] , libjpeg [ 9 ] , libjpeg-turbo [ 2, 0, 4 ] , libksba [ 1, 3, 5 ] , libmp3lame [ 3, 100 ] , libmypaint [ 1, 3, 0 ] , libnettle [ 3, 5, 1 ] , libogg [ 1, 3, 4 ] , libopenjpeg [ 2, 3, 1 ] , libotf [ 0, 9, 16 ] , libpciaccess [ 0, 14 ] , libpng [ 1, 6, 37 ] , libpsl [ 0, 21, 0 ] , libpthread-stubs [ 0, 4 ] , libraw [ 0, 19, 2 ] , librsvg { version = [ 2, 48 ], patch = 4 } , libsamplerate [ 0, 1, 9 ] , libsass [ 3, 6, 2 ] , libselinux [ 3, 0 ] , libsndfile [ 1, 0, 28 ] , libsepol [ 3, 0 ] , libsodium [ 1, 0, 17 ] , libsoup { version = [ 2, 67 ], patch = 3 } , libspng [ 0, 5, 0 ] , libssh2 [ 1, 8, 0 ] , libtasn1 [ 4, 15, 0 ] , libtiff [ 4, 0, 10 ] , libtool [ 2, 4, 6 ] , libuv [ 1, 24, 0 ] , libwebp [ 1, 0, 3 ] , libSM [ 1, 2, 3 ] , libthai [ 0, 1, 28 ] , libvorbis [ 1, 3, 6 ] , libvpx [ 1, 8, 2 ] , libX11 [ 1, 6, 8 ] , libXau [ 1, 0, 9 ] , libXaw [ 1, 0, 13 ] , libXaw3d [ 1, 6, 3 ] , libxcb [ 1, 13 ] , libXcomposite [ 0, 4, 5 ] , libXdamage [ 1, 1, 5 ] , libXdmcp [ 1, 1, 3 ] , libXext [ 1, 3, 4 ] , libXfixes [ 5, 0, 3 ] , libXft [ 2, 3, 3 ] , libXi [ 1, 7, 10 ] , libXinerama [ 1, 1, 4 ] , libxml2 [ 2, 9, 9 ] , libXmu [ 1, 1, 3 ] , libXpm [ 3, 5, 12 ] , libXScrnSaver [ 1, 2, 3 ] , libxshmfence [ 1, 3 ] , libxslt [ 1, 1, 33 ] , libXrandr [ 1, 5, 2 ] , libXrender [ 0, 9, 10 ] , libXt [ 1, 2, 0 ] , libXtst [ 1, 2, 3 ] , libXxf86vm [ 1, 1, 4 ] , llvm [ 9, 0, 0 ] , lmdb [ 0, 9, 23 ] , lua [ 5, 3, 5 ] , luarocks [ 3, 2, 1 ] , lunzip [ 1, 11 ] , lz4 [ 1, 9, 2 ] , lzip [ 1, 21 ] , lziprecover [ 1, 21 ] , lzlib [ 1, 11 ] , m17n [ 1, 8, 0 ] , m4 [ 1, 4, 18 ] , make [ 4, 2, 1 ] , mako [ 1, 0, 7 ] , markupSafe [ 1, 0 ] , memcached [ 1, 5, 18 ] , mercury , mesa [ 19, 0, 5 ] , meson [ 0, 51, 2 ] , mosh [ 1, 3, 2 ] , motif [ 2, 3, 8 ] , mpc [ 1, 1, 0 ] , mpfr [ 4, 0, 2 ] , mpg123 [ 1, 25, 12 ] , musl [ 1, 1, 20 ] , nano [ 4, 3 ] , nasm [ 2, 14 ] , ncurses [ 6, 2 ] , nginx [ 1, 15, 7 ] , ninja [ 1, 9, 0 ] , node [ 12, 17, 0 ] , npth [ 1, 6 ] , nspr [ 4, 20 ] , openblas [ 0, 3, 2 ] , opencv [ 4, 2, 0 ] , openssh [ 7, 9 ] , openssl [ 1, 1, 1 ] , p11kit [ 0, 23, 16, 1 ] , pango { version = [ 1, 43 ], patch = 0 } , pari [ 2, 11, 1 ] , patch [ 2, 7 ] , pcre [ 8, 44 ] , pcre2 [ 10, 33 ] , pdfgrep [ 2, 1, 2 ] , perl5 [ 5, 30, 2 ] , phash [ 0, 9, 6 ] , pixman [ 0, 38, 4 ] , pkg-config [ 0, 29, 2 ] , poppler [ 0, 84, 0 ] , postgresql [ 12, 2 ] , protobuf [ 3, 8, 0 ] , pycairo [ 1, 18, 1 ] , pygobject { version = [ 2, 28 ], patch = 7 } , pygtk { version = [ 2, 24 ], patch = 0 } , python [ 2, 7, 17 ] , python [ 3, 8, 2 ] , qrencode [ 4, 0, 2 ] , qt { version = [ 5, 13 ], patch = 0 } , quazip [ 0, 8, 1 ] , r [ 4, 0, 0 ] , ragel [ 6, 10 ] , randrproto [ 1, 5, 0 ] , re2c [ 1, 1, 1 ] , readline [ 8, 0 ] , recordproto [ 1, 14, 2 ] , renderproto [ 0, 11, 1 ] , ruby { version = [ 2, 7 ], patch = 1 } , rustc [ 1, 42, 0 ] , scour [ 0, 37 ] , scrnsaverproto [ 1, 2, 2 ] , sdl2 [ 2, 0, 10 ] , sed [ 4, 7 ] , shared-mime-info [ 1, 10 ] , smake [ 1, 2, 5 ] , sqlite { version = [ 3, 30, 1 ] } , star [ 1, 6 ] , subversion [ 1, 12, 2 ] , swig [ 3, 0, 12 ] , swi-prolog [ 8, 0, 3 ] , tar [ 1, 32 ] , tarlz [ 0, 16 ] , tcc [ 0, 9, 27 ] , texinfo [ 6, 6 ] , tesseract [ 4, 0, 0 ] , time [ 1, 9 ] , unistring [ 0, 9, 10 ] , utf8proc [ 2, 4, 0 ] , util-linux { version = [ 2, 34 ] } , util-macros [ 1, 19, 2 ] , vala { version = [ 0, 45 ], patch = 3 } , valgrind [ 3, 15, 0 ] , vim [ 8, 2 ] , wayland [ 1, 17, 0 ] , wget [ 1, 20, 3 ] , which [ 2, 21 ] , xcb-proto [ 1, 13 ] , xextproto [ 7, 3, 0 ] , xf86vidmodeproto [ 2, 3, 1 ] , xineramaproto [ 1, 2 ] , xmlParser [ 2, 44 ] , xproto [ 7, 0, 31 ] , xtrans [ 1, 4, 0 ] , xz [ 5, 2, 5 ] , zlib [ 1, 2, 11 ] , zstd [ 1, 4, 5 ] ]