Coder Social home page Coder Social logo

src's Introduction

src

Welcome to the Kreato Linux source tree. The source tree includes everything you need to build, test, and maintain Kreato Linux. It includes multiple tools to accomplish this goal. You will find them below.

Build variables

There are a couple of build variables;

  • -d:branch: Repository branch that is gonna be used for the default repositories, is set to stable by default
  • -d:ver: Specify version manually. Is set to the major version by default.

Projects

kpkg

kpkg is a feature-complete package manager, that is a rewrite of nyaa2. It is written in Nim, and is mainly for use with Kreato Linux.
It is meant to be a much simpler to use package manager compared to the alternatives.
kpkg is heavily inspired by package managers such as kiss, dnf and pacman. Run make kpkg to build.

kreastrap

Kreastrap v3 is a rootfs building utility.
It uses kpkg internally to build Kreato Linux systems.
You can build it by running make kreastrap. The binary will be located on kreastrap/kreastrap.

purr

purr is kpkg's testing utility. You can build it by running make tests. The binary will be located on the usual out folder.

genpkglist

genpkglist is a runfile -> markdown generator. It is used to generate the the package list on the Kreato Linux website.

Build it by running make genpkglist. The binary will be located on the usual out folder.

chkupd

chkupd is a tool to check if a package is up-to-date on a kpkg repository. It also has the ability to attempt to autoupdate the package. You can build it by running make chkupd. The binary will be located on the usual out folder.

jumpstart

Jumpstart is Kreato Linux's new service manager/init system. It is similar in style to systemd. You can build it by running make jumpstart. The binary will be located on the usual out folder.

klinstaller

klinstaller is Kreato Linux's official installer. Unlike other utilities, it is written in sh. It will be available on every Kreato Linux rootfs. you can install it by running make install_klinstaller.

kreaiso

kreaiso is Kreato Linux's ISO image builder. It currently only supports rootfs' that use systemd. More support is coming soon. Build it by running make kreaiso. The binary will be located on kreaiso/kreaiso.

Contributing

Please look at the styling guide before contributing.

License

Licensed under GPLv3. Check LICENSE file for details

src's People

Contributors

kreatoo avatar getchoo avatar pandaninjas avatar

Stargazers

 avatar Veronica  avatar Firas Khalil Khana avatar OnscreenProton avatar Michał avatar Hisashiburi avatar uku avatar Amy Storm Kosman avatar Sarı Çizmeli Mehmet Ağa avatar Berk Elyesa Yıldırım avatar little ai avatar mugman avatar

Watchers

Sarı Çizmeli Mehmet Ağa avatar  avatar

src's Issues

Test suite

This should be easy. The test suite should test both internal and external functions.

LD_LIBRARY_PATH export by default

bash-5.1# echo $LD_LIBRARY_PATH

bash-5.1#

exporting LD_LIBRARY_PATH to /usr/lib by default (which the distro uses) can help packages i think. instead of importing the LD_LIBRARY_PATH in package instruction, it should come in default.

Remove flakes

isn't maintained, and only makes my job harder.
Scheduled for v4.3

Major refactor (v5?)

The project currently needs a major refactor.

The reason is I want to stop using include in favor of imports. Doing this will significantly improve the readability of the codebase.

It will also make it so its easier to use as a library.

Export extra go stuff so it doesnt attempt to use /home/_kpkg

Something like this;

    	export GOENV="/tmp/kpkg/srcdir/go/env" 
    	export GOCACHE="/tmp/kpkg/srcdir/go-build"
	export GOMODCACHE="/tmp/kpkg/srcdir/go-build-mod"
    	go env -w  GOCACHE="/tmp/kpkg/srcdir/go-build"

Or just create a homedir temporarily. I dont know.

purr: add more independent testing

Right now purr has a static list of dependencies for the dependency test, and that fails when we update the package on the repo.
It would be nice if purr has some kind of dependency handler, that is spesific to itself so it can compare both results.

Be less dependent on shell commands

One of the biggest issues on nyaa3 currently is it is using too much shell commands to function. Shell commands are expected to be used, since building will require some commands here and there, but there is excessive use of them.

Things that can be done to partially fix this issue

  • Make a wrapper for libgit2 (projects do exist that wrap libgit2 but they are unmaintained and/or doesn't work anymore)
  • Make a wrapper for libarchive
  • Rewrite modules/removeInternal.nim Done

Write a nim-based container solution for kpkg

Title says it all.

Something like Docker that can be integrated in kpkg without shell commands, and hopefully doesn't have much dependencies.

We could also make it a standalone tool just for fun!

LICENSE variable

Would work like this;
LICENSE="GPL LGPL"
Doing so will copy said licenses on /usr/share/licenses/PACKAGENAME/COPYING

runfile: NOCHKUPD variable

NOCHKUPD variable would be used for the packages that don't want to get autoupdated by chkupd. This will not disable chkupd compiling the package.

NOCHKUPD="y" to enable.

Implement sandboxing

At the very least we shouldn't build as root. This has major security issues.
I am thinking of a _nyaa user that is used to build the package for now.
We could always use something like bubblewrap to have further sandboxing later.

chkupd: be independent of Docker

Docker is nice and cool, but using our own container solution to do the job will be more efficient, cleaner, and more debuggable.

Building packages with GitHub Actions

This will be made with a self-hosted runner of course, unlike building rootfs.
This will increase transparency as how packages are built, and logs of them would be publicly available.
Also would automate a lot of tasks that are manually done right now, lowering required maintenance.

(Currently set to be done at nyaastrap v3.1.0)

kpkg: centralized place for source code

Like /var/cache/kpkg/archives, but for source code instead of binaries.
This will make rebuilds easier since the source tarball doesn't need to be redownloaded.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.