mirror of https://github.com/parazyd/vm-sdk.git
Update for latest libdevuansdk (overhaul).
This commit makes vm-sdk work with latest libdevuansdk. We also drop fetching blends from http, and dockerfiles. These should be created beforehand and put in a file for vm-sdk to load.
This commit is contained in:
parent
056d2beb40
commit
600591bfbb
42
README.md
42
README.md
|
|
@ -1,5 +1,5 @@
|
|||
vm-sdk
|
||||
=======
|
||||
======
|
||||
|
||||
vm-sdk is simple distro build system aimed at creating Vagrant boxes
|
||||
and other virtual machines.
|
||||
|
|
@ -15,16 +15,13 @@ It requires the following packages to be installed in addition to the
|
|||
### Devuan
|
||||
|
||||
```
|
||||
virtualbox vagrant qemu qemu-utils
|
||||
```
|
||||
* http://download.virtualbox.org/virtualbox/5.1.30/virtualbox-5.1_5.1.30-118389~Debian~stretch_amd64.deb
|
||||
* http://download.virtualbox.org/virtualbox/5.1.30/virtualbox-5.1_5.1.30-118389~Debian~jessie_amd64.deb
|
||||
qemu qemu-utils
|
||||
|
||||
* https://releases.hashicorp.com/vagrant/2.0.0/vagrant_2.0.0_x86_64.deb
|
||||
|
||||
### Gentoo
|
||||
|
||||
```
|
||||
app-emulation/virtualbox app-emulation/vagrant app-emulation/qemu
|
||||
app-emulation/qemu
|
||||
```
|
||||
|
||||
## Initial setup
|
||||
|
|
@ -68,37 +65,8 @@ to build the image for.
|
|||
Once initialized, you can run the helper command:
|
||||
|
||||
```
|
||||
; build_vagrant_dist
|
||||
; build_vm_dist
|
||||
```
|
||||
|
||||
The image will automatically be build for you. Once finished, you will be
|
||||
able to find it in the `dist/` directory in vm-sdk's root.
|
||||
|
||||
For more info, see the `doc/` directory.
|
||||
|
||||
## Acknowledgments
|
||||
|
||||
Devuan's SDK was originally conceived during a period of residency at the
|
||||
Schumacher college in Dartington, UK. Greatly inspired by the laborious and
|
||||
mindful atmosphere of its wonderful premises.
|
||||
|
||||
The Devuan SDK is Copyright (c) 2015-2017 by the Dyne.org Foundation
|
||||
|
||||
Devuan SDK components were designed, and are written and maintained by:
|
||||
|
||||
- Ivan J. <parazyd@dyne.org>
|
||||
- Denis Roio <jaromil@dyne.org>
|
||||
- Enzo Nicosia <katolaz@freaknet.org>
|
||||
|
||||
This source code is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation, either version 3 of the License, or (at your option)
|
||||
any later version.
|
||||
|
||||
This software is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this source code. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
|
|
|||
37
config
37
config
|
|
@ -1,5 +1,6 @@
|
|||
#!/usr/bin/env zsh
|
||||
# Copyright (c) 2016-2017 Dyne.org Foundation
|
||||
# shellcheck=bash
|
||||
# Copyright (c) 2016-2020 Dyne.org Foundation
|
||||
# vm-sdk is written and maintained by Ivan J. <parazyd@dyne.org>
|
||||
#
|
||||
# This file is part of vm-sdk
|
||||
|
|
@ -17,27 +18,29 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this source code. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
## vm-sdk configuration
|
||||
## ---------------------
|
||||
|
||||
arch=amd64
|
||||
arch="amd64"
|
||||
size=20479
|
||||
imageformat=qcow2
|
||||
imageformat="qcow2"
|
||||
#imageformat=raw
|
||||
|
||||
parted_type="dos"
|
||||
dos_boot="ext4 2048s 264191s"
|
||||
dos_root="ext4 264192s 100%"
|
||||
bootfs="ext4"
|
||||
rootfs="ext4"
|
||||
|
||||
PATH="$PATH:/usr/sbin:/sbin"
|
||||
|
||||
## options for `make` when building kernel
|
||||
MAKEOPTS="-j$(expr $(grep -c 'processor' /proc/cpuinfo) + 1)"
|
||||
# Comment if you wish to disable stage4 archives for faster rebuilding
|
||||
CPIO_STAGE4=1
|
||||
|
||||
## uncomment if you wish to create stage4 tarballs for faster rebuilding
|
||||
# TAR_STAGE4=true
|
||||
# Comment if you wish to disable image compression
|
||||
COMPRESS_IMAGE=1
|
||||
|
||||
## Comment out if you don't want to create a cloud-based qcow.
|
||||
vars+=(makecloud)
|
||||
makecloud=true
|
||||
# extra_packages for all images
|
||||
extra_packages+=(fake-hwclock busybox-static ntp grub-pc)
|
||||
|
||||
## extra_packages for all images
|
||||
extra_packages+=(fake-hwclock busybox-static ntp)
|
||||
extra_packages+=(fbterm)
|
||||
case "$arch" in
|
||||
i386) extra_packages+=(linux-image-686) ;;
|
||||
amd64) extra_packages+=(linux-image-amd64) ;;
|
||||
esac
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 0611dccb1726bb4085bd98c5ddc0bb10930a2e0a
|
||||
Subproject commit aedf124832b7643ab3f215395cb6083a9cf2db7f
|
||||
68
sdk
68
sdk
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env zsh
|
||||
# Copyright (c) 2016-2018 Dyne.org Foundation
|
||||
# Copyright (c) 2016-2020 Dyne.org Foundation
|
||||
# vm-sdk is written and maintained by Ivan J. <parazyd@dyne.org>
|
||||
#
|
||||
# This file is part of vm-sdk
|
||||
|
|
@ -17,31 +17,31 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this source code. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
vmsdk_version="0.2"
|
||||
vmsdk_version="1.0"
|
||||
|
||||
R=${VM_SDK:-$PWD}
|
||||
R="${VM_SDK:-$PWD}"
|
||||
|
||||
DEBUG=0
|
||||
QUIET=0
|
||||
|
||||
source $R/lib/zuper/zuper
|
||||
source "$R/lib/zuper/zuper"
|
||||
|
||||
## global vars
|
||||
# Global vars
|
||||
vars+=(vmsdk_version)
|
||||
vars+=(R workdir strapdir)
|
||||
vars+=(os oslib blendlib)
|
||||
vars+=(MAKEOPTS)
|
||||
|
||||
## global arrs
|
||||
# Global arrs
|
||||
arrs+=(extra_packages)
|
||||
|
||||
## global maps
|
||||
# Global maps
|
||||
maps+=(board_map os_map blend_map)
|
||||
|
||||
source $R/config
|
||||
source "$R/config"
|
||||
|
||||
## conclude zuper initialization
|
||||
source $R/lib/zuper/zuper.init
|
||||
# Conclude zuper initialization
|
||||
source "$R/lib/zuper/zuper.init"
|
||||
|
||||
load() {
|
||||
fn load "$@"
|
||||
|
|
@ -51,7 +51,7 @@ load() {
|
|||
ckreq || return 1
|
||||
|
||||
os_map=(
|
||||
"devuan" "$R/lib/libdevuansdk/libdevuansdk"
|
||||
"devuan" "$R/lib/libdevuansdk/libdevuansdk"
|
||||
)
|
||||
|
||||
blend_map=(
|
||||
|
|
@ -62,49 +62,11 @@ load() {
|
|||
)
|
||||
|
||||
oslib="${os_map[$os]}"
|
||||
[[ -f $oslib ]] || { die "no valid distro specified"; exit 1 }
|
||||
[[ -f $oslib ]] || { die "no valid distro specified"; exit 1 }
|
||||
source $oslib
|
||||
|
||||
blendlib="${blend_map[$blend]}"
|
||||
|
||||
if [[ -z "$blendlib" ]] && [[ -n "$blend" ]]; then
|
||||
if [[ "$blend" =~ '^http' ]]; then
|
||||
notice "grabbing blend from the internetz"
|
||||
dlpath="$R/extra/blends/$(basename $blend)"
|
||||
wget -O "$dlpath" "$blend"
|
||||
sed 1q "$dlpath" | grep -q '^#!/usr/bin/env zsh' && blendlib="$dlpath"
|
||||
fi
|
||||
|
||||
if [[ -z "$blendlib" ]] && [[ -n "$blend" ]]; then
|
||||
[[ -n "$dlpath" ]] && blend="$dlpath"
|
||||
act "trying to parse an unknown blend"
|
||||
# Check if it's a Dockerfile
|
||||
if grep -qi '^FROM ' "$blend"; then
|
||||
act "The blend is a Dockerfile"
|
||||
parsedfile="$($LIBPATH/extra/dockerfile_parse.py "$blend")"
|
||||
[[ $? = 0 ]] || { die "Could not parse the Dockerfile" ; exit 1}
|
||||
cat > "$R/$(basename ${blend}).blend" << __EOF__
|
||||
#!/usr/bin/env zsh
|
||||
# Parsed with dockerfile_parse.py
|
||||
#
|
||||
blend_postinst() {
|
||||
fn blend_postinst
|
||||
req=(strapdir blend)
|
||||
ckreq || return 1
|
||||
|
||||
notice "executing blend postinst"
|
||||
cat << ___EOF___ | sudo tee \$strapdir/blendpostinst >/dev/null
|
||||
${parsedfile}
|
||||
___EOF___
|
||||
|
||||
chroot-script -d blendpostinst || zerr
|
||||
}
|
||||
__EOF__
|
||||
blendlib="$R/$(basename ${blend}).blend"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
[[ -f $blendlib ]] || { act "no blend specified" }
|
||||
[[ -f $blendlib ]] && {
|
||||
source $blendlib || zerr
|
||||
|
|
@ -114,15 +76,15 @@ __EOF__
|
|||
|
||||
workdir="$R/tmp/${os}-${arch}-build"
|
||||
strapdir="$workdir/bootstrap"
|
||||
mkdir -p $strapdir
|
||||
mkdir -p "$strapdir"
|
||||
|
||||
export LANG=C
|
||||
export LC_ALL=C
|
||||
|
||||
source $R/lib/zuper/zuper.init
|
||||
source "$R/lib/zuper/zuper.init"
|
||||
}
|
||||
|
||||
TRAPZERR() { zerr; return $? }
|
||||
|
||||
notice "vm-sdk loaded"
|
||||
notice "vm-sdk $vmsdk_version loaded"
|
||||
export PROMPT="%F{yellow}%(?..%? )%{$reset_color%}vmsdk@%{$fg[red]%}%m %{$reset_color%}%3c %# "
|
||||
|
|
|
|||
Loading…
Reference in New Issue