cpkg 0.2.3.0 → 0.2.3.1
raw patch · 7 files changed
+197/−51 lines, 7 filesdep ~dhalldep ~hspec-megaparsec
Dependency ranges changed: dhall, hspec-megaparsec
Files
- CHANGELOG.md +4/−0
- README.md +0/−2
- cpkg.cabal +8/−2
- dhall/cpkg-prelude.dhall +7/−1
- pkgs/pkg-set.dhall +155/−42
- src/Package/C/Build.hs +1/−0
- src/Package/C/Build/Tree.hs +22/−4
CHANGELOG.md view
@@ -1,5 +1,9 @@ # cpkg +## 0.2.3.1++ * Now works with Dhall 1.25.0 on a sufficiently new GHC+ ## 0.2.3.0 * Add `garbage-collect` subcommand
README.md view
@@ -1,7 +1,5 @@ # cpkg -[](https://travis-ci.org/vmchale/cpkg)-[](https://ci.appveyor.com/project/vmchale/cpkg) [](https://matrix.hackage.haskell.org/package/cpkg) [](http://hackage.haskell.org/package/cpkg) [](https://hackage.haskell.org/package/cpkg)
cpkg.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: cpkg-version: 0.2.3.0+version: 0.2.3.1 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018-2019 Vanessa McHale@@ -72,7 +72,6 @@ build-depends: base >=4.3 && <5, containers >=0.6.0.0,- dhall >=1.23.0, text -any, temporary -any, bytestring -any,@@ -98,6 +97,13 @@ libarchive >=1.0.4.0, dir-traverse >=0.2.1.0, composition-prelude >=1.5.2.0++ if impl(ghc <8.4)+ build-depends:+ dhall >=1.23.0 && <1.25.0+ else+ build-depends:+ dhall >=1.23.0 if (flag(development) && impl(ghc <=8.2)) ghc-options: -Werror
dhall/cpkg-prelude.dhall view
@@ -352,10 +352,15 @@ concatMapText Text (λ(dir : Text) → "${dir}:") binDirs in +let unixPath =+ λ(binDirs : List Text) →+ { var = "PATH", value = mkPathVar binDirs ++ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }+in+ let defaultPath = λ(cfg : types.BuildVars) → if isUnix cfg.buildOS- then [ { var = "PATH", value = mkPathVar cfg.binDirs ++ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" } ] : List types.EnvVar+ then [ unixPath cfg.binDirs ] : List types.EnvVar else [] : List types.EnvVar -- FIXME: handle non-unix case in @@ -1235,4 +1240,5 @@ , configureWithPatches = configureWithPatches , configureWithPatch = configureWithPatch , installPrefix = installPrefix+, unixPath = unixPath }
pkgs/pkg-set.dhall view
@@ -441,7 +441,7 @@ let valgrind = λ(v : List Natural) → prelude.simplePackage { name = "valgrind", version = v } ⫽- { pkgUrl = "http://www.valgrind.org/downloads/valgrind-${prelude.showVersion v}.tar.bz2"+ { pkgUrl = "https://sourceware.org/pub/valgrind/valgrind-${prelude.showVersion v}.tar.bz2" , installCommand = prelude.installWithBinaries [ "bin/valgrind" ] , configureCommand = prelude.configureMkExes [ "auxprogs/make_or_upd_vgversion_h" ] }@@ -770,6 +770,7 @@ λ(v : List Natural) → prelude.makeGnuExe { name = "autoconf", version = v } ⫽ { pkgBuildDeps = [ prelude.lowerBound { name = "m4", lower = [1,4,16] } ]+ -- m4 runDep? , installCommand = prelude.installWithBinaries [ "bin/autoconf", "bin/autoheader", "bin/autom4te", "bin/autoreconf" ] } in@@ -1344,13 +1345,13 @@ in let util-linux =- λ(x : { version : List Natural, patch : Natural }) →+ λ(x : { version : List Natural }) → let versionString = prelude.showVersion x.version in- let fullVersion = versionString ++ "." ++ Natural/show x.patch+ let fullVersion = versionString in - prelude.simplePackage { name = "util-linux", version = prelude.fullVersion x } ⫽+ 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) →@@ -1381,11 +1382,13 @@ 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 "flex" "bison" ]+ , pkgBuildDeps = [ prelude.unbounded "meson" ] , pkgDeps = [ prelude.lowerBound { name = "glib", lower = [2,58,0] } ] , installCommand = λ(cfg : types.BuildVars) →- [ prelude.mkExe "build/tools/g-ir-scanner" ]+ [ 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 } in@@ -2418,7 +2421,21 @@ in let babl =- mkGimpPackage "babl"+ λ(x : { version : List Natural, patch : Natural }) →+ let versionString = prelude.showVersion x.version+ in+ 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+ } in let gegl =@@ -2429,6 +2446,7 @@ , prelude.unbounded "json-glib" ] , configureCommand = prelude.preloadCfg+ , pkgStream = False } in @@ -2446,6 +2464,7 @@ , prelude.unbounded "libjpeg-turbo" , prelude.unbounded "libpng" ]+ , pkgBuildDeps = [ prelude.unbounded "gettext" ] , installCommand = prelude.ninjaInstallWithPkgConfig (prelude.mesonMoves [ "json-glib-1.0.pc" ]) }@@ -3101,24 +3120,25 @@ } in +-- LLVM builds run out of RAM on my 64GB machine+let slowBuild =+ λ(cfg : types.BuildVars) →+ [ prelude.call { program = "cmake"+ , arguments = [ "--build", ".", "--config", "Release", "--", "-j", "3" ]+ , environment = prelude.defaultEnv+ , procDir = Some "build"+ }+ ]+in+ let llvm = λ(v : List Natural) →- let llvmBuild =- λ(cfg : types.BuildVars) →- [ prelude.call { program = "cmake"- , arguments = [ "--build", ".", "--config", "Release", "--", "-j", "3" ]- , environment = prelude.defaultEnv- , procDir = Some "build"- }- ]- in- 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"+ { pkgUrl = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${versionString}/llvm-${versionString}.src.tar.xz" , pkgSubdir = "llvm-${versionString}.src" , pkgStream = False- , buildCommand = llvmBuild+ , buildCommand = slowBuild } in @@ -3545,6 +3565,96 @@ } in +let glib-networking =+ λ(x : { version : List Natural, patch : Natural }) →+ let versionString = prelude.showVersion x.version+ in+ 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"+ ]+ }+in++let libwebp =+ λ(v : List Natural) →+ prelude.simplePackage { name = "libwebp", version = v } ⫽+ { pkgUrl = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.3.tar.gz" }+in++let rustc =+ λ(v : List Natural) →+ let versionString = prelude.showVersion v in+ prelude.simplePackage { name = "rustc", version = v } ⫽+ -- FIXME: other architectures+ { 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" ]+ })+ ]+ , pkgStream = False+ }+in++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] }+ ]+ }+in++let ats =+ λ(v : List Natural) →++ let versionString = prelude.showVersion v in++ 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).value}'"+ ]+ , environment = Some (prelude.buildEnv cfg)+ })+ ]+ in++ prelude.simplePackage { name = "ats", version = v } ⫽+ { pkgUrl = "http://ats-lang.sourceforge.net/IMPLEMENT/Postiats/ATS2-Postiats-${versionString}.tgz"+ , pkgSubdir = "ATS2-Postiats-gmp-${versionString}"+ , pkgDeps = [ prelude.unbounded "gmp" ]+ , buildCommand = atsBuild+ , installCommand = prelude.installWithBinaries [ "bin/patsopt" ]+ , pkgStream = False+ }+in++-- https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-x86_64-deb9-linux.tar.xz -- http://www.linuxfromscratch.org/lfs/view/development/chapter06/findutils.html -- TODO: musl-ghc? -- https://hub.darcs.net/raichoo/hikari@@ -3558,7 +3668,8 @@ , at-spi-atk { version = [2,33], patch = 2 } , at-spi-core { version = [2,33], patch = 2 } , atk { version = [2,33], patch = 3 }-, babl { version = [0,1], patch = 60 }+, ats [0,3,13]+, babl { version = [0,1], patch = 68 } , binutils [2,32] , bison [3,3,1] , blas [3,8,0]@@ -3566,7 +3677,7 @@ , cairo [1,16,0] , chickenScheme [5,0,0] , cimg [2,6,6]-, cmake { version = [3,13], patch = 4 }+, cmake { version = [3,15], patch = 1 } , compositeproto [0,4] , coreutils [8,31] , ctags [5,8]@@ -3596,14 +3707,15 @@ , gcc [9,1,0] , gdb [8,2] , gdk-pixbuf { version = [2,38], patch = 1 }-, gegl { version = [0,4], patch = 12 }+, gegl { version = [0,4], patch = 16 } , gettext [0,20,1] , gexiv2 { version = [0,12], patch = 0 } , gperf [3,1] , gperftools [2,7] , giflib [5,1,4] , git [2,19,2]-, glib { version = [2,60], patch = 4 }+, glib { version = [2,61], patch = 1 }+, glib-networking { version = [2,61], patch = 2 } , glproto [1,4,17] , glu [9,0,0] , json-glib { version = [1,4], patch = 4 }@@ -3612,14 +3724,14 @@ , gobject-introspection { version = [1,60], patch = 2 } , gnome-doc-utils { version = [0,20], patch = 10 } , gnupg [2,2,16]-, gnutls { version = [3,6], patch = 8 }+, gnutls { version = [3,6], patch = 9 } , graphviz [2,40,1] , grep [3,3] , gsl [2,5] , gtk2 { version = [2,24], patch = 32 }-, gtk3 { version = [3,24], patch = 9 }+, gtk3 { version = [3,24], patch = 10 } , gzip [1,9]-, harfbuzz [2,5,1]+, harfbuzz [2,5,3] , htop [2,2,0] , icu [64,2] , icu-le-hb [1,0,3]@@ -3657,25 +3769,27 @@ , libjpeg-turbo [2,0,2] , libksba [1,3,5] , libmypaint [1,3,0]-, libnettle [3,4,1]+, libnettle [3,5,1]+, libopenjpeg [2,3,1]+, libotf [0,9,16] , libpciaccess [0,14] , libpng [1,6,35] , libpsl [0,21,0] , libpthread-stubs [0,4]-, libopenjpeg [2,3,1]-, libotf [0,9,16] , libraw [0,19,2]+, librsvg { version = [2,45], patch = 8 } , libsamplerate [0,1,9] , libselinux [2,8] , libsndfile [1,0,28] , libsepol [2,8] , libsodium [1,0,17]-, libsoup { version = [2,67], patch = 1 }+, libsoup { version = [2,67], patch = 3 } , libssh2 [1,8,0]-, libtasn1 [4,13]+, libtasn1 [4,14] , libtiff [4,0,10] , libtool [2,4,6] , libuv [1,24,0]+, libwebp [1,0,3] , libSM [1,2,3] , libthai [0,1,28] , libX11 [1,6,8]@@ -3691,7 +3805,7 @@ , libXft [2,3,3] , libXi [1,7,10] , libXinerama [1,1,4]-, libxml2 [2,9,8]+, libxml2 [2,9,9] , libXmu [1,1,3] , libXpm [3,5,12] , libXScrnSaver [1,2,3]@@ -3702,8 +3816,7 @@ , libXt [1,2,0] , libXtst [1,2,3] , libXxf86vm [1,1,4]-, llvm [8,0,0]-, llvm [7,1,0] ⫽{ pkgName = "llvm-7.1" }+, llvm [8,0,1] , lmdb [0,9,23] , lua [5,3,5] , lz4 [1,9,1]@@ -3728,7 +3841,6 @@ , nginx [1,15,7] , ninja [1,9,0] , node [10,15,1]-, node [8,15,1] ⫽ { pkgName = "node8" } , npth [1,6] , nspr [4,20] , openblas [0,3,2]@@ -3746,14 +3858,14 @@ , phash [0,9,6] , pixman [0,38,4] , pkg-config [0,29,2]-, poppler [0,77,0]+, poppler [0,79,0] , postgresql [11,1] , protobuf [3,8,0] , pycairo [1,18,1] , pygobject { version = [2,28], patch = 7 } , pygtk { version = [2,24], patch = 0 } , python [2,7,16]-, python [3,7,3]+, python [3,7,4] , qrencode [4,0,2] , qt { version = [5,13], patch = 0 } , quazip [0,8,1]@@ -3765,9 +3877,10 @@ , recordproto [1,14,2] , renderproto [0,11,1] , ruby { version = [2,6], patch = 3 }+, rustc [1,36,0] , scour [0,37] , scrnsaverproto [1,2,2]-, sdl2 [2,0,9]+, sdl2 [2,0,10] , sed [4,7] , shared-mime-info [1,10] , sqlite { year = 2018, version = [3,26,0] }@@ -3778,12 +3891,12 @@ , tesseract [4,0,0] , time [1,9] , unistring [0,9,10]-, util-linux { version = [2,33], patch = 1 }+, util-linux { version = [2,34] } , util-macros [1,19,2]-, vala { version = [0,43], patch = 6 }-, valgrind [3,14,0]+, vala { version = [0,45], patch = 3 }+, valgrind [3,15,0] , vim [8,1]-, wayland [1,16,0]+, wayland [1,17,0] , wget [1,20,3] , which [2,21] , xcb-proto [1,13]
src/Package/C/Build.hs view
@@ -181,6 +181,7 @@ liftIO $ createDirectoryIfMissing True pkgDir withSystemTempDirectory "cpkg" $ \p -> do+ -- diagnosticDirectory "cpkg" $ \p -> do putDiagnostic ("Setting up temporary directory in " ++ p)
src/Package/C/Build/Tree.hs view
@@ -67,11 +67,29 @@ includeDir = pkgDir </> "include" dataDir = pkgDir </> "share" binDir = pkgDir </> "bin"- links = linkDir64 : linkDir : ls- bins = binDir : bs- shares = dataDir : ds - -- TODO: do this for all of them?+ binExists <- liftIO (doesDirectoryExist binDir)+ let bins = if binExists+ then binDir : bs+ else bs++ shareExists <- liftIO (doesDirectoryExist dataDir)+ let shares = if shareExists+ then dataDir : ds+ else ds++ linkExists <- liftIO (doesDirectoryExist linkDir)+ link64Exists <- liftIO (doesDirectoryExist linkDir64)++ let linkAppend = if linkExists+ then (linkDir :)+ else id+ let link64Append = if link64Exists+ then (linkDir64 :)+ else id++ let links = link64Append (linkAppend ls)+ includeExists <- liftIO (doesDirectoryExist includeDir) let includes = if includeExists then includeDir : is