cpkg 0.2.3.2 → 0.2.3.3
raw patch · 6 files changed
+139/−19 lines, 6 filesdep ~dhall
Dependency ranges changed: dhall
Files
- CHANGELOG.md +4/−0
- app/Main.hs +13/−0
- cpkg.cabal +1/−1
- pkgs/pkg-set.dhall +110/−17
- src/Package/C.hs +1/−0
- src/Package/C/PackageSet.hs +10/−1
CHANGELOG.md view
@@ -1,5 +1,9 @@ # cpkg +## 0.2.3.3++ * Add `find` subcommand+ ## 0.2.3.2 * Add `.lz` support
app/Main.hs view
@@ -12,6 +12,9 @@ cpkgVersion :: V.Version cpkgVersion = P.version +-- dhallStandardVersion+-- dhallVersion+ data DumpTarget = Linker { _pkgGet :: String } | Compiler { _pkgGet :: String } | PkgConfig { _pkgGets :: [String] }@@ -26,6 +29,7 @@ | Dump { _dumpTarget :: DumpTarget, _host :: Maybe Platform } | DumpCabal { _pkgGetsCabal :: [String], _host :: Maybe Platform } | List { _packageSet :: Maybe String }+ | Find { _findPkg :: String } | Nuke | NukeCache | GarbageCollect { _verbosity :: Verbosity }@@ -72,6 +76,7 @@ <> command "dump" (info dump (progDesc "Display flags to link against a particular library")) <> command "dump-cabal" (info dumpCabal (progDesc "Display flags to use with cabal new-build")) <> command "list" (info list (progDesc "List all available packages"))+ <> command "find" (info find (progDesc "Find a package and list information")) <> command "nuke" (info (pure Nuke) (progDesc "Remove all globally installed libraries")) <> command "nuke-cache" (info (pure NukeCache) (progDesc "Remove cached soure tarballs")) <> command "garbage-collect" (info garbageCollect' (progDesc "Garbage collect redundant packages"))@@ -80,6 +85,13 @@ list :: Parser Command list = List <$> packageSet +find :: Parser Command+find = Find+ <$> argument str+ (metavar "PACKAGE"+ <> help "Name of package"+ )+ ftypeCompletions :: String -> Mod ArgumentFields a ftypeCompletions ext = completer . bashCompleter $ "file -X '!*." ++ ext ++ "' -o plusdirs" @@ -189,6 +201,7 @@ removeDirectoryRecursive pkgDir run NukeCache = cleanCache run (List pkSet) = displayPackageSet pkSet+run (Find pk) = displayPackage pk run (GarbageCollect v) = runPkgM v garbageCollect main :: IO ()
cpkg.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: cpkg-version: 0.2.3.2+version: 0.2.3.3 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018-2019 Vanessa McHale
pkgs/pkg-set.dhall view
@@ -1,4 +1,4 @@-{- Dhall prelue imports -}+ - Dhall prelue imports -} let concatMapSep = https://raw.githubusercontent.com/dhall-lang/dhall-lang/9f259cd68870b912fbf2f2a08cd63dc3ccba9dc3/Prelude/Text/concatMapSep in @@ -1041,12 +1041,19 @@ in prelude.simplePackage { name = "imagemagick", version = v } ⫽- { pkgUrl = "https://imagemagick.org/download/ImageMagick-${versionString}-21.tar.xz"- , pkgSubdir = "ImageMagick-${versionString}-21"+ { pkgUrl = "https://imagemagick.org/download/ImageMagick-${versionString}-64.tar.xz"+ , pkgSubdir = "ImageMagick-${versionString}-64"+ , 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.symlink "include/ImageMagick-${major}/MagickWand" "include/wand"+ , prelude.symlinkBinary "bin/convert"+ ] } in @@ -1375,7 +1382,9 @@ else [] : List Text in prelude.configureWithFlags ([ "--disable-makeinstall-chown", "--disable-bash-completion"] # crossFlags) cfg- , pkgDeps = [ prelude.unbounded "ncurses" ]+ , pkgDeps = [ prelude.unbounded "ncurses"+ , prelude.unbounded "pcre2"+ ] } in @@ -2238,7 +2247,7 @@ let gsl = λ(v : List Natural) → prelude.simplePackage { name = "gsl", version = v } ⫽- { pkgUrl = "http://gnu.mirror.constant.com/gsl/gsl-${prelude.showVersion v}.tar.gz" }+ { pkgUrl = "http://mirror.keystealth.org/gnu/gsl/gsl-${prelude.showVersion v}.tar.gz" } in let postgresql =@@ -3138,7 +3147,7 @@ let slowBuild = λ(cfg : types.BuildVars) → [ prelude.call { program = "cmake"- , arguments = [ "--build", ".", "--config", "Release", "--", "-j", "3" ]+ , arguments = [ "--build", ".", "--config", "Release", "--", "-j", "2" ] , environment = prelude.defaultEnv , procDir = Some "build" }@@ -3149,7 +3158,7 @@ λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "clang", version = v } ⫽ prelude.cmakePackage ⫽- { pkgUrl = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${versionString}/cfe-${versionString}.src.tar.xz"+ { pkgUrl = "http://releases.llvm.org/${versionString}/cfe-${versionString}.src.tar.xz" , pkgSubdir = "cfe-${versionString}.src" , pkgStream = False , buildCommand = slowBuild@@ -3168,7 +3177,7 @@ λ(v : List Natural) → let versionString = prelude.showVersion v in prelude.simplePackage { name = "llvm", version = v } ⫽ prelude.cmakePackage ⫽- { pkgUrl = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${versionString}/llvm-${versionString}.src.tar.xz"+ { pkgUrl = "http://releases.llvm.org/${versionString}/llvm-${versionString}.src.tar.xz" , pkgSubdir = "llvm-${versionString}.src" , pkgStream = False , buildCommand = slowBuild@@ -3366,9 +3375,30 @@ { pkgUrl = "https://ffmpeg.org/releases/ffmpeg-${prelude.showVersion v}.tar.bz2" , pkgBuildDeps = [ prelude.unbounded "nasm" ] -- TODO: cross-compile- , configureCommand = prelude.configureWithFlags [ "--enable-shared" ]- , installCommand = prelude.installWithBinaries [ "bin/ffmpeg" ]- , pkgDeps = [ prelude.unbounded "bzip2" ]+ , 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"+ ] , pkgStream = False } in@@ -3802,6 +3832,8 @@ -- http://www.linuxfromscratch.org/blfs/view/svn/general/unzip.html -- https://github.com/jsoftware/jsource/archive/j807-release.tar.gz -- https://codeload.github.com/boyerjohn/rapidstring/zip/master+-- https://github.com/facebook/zstd/releases/download/v1.4.3/zstd-1.4.3.tar.gz+-- http://caca.zoy.org/attachment/wiki/toilet/toilet-0.3.tar.gz let cmark = λ(v : List Natural) →@@ -3834,6 +3866,61 @@ } in +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}"+ }+in++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] }+ ]+ }+in++let libogg =+ λ(v : List Natural) →+ prelude.simplePackage { name = "libogg", version = v } ⫽+ { pkgUrl = "https://downloads.xiph.org/releases/ogg/libogg-${prelude.showVersion v}.tar.xz" }+in++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" ]+ }+in++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"+ ]+ , pkgStream = False+ }+in++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" }+in+ [ alsa-lib [1,1,9] , at-spi-atk { version = [2,33], patch = 2 } , at-spi-core { version = [2,33], patch = 2 }@@ -3851,7 +3938,7 @@ , cairo [1,16,0] , chickenScheme [5,0,0] , cimg [2,7,0]-, clang [8,0,1]+, clang [9,0,0] , cmake { version = [3,15], patch = 2 } , cmark [0,29,0] , compositeproto [0,4]@@ -3867,8 +3954,9 @@ , emacs [26,3] , exiv2 [0,27,1] , expat [2,2,7]+, fdk-aac [2,0,0] , feh [3,2,1]-, ffmpeg [4,2]+, ffmpeg [4,2,1] , fftw [3,3,8] , findutils [4,6,0] , fixesproto [5,0]@@ -3905,7 +3993,7 @@ , gnutls { version = [3,6], patch = 9 } , graphviz [2,40,1] , grep [3,3]-, gsl [2,5]+, gsl [2,6] , gtk2 { version = [2,24], patch = 32 } , gtk3 { version = [3,24], patch = 10 } , gzip [1,9]@@ -3928,6 +4016,7 @@ , lcms2 [2,9] , leptonica [1,78,0] , libarchive [3,4,0]+, libass [0,14,0] , libassuan [2,5,3] , libatomic_ops [7,6,10] , libav [12,3]@@ -3949,8 +4038,10 @@ , libjpeg [9] , libjpeg-turbo [2,0,3] , 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]@@ -3974,6 +4065,8 @@ , libwebp [1,0,3] , libSM [1,2,3] , libthai [0,1,28]+, libvorbis [1,3,6]+, libvpx [1,8,1] , libX11 [1,6,8] , libXau [1,0,9] , libXaw [1,0,13]@@ -3998,7 +4091,7 @@ , libXt [1,2,0] , libXtst [1,2,3] , libXxf86vm [1,1,4]-, llvm [8,0,1]+, llvm [9,0,0] , lmdb [0,9,23] , lua [5,3,5] , lz4 [1,9,1]@@ -4010,7 +4103,7 @@ , make [4,2,1] , mako [1,0,7] , markupSafe [1,0]-, memcached [1,5,12]+, memcached [1,5,18] , mercury , mesa [19,0,5] , meson [0,51,1]
src/Package/C.hs view
@@ -38,6 +38,7 @@ , getPkgs -- * Packaging , displayPackageSet+ , displayPackage , allPackages -- * Parsers , parseTriple
src/Package/C/PackageSet.hs view
@@ -5,11 +5,13 @@ , PackId , pkgsM , displayPackageSet+ , displayPackage ) where import CPkgPrelude import Data.Containers.ListUtils import Data.List (intersperse)+import Data.List (find) import qualified Data.Map as M import qualified Data.Text as T import Data.Text.Prettyprint.Doc@@ -28,7 +30,14 @@ displayPackageSet :: Maybe String -> IO () displayPackageSet = putDoc . pretty <=< defaultPackageSetDhall -newtype PackageSetDhall = PackageSetDhall [ Dhall.CPkg ]+displayPackage :: String -> IO ()+displayPackage str = do+ pk <- find (\ps -> T.unpack (Dhall.pkgName ps) == str) . listPackages <$> defaultPackageSetDhall Nothing+ case pk of+ Just p -> putDoc (pretty p <> hardline)+ Nothing -> unfoundPackage++newtype PackageSetDhall = PackageSetDhall { listPackages :: [ Dhall.CPkg ] } deriving Interpret instance Pretty PackageSetDhall where