Blame README

Ivan Mahonin ec013d
Install:
Ivan Mahonin e14835
Ivan Mahonin ec013d
run all commands from root (as superuser)
Ivan Mahonin e14835
Ivan Mahonin e14835
Ivan Mahonin ec013d
install dependency packages:
Ivan Mahonin 850862
    you need: bash sudo uuid-runtime aufs-tools fuse genisoimage mutt
Ivan Mahonin c247e0
    for apt based OS use command:
Ivan Mahonin 850862
        apt-get install bash sudo uuid-runtime aufs-tools fuse genisoimage mutt
Ivan Mahonin e14835
Ivan Mahonin e14835
Ivan Mahonin ec013d
create and edit config file:
Ivan Mahonin ec013d
    use config.sh.blank as a base:
Ivan Mahonin ec013d
        cp config.sh.blank config.sh
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    we use config (some_path is a fake):
Ivan Mahonin ec013d
        PACKET_BUILD_DIR=/some_path/builder-packet
Ivan Mahonin ec013d
        chrooter() {
Ivan Mahonin ec013d
            export CHROOTER_PREFIX="/some_path_to_mount"
Ivan Mahonin ec013d
            $BASE_DIR/chrooter/chrooter.sh $@
Ivan Mahonin ec013d
        }
Ivan Mahonin ec013d
        OPENTOONZ_TESTING_TAG="morevna"
Ivan Mahonin 850862
        export EMAIL_FAILED="e@mail.org"
Ivan Mahonin 850862
        export EMAIL_SUCCESS="$EMAIL_FAILED"
Ivan Mahonin 850862
        export EMAIL_SUBJECT="builder task finished"
Ivan Mahonin 850862
Ivan Mahonin 850862
    for emails configure ~/.muttrc, for example:
Ivan Mahonin 850862
        set smtp_url=smtps://login:password@server.org
Ivan Mahonin 540c27
        set from="My Mail Bot <e@mail.org>"
Ivan Mahonin 850862
        set record=
Ivan Mahonin 850862
    see "background tasks" below
Ivan Mahonin ec013d
Ivan Mahonin ec013d
Ivan Mahonin ec013d
download virtual environment:
root 343dc6
    you may download our (we are Morevna Project team) os images from:
root 343dc6
        https://coolbug.org/downloads/morevna/builder-images/
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    you need two files:
Ivan Mahonin 9a8dee
        https://coolbug.org/downloads/morevna/builder-images/morevnaproject_build-debian-7-32.iso
Ivan Mahonin 9a8dee
        https://coolbug.org/downloads/morevna/builder-images/morevnaproject_build-debian-7-64.iso
Ivan Mahonin ec013d
    approximate 6.5Gb, place both into chrooter/images/
Ivan Mahonin ec013d
Ivan Mahonin ec013d
Ivan Mahonin ec013d
build virtual environment:
Ivan Mahonin ec013d
    if you does not want to download os images you can build it
Ivan Mahonin ec013d
Ivan Mahonin 5df1de
    before begin you may configure debian mirror in files:
Ivan Mahonin 5df1de
        env/debian-7-32bit/files/sources.list
Ivan Mahonin 5df1de
        env/debian-7-64bit/files/sources.list
Ivan Mahonin 9a8dee
        env/debian-7-32bit/build-iso.sh into variable apt_mirror
Ivan Mahonin 9a8dee
        env/debian-7-64bit/build-iso.sh into variable apt_mirror
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    here you still can download a base debian images from:
Ivan Mahonin 9a8dee
        https://coolbug.org/downloads/morevna/builder-images/debian-wheezy-i386.iso
Ivan Mahonin 9a8dee
        https://coolbug.org/downloads/morevna/builder-images/debian-wheezy-amd64.iso
Ivan Mahonin ec013d
    approximate 500Mb, place first into env/debian-7-32bit and second into env/debian-7-64bit
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    or build these images from scratch by debootstrap
Ivan Mahonin 9a8dee
    install debootstarp:
Ivan Mahonin 9a8dee
        apt-get install debootstrap
Ivan Mahonin ec013d
    and build base debian images
Ivan Mahonin ec013d
        cd env/debian-7-32bit # go to env/debian-7-32bit
Ivan Mahonin 9a8dee
        ./build-iso.sh
Ivan Mahonin ec013d
        cd ../debian-7-64bit  # go to env/debian-7-64bit
Ivan Mahonin 9a8dee
        ./build-iso.sh
Ivan Mahonin ec013d
        cd ../..              # go back
Ivan Mahonin 9a8dee
    after that will appear two new files:
Ivan Mahonin 9a8dee
        env/debian-7-32bit/debian-wheezy-i386.iso
