Package: pakit
Fork Me On GithubDescriptionPakit is a small python based package manager that builds programs from
source.Pakit provides:A package manager interface to install, remove & update programs.A simple Recipe specification to build programs from source code.Premade and testedrecipesmaintained by
pakit.When you install a program Pakit will…download the source into a silo inpakit.paths.sourceand build
it.install the program into a silo underpakit.paths.prefix.link the silo to thepakit.paths.linkdirectory.Want a longer explanation? See theOverviewsection.DemoThe following demonstration covers most of the basic functions.Try thedemoyourself after installing pakit.Install PakitTo use pakit:Ensure you have abuild environmentfor compiling the programs.Fetch pakit viapiporgithub.Modify your$PATH.Build EnvironmentAt this point pakit has two limitations to be aware of:Relies on user’s build environment.Pakit recipes can only depend on things pakit can build, currently
limited pool. User needs to install any dependencies pakit can’t
build.To use pakit, I suggest you have…c++ build environmentgitmercurialanything a recipe depends on that pakit can’t buildFor Ubuntu install these packages:sudoapt-getinstallbuild-essentialautomakeautoconfpython-pipgitmercurialliblzma-devlibevent-devncurses-devGithubFetch the latest from the source. Works unless the build badge says
failing.gitclonehttps://github.com/starcraftman/pakit.gitexportPATH=$(pwd)/pakit/bin:$PATHpythonpakit/setup.pydepsreleasepipInstall the latest stable pip release. It might be old but working.sudo-HpipinstallpakitPATHBy default, pakit will install programs underpakit.paths.prefixand
link everything topakit.paths.link. To use the built programs,pakit.paths.link/bin must be on your $PATH. So for example, with the
default value ofpakit.paths.link, you would need to:exportPATH=/tmp/pakit/links/bin:$PATHThe above exports will only last for the terminal session. To make them
permanent for bash, edit$HOME/.bashrcor$HOME/.bash_aliases.More Information>From inside the pakit source folder:Help:pakit--helpConsult man:man pakitRead pydocs:pydoc pakitorpydoc pakit.shelland so on…Install all development packages:python setup.py depsRun the test suite:toxSeeWafflefor things I’m
working on.ReadDESIGN.mdfor details on design. A bit out of date.ContributorsJeremy Pallats/starcraft.man (that is me)OverviewBasically I want to make a universal package manager on python. Runs
everywhere, builds anything and handles dependencies. A bit like a meta
build tool tying arbitrary recipes together. At the end of the day, will
probably resemble Homebrew at least a little.Importantly, the recipes should be configurable via a single YAML file
that users can modify without changing the recipes. Say you want to pass
particular flags to thevimoragbuild, you’d just put them in
an entry in the config.Expected Feature Overview:Python only, with minimal dependencies.Package manager interface, install remove and update recipes.100% tested, framework & supported recipes.Should work on any POSIX system, emphasis on Linux.Simple recipe specification.Configuration via a single YAML file.Available viapip.Traceability via logs for every command.Premade & tested recipes available for use.SeeDESIGN.mdfor more details.RoadmapFor accurate plan, see waffle.io link above. Just a rough guess of what
I should be implementing when.0.1[x] Implement basic tasks to install & remove ‘ag’ program.[x] Support Git & Hg repositories.[x] Simple config from.pakit.yml.[x] Upgrade logic.[x] User defined recipe locations via config.[x] Pick a license.[x] Pip/Wheel upload.0.2[x] Add archive support, supports download, hashing & extracting.[x] Tar (tarfile)[x] Zip (zipfile)[x] tar.xz (xz command)[x] Rar (rar command)[x] 7z (7z command)[x] Add list & searching support.[x] Python 3 support[x] Better error handling, rollback[x] Improve Command, timeout & input file[x] Investigate alternatives/improvements to RecipeDB0.3[ ] Make a website and promote. Maybe use github pages.[x] Dependency logic between recipes tasks.[x] Research best approach & do small design.[x] Create Digraph Structure (likely required).[x] Create Recipe specification & implement.[ ] Handle missing commands inside recipes. For example, recipe needs
git but git unavailable.[x] Separate recipes from pakit core.[ ] Move to pakit/pakit.pakit0.4[ ] Parallelism, envisioned as some task based dependency.Beyond[ ] Create tool to convert homebrew ruby formula. Maybe?