Setting up development area


Requirements


  • ( REQUIRED!!! ) For compiling and testing i highly recommend to use Evolinx system itself
    • Use VM if you dont want to use Evolinx natively
  • Good enough Desktop/Laptop to compile big projects
  • Some common sense to understand things and how do they work
  • Probably custom repo locally or globally to keep stuff up and organized

Setting up development area with tools


Choosing a place to develop in
  • I strongly suggest to make separate ( Non admin ) user and use that user for development ( this keeps things clean )
  • Now lets keep going ( guessing that new user is made and logged into )
  1. Open terminal and go into ~ ( home dir )
$ cd ~/Desktop

$ mkdir -p EVOLINX && cd EVOLINX
  1. Lets install required packages so we can go straight into cloning afterwards
    • This step needs sudo access so be sure to edit /etc/sudoers file ( if not done earlier )
$ bottle -Syu --needed base-devel make cmake docker ninja meson llvm clang bash libisofs libisoburn fakeroot repo
  1. Cloning repos and running basic setup
    • folder called tools/ will be the main head of the system for development
    • it will
      • compile packages ( natively )
      • compile packages ( in docker env, so packages are clean compiled with no broken linkage to native system libs that dev may forgot to list in PKGBUILD )
      • make iso images
// Initializing the project
$ repo init -u https://git.martinvlba.eu/Evolinx/internal_manifest.git -b master

// Sync the env
$ repo sync --force-sync

$ ln -sf build/toolset/envsetup.sh envsetup
  1. Now lets see what the toolset can do
    • Lets run help menu and see what it can provide
$ ./envsetup -h
  • Heres a reference image how the output should look like

evo_help

  1. Now lets test compile one of the packages as a test
    • Lets say to you made changes to bottle and you wanna test it
    • For that you made a fork in github and pushed changes there
    • Now to test compile you need to change PKGBUILD src URL
    • now run this in EVOLINX folder ( it will be the root folder for everything )
$ kwrite internal/pkgbuild/x86_64/core/bottle/PKGBUILD
# And change
source=(git+https://git.martinvlba.eu/Evolinx/bottle.git#commit=$commitid)
# to
source=(git+https://git.martinvlba.eu/newuser/bottle.git#commit=$commitid)
  • Now run this to test compile

    • -d : Will trigger the tool to use docker container that will clean compile packages
    • -b: Will tell the tool to build package
    • For further i suggest to read -h or --help ( it will be more detailed )
    • $ ./envsetup -d -b bottle
  • If it compiled as needed then output of the pkg will locate in out/pkgs/x86_64/core/

  • Also you will see this, it means that

    • Container that was used to compile bottle gets reset to original state and only if compile of bottle was success
      • because compiling packages in docker gets bloated by that specific pkg dep list that is needed for compiling this pkg
      • and if you compile other pkg also in that dirty container then that second pkg may get linked to old pkg dep that we don't want ( breaks everything " segmentation fault's" )

evo_docker_reset