Ivan Mahonin 9a8dee
        env/debian-7-64bit/debian-wheezy-amd64.iso
Ivan Mahonin 9a8dee
Ivan Mahonin ec013d
Ivan Mahonin 9a8dee
    now when you have files debian-wheezy-XXXX.iso you can build os images for builder
Ivan Mahonin ec013d
    it's a long process because it will build GCC and MinGW from scratch
Ivan Mahonin ec013d
    run commands:
Ivan Mahonin ec013d
        cd env/debian-7-32bit # go to env/debian-7-32bit
Ivan Mahonin ec013d
        ./build-base.sh       # just to copy base os image into chrooter/images
Ivan Mahonin ec013d
        ./build.sh            # a long build process
Ivan Mahonin ec013d
        cd ../debian-7-64bit  # go to env/debian-7-64bit
Ivan Mahonin ec013d
        ./build-base.sh       # just to copy base os image into chrooter/images
Ivan Mahonin ec013d
        ./build.sh            # a long build process
Ivan Mahonin ec013d
        cd ../..              # go back
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    build environment ready
Ivan Mahonin ec013d
Ivan Mahonin ec013d
Ivan Mahonin ec013d
installation done
Ivan Mahonin ec013d
Ivan Mahonin ec013d
Ivan Mahonin 7653a6
also you may download full backets build data made by us:
Ivan Mahonin 7653a6
    https://coolbug.org/downloads/morevna/builder-images/
Ivan Mahonin 7653a6
    https://coolbug.org/downloads/morevna/builder-images/builder-packets--YYYY-MM-DD.tar.gz
Ivan Mahonin c247e0
approximate 20Gb compressed and 75Gb after decompress
Ivan Mahonin c247e0
NB: build data contains a lot of hardlinks so make sure that you unpack it properly (tar -xf)
Ivan Mahonin ec013d
Ivan Mahonin 7653a6
Ivan Mahonin 7653a6
Ivan Mahonin 7653a6
Let's build something:
Ivan Mahonin ec013d
Ivan Mahonin ec013d
Ivan Mahonin ec013d
now you may build packages by macro script:
Ivan Mahonin ec013d
    see files ./build-*.sh
Ivan Mahonin ec013d
Ivan Mahonin ec013d
also you can add hooks to publish built packages:
Ivan Mahonin ec013d
    for example create file publish/publish-synfigstudio.sh with content:
Ivan Mahonin ec013d
        #!/bin/bash
Ivan Mahonin ec013d
        cp "$1" /var/www/public/downloads/
Ivan Mahonin ec013d
    when build is done new synfigstudio packge will placed into web-site directory
Ivan Mahonin ec013d
    you may look file publish/publish.sh for more info
Ivan Mahonin ec013d
Ivan Mahonin ec013d
run internal builder commands in virtual environment:
Ivan Mahonin ec013d
    cd env
Ivan Mahonin ec013d
    ./run.sh some_command
Ivan Mahonin ec013d
Ivan Mahonin ec013d
also you may use:
Ivan Mahonin ec013d
    env/debian-7-32bit/run.sh
Ivan Mahonin ec013d
    env/debian-7-64bit/run.sh
Ivan Mahonin ec013d
    env/debian-7-64bit/win32.sh
Ivan Mahonin ec013d
    env/debian-7-64bit/win64.sh
Ivan Mahonin ec013d
Ivan Mahonin ec013d
run build commands in native environment
Ivan Mahonin ec013d
    ./run-native.sh some_command
Ivan Mahonin ec013d
Ivan Mahonin ec013d
build a selected package:
Ivan Mahonin ec013d
    cd env
Ivan Mahonin ec013d
    ./run.sh env_release MEGAPROGRAM-1.0.0
Ivan Mahonin ec013d
Ivan Mahonin ec013d
take files from directory
Ivan Mahonin ec013d
    env-builder-data/build/packet/linux-x64/MEGAPROGRAM-1.0.0/env_release
Ivan Mahonin ec013d
or
Ivan Mahonin ec013d
    your_build_path/packet/linux-x64/MEGAPROGRAM-1.0.0/env_release
Ivan Mahonin e14835
Ivan Mahonin e14835
Ivan Mahonin e14835
"dry_run" option for paranoics:
Ivan Mahonin ec013d
    ./run.sh dry_run with_deps unpack MEGAPROGRAM-1.0.0 
Ivan Mahonin 0e38dd
Ivan Mahonin 0e38dd
List of commands
Ivan Mahonin ec013d
    <action> <packet>
Ivan Mahonin ec013d
        do <action> for <packet>
Ivan Mahonin ec013d
        List of actions:
Ivan Mahonin ec013d
        - download
Ivan Mahonin ec013d
        - unpack
Ivan Mahonin ec013d
        - build
Ivan Mahonin ec013d
        - install
Ivan Mahonin ec013d
        - install_release
Ivan Mahonin ec013d
        - envdeps
Ivan Mahonin ec013d
        - envdeps_release
Ivan Mahonin ec013d
        - env
Ivan Mahonin ec013d
        - env_release
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    dry_run <any other command>
Ivan Mahonin ec013d
        - simulate activity
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    with_deps <command> <packet>
Ivan Mahonin ec013d
        - execute <command> for <packet> and all deps
Ivan Mahonin 5691c3
          for example, you can call download for all deps without build:
Ivan Mahonin 5691c3
                run.sh with_deps download mypacket
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    clean_ACTION <packet>
Ivan Mahonin ec013d
        - remove all data of completed ACTION for <packet>
Ivan Mahonin ec013d
        ex.: clean_unpack MEGAPROGRAM-1.0.0
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    clean_all_unpack <packet>
Ivan Mahonin ec013d
        - cleans download and unpack
Ivan Mahonin ec013d
        see: clean_ACTION <packet>
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    clean_all_env <packet>
Ivan Mahonin ec013d
        - cleans install, install_release, envdeps, envdeps_release, env and env_release
Ivan Mahonin ec013d
        see: clean_ACTION <packet>
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    clean_all_install <packet>
Ivan Mahonin ec013d
        - cleans all env and build
Ivan Mahonin ec013d
        see: clean_all_env <packet>, clean_ACTION <packet>
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    clean_all <packet>
Ivan Mahonin ec013d
        - remove all data of all completed actions for <packet>
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    set_undone_ACTION <packet>
Ivan Mahonin ec013d
    set_undone_all_unpack <packet>
Ivan Mahonin ec013d
    set_undone_all_env <packet>
Ivan Mahonin ec013d
    set_undone_all_install <packet>
Ivan Mahonin ec013d
    set_undone_all <packet>
Ivan Mahonin ec013d
        - mark ACTION incomplete for <packet>, but keep action data
Ivan Mahonin ec013d
        see: clean_* comands
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    shell <packet>
Ivan Mahonin ec013d
        - run shell in environment of <packet>
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    chain <command> chain <other_command> ...
Ivan Mahonin ec013d
        - run several command sequentially wihtout remounting of environment to increase speed
Ivan Mahonin ec013d
Ivan Mahonin ec013d
see also
Ivan Mahonin ec013d
    env-builder-data/build/script/common/manager.sh
Ivan Mahonin ec013d
Ivan Mahonin ec013d
Ivan Mahonin 850862
Background tasks:
Ivan Mahonin 850862
    to call task in background use:
Ivan Mahonin 850862
        backgrouns.sh some_command
Ivan Mahonin 850862
    command will run in background and result will be sent to email (see config.sh)
Ivan Mahonin 850862
    if you do not want to receive emai about success result (look only errors), call:
Ivan Mahonin 850862
        backgrouns.sh -q some_command
Ivan Mahonin 850862
    logs stored in log/background.log
Ivan Mahonin 850862
Ivan Mahonin 850862
Ivan Mahonin ec013d
Troubles:
Ivan Mahonin ec013d
    sometimes virtual environmens does not unmounted properly
Ivan Mahonin ec013d
    to clear this you need to unmount all mounts for */chrooter-*
Ivan Mahonin ec013d
    look mounts list by command:
Ivan Mahonin ec013d
        mount
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    unmount by command:
Ivan Mahonin ec013d
        umount "/some_path/chrooter-SOME_UUID"
Ivan Mahonin ec013d
    or with "force" option
Ivan Mahonin ec013d
        umount -f "/some_path/chrooter-SOME_UUID" 
Ivan Mahonin 850862
    or with "lazy" option
Ivan Mahonin 850862
        umount -l "/some_path/chrooter-SOME_UUID" 
Ivan Mahonin 850862
    and check againt with
Ivan Mahonin 850862
        mount
Ivan Mahonin ec013d
Ivan Mahonin ec013d
    after that remove the files
Ivan Mahonin ec013d
    you MUST do unmount before, if some dir are still mounted you can remove some system files
Ivan Mahonin ec013d
    we recommend to check content of directories before remove
Ivan Mahonin ec013d
    option "--one-file-system" for additional protection but anyway BE CAREFULL!!
Ivan Mahonin ec013d
    command:
Ivan Mahonin ec013d
        rm -rf --one-file-system /some_path/chrooter-*