Merge branch 'doc' into next
This commit is contained in:
commit
25201905c2
|
|
@ -0,0 +1,18 @@
|
|||
all: clean html man
|
||||
|
||||
html:
|
||||
@echo generating html...
|
||||
@./nanodoc html
|
||||
|
||||
man:
|
||||
@echo generating manpages...
|
||||
@./nanodoc man
|
||||
|
||||
clean:
|
||||
@echo cleaning...
|
||||
@rm -rf html man nav.html
|
||||
@sed -i -e 's:index.html">.*:html">NAME</a>:' static/head.html
|
||||
@sed -i -e 's:Subtitle">.*:Subtitle">DESC</span>:' static/head.html
|
||||
@sed -i -e 's:libdevuansdk-.*:libdevuansdk-VERSION</a>:' static/foot.html
|
||||
|
||||
.PHONY: all html man clean
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
configuration
|
||||
=============
|
||||
|
||||
much of the `libdevuansdk` configuration is done in `libdevuansdk/config`. here
|
||||
you can edit the defaults if you wish to do something your needs are expressing.
|
||||
|
||||
## config file
|
||||
|
||||
`vars` and `arrs` are global arrays holding other global variables and arrays.
|
||||
this is required for `zuper` and helps a lot with debugging. if you declare new
|
||||
variables or arrays, add them to `vars` and `arrs`, respectively.
|
||||
|
||||
* `os`
|
||||
holds the name of the distro being worked on.
|
||||
|
||||
* `release`
|
||||
holds the release name of the distro. used for apt repos mostly.
|
||||
|
||||
* `version`
|
||||
current version of the distro being worked on.
|
||||
|
||||
* `mirror`
|
||||
a mirror holding the packages for `debootstrap`.
|
||||
|
||||
* `section`
|
||||
sections of the repo. for adding in `/etc/apt/sources.list`. separate them
|
||||
with whitespaces.
|
||||
|
||||
* `image_name`
|
||||
output name of the raw image. if you declare `device_name`, it will be added.
|
||||
`arm-sdk` does this.
|
||||
|
||||
* `core_packages`
|
||||
this array holds the core packages that will be installed in the bootstrap
|
||||
process.
|
||||
|
||||
* `base_packages`
|
||||
this array holds the base packages that will be installed later in the
|
||||
bootstrap process.
|
||||
|
||||
* `purge_packages`
|
||||
this array holds the packages that will get purged at the end of the bootstrap
|
||||
process.
|
||||
|
||||
|
||||
## overriding things
|
||||
|
||||
to be able to override specific unwanted functions of libdevuansdk, consider
|
||||
sourcing it earlier in the process of initialization.
|
||||
|
||||
it is possible to override default variables, or even functions without the need
|
||||
of editing libdevuansdk. share a patch with me if you wish :)
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
creating wrappers around libdevuansdk
|
||||
=====================================
|
||||
|
||||
libdevuansdk holds all the helper functions you might need, but it does not
|
||||
allow you to simply use it in a completely automated fashion. for that you
|
||||
will have to wrap some zsh around libdevuansdk.
|
||||
|
||||
there are a few mandatory variables that you are required to declare before
|
||||
sourcing libdevuansdk. otherwise libdevuansdk might write to some places of the
|
||||
system you wouldn't want to.
|
||||
|
||||
## requirements
|
||||
|
||||
before sourcing it, libdevuansdk assumes you already loaded and initialized
|
||||
the [zuper](https://github.com/dyne/zuper) zsh library.
|
||||
|
||||
|
||||
### mandatory variables
|
||||
|
||||
* `$R`
|
||||
the root directory of your wrapper. in almost every situation you can set
|
||||
it as `$PWD`
|
||||
|
||||
* `$workdir`
|
||||
the working directory of the current "build". a sane default is
|
||||
`$R/tmp/workdir`
|
||||
|
||||
* `$strapdir`
|
||||
the bootstrap directory of the current "build". it holds the rootfs when
|
||||
you debootstrap. sane default: `$workdir/rootfs`
|
||||
|
||||
* `$arch`
|
||||
the CPU architecture of the current "build". values like: `amd64`, `i386`,
|
||||
`armhf`, etc...
|
||||
|
||||
|
||||
### Optional variables
|
||||
|
||||
* `$extra_packages`
|
||||
this should hold an array of packages that exist in the devuan package tree.
|
||||
they will get installed as a part of the bootstrap process.
|
||||
|
||||
* `$purge_packages`
|
||||
this is an array that holds a list of packages that will get removed at the
|
||||
final steps of the bootstrap process. note that this array is not empty by
|
||||
default, so you should only add to it in your wrapper, not override it.
|
||||
just to be safe.
|
||||
|
||||
* `$size`
|
||||
This variable will hold the value in MiB for `dd` to know how many zeroes it
|
||||
should put in the raw image.
|
||||
ex: `size=1337`
|
||||
|
||||
* `$parted_type`
|
||||
if you are creating a raw (dd-able) image, this variable will tell
|
||||
libdevuansdk how to partition that image. either `dos` or `gpt`.
|
||||
|
||||
* `$parted_boot`
|
||||
used if `$parted_type=dos`. it holds the values for `parted` and the
|
||||
formatting of the `boot` partition.
|
||||
ex: `parted_boot="fat32 2048s 264191s"`.
|
||||
see the `image_partition_raw_dos()` function in `libdevuansdk/zlibs/imaging`
|
||||
for a better understanding on how the variable is used.
|
||||
|
||||
* `$parted_root`
|
||||
used if `$parted_type=dos`. it holds the values for `parted` and the
|
||||
formatting of the `root` partition.
|
||||
ex: `parted_root="ext4 264192s 100%"`.
|
||||
see the `image_partition_raw_dos()` function in `libdevuansdk/zlibs/imaging`
|
||||
for a better understanding on how the variable is used.
|
||||
|
||||
* `$gpt_boot`
|
||||
used if `$parted_type=gpt`. it is an array holding the start and end values
|
||||
for partitioning the `boot` partition.
|
||||
ex: `gpt_boot=(8192 32768)`
|
||||
see the `image_partition_raw_gpt()` function in `libdevuansdk/zlibs/imaging
|
||||
for a better understanding on how the variable is used.
|
||||
|
||||
* `$gpt_root`
|
||||
used if `$parted_type=gpt`. it is an array holding the start value for
|
||||
partitioning the `root` partition.
|
||||
ex: `gpt_root=(40960)`
|
||||
currently libdevuansdk chooses this as a startpoint, and maxes out remaining
|
||||
available space. again, see the `image_partition_raw_gpt()` function for a
|
||||
better understanding.
|
||||
|
||||
* `$qemu_bin`
|
||||
declare this if you are bootstrapping for an architecture different than
|
||||
yours. it should hold the path to `qemu-user-static` or a similarly named
|
||||
statically compiled qemu for userspace.
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
helper functions
|
||||
================
|
||||
|
||||
you can find useful helper functions in `libdevuansdk/zlibs/helpers`. they are
|
||||
intended to help you with writing wrappers, as well as making my job easier
|
||||
within developing libdevuansdk. some of these functions are required for
|
||||
libdevuansdk to properly work as well.
|
||||
|
||||
|
||||
## build_image_dist()
|
||||
this function is kind of a wrapper function, mostly used in `arm-sdk` to build a
|
||||
complete "dd-able" image from start to end. to run, it requires `$arch`,
|
||||
`$size`, `$parted_type`, `$workdir`, and `$strapdir` to be declared. as well as
|
||||
`$parted_root`, `$parted_boot` if `$parted_type=dos`, or `$gpt_root`,
|
||||
`$gpt_boot` if `$parted_type=gpt`. see `creating_wrappers(7)` for insight on
|
||||
these variables.
|
||||
|
||||
the workflow of this function is bootstrapping a complete rootfs, creating a raw
|
||||
image, installing/compiling a kernel, rsyncing everything to the raw image, and
|
||||
finally, compressing the raw image.
|
||||
|
||||
|
||||
## devprocsys()
|
||||
this function is a simple helper function that takes two arguments: `watdo` and
|
||||
`werdo`. it mounts or umounts `/sys`, `/dev`, `/dev/pts`, and `procfs` where you
|
||||
tell it to. for example:
|
||||
|
||||
```
|
||||
devprocsys mount $strapdir
|
||||
devprocsys umount $strapdir
|
||||
```
|
||||
|
||||
|
||||
## findloopmapp()
|
||||
this functions takes the raw image and finds a free loopdevice for it to be
|
||||
mounted. it calls `losetup(8)` and `kpartx(8)`.
|
||||
|
||||
|
||||
## qemu_install_user()
|
||||
helper function to install the userspace qemu to `$strapdir`.
|
||||
|
||||
|
||||
## dpkgdivert()
|
||||
this one takes two arguments, `watdo` and `werdo` (much like `devprocsys`). it
|
||||
will create a dpkg diversion in the place you tell it to and remove invoke-rc.d
|
||||
so that apt doesn't autostart daemons when they are installed.
|
||||
|
||||
|
||||
## enablessh()
|
||||
this function will allow root login with password in the bootstrapped rootfs.
|
||||
|
||||
|
||||
## silly()
|
||||
a funny function printing out random messages.
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
index
|
||||
=====
|
||||
|
||||
`libdevuansdk` is a shell script library intended to unify the use and creation
|
||||
of various functions spread throughout devuan's various sdks.
|
||||
|
||||
devuan's sdks are designed to be used interactively from a terminal, as
|
||||
well as from shell scripts. libdevuansdk uses the functionality of the
|
||||
[zuper](https://github.com/dyne/zuper) zsh library, but it does not include
|
||||
it. you are required to include it in your sdk. however, `libdevuansdk`
|
||||
requires the following packages to be installed:
|
||||
|
||||
```
|
||||
zsh debootstrap sudo kpartx cgpt xz-utils
|
||||
```
|
||||
|
||||
## notes
|
||||
|
||||
to support the development, you are welcome to open issues on problems and
|
||||
bugs you encounter. open merge requests of patches or simply get involved
|
||||
in other tasks evident on <https://git.devuan.org>
|
||||
|
||||
## 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-2016 by the Dyne.org Foundation
|
||||
|
||||
Devuan SDK components are designed, 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/>.
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
#!/bin/sh
|
||||
# Copyright (c) 2016 parazyd <parazyd@dyne.org>
|
||||
# nanodoc is written and maintained by parazyd
|
||||
#
|
||||
# This file is part of arm-sdk
|
||||
#
|
||||
# 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/>.
|
||||
|
||||
org="parazyd <parazyd@dyne.org> | dyne.org"
|
||||
name=libdevuansdk
|
||||
version=0.2
|
||||
desc="common library for devuan's sdks"
|
||||
|
||||
pages="
|
||||
libdevuansdk.7
|
||||
configuration.7
|
||||
workflow.7
|
||||
helper_functions.7
|
||||
creating_wrappers.7
|
||||
"
|
||||
|
||||
generate_manpages() {
|
||||
for page in $pages; do
|
||||
ronn -r --manual="$name" --organization="$org" ${page}.md
|
||||
done
|
||||
|
||||
mkdir -p man/7
|
||||
mv *.7 man/7
|
||||
}
|
||||
|
||||
generate_html() {
|
||||
mkdir -p html
|
||||
sed -i -e 's/NAME/'"$name"'/' -e 's/DESC/'"$desc"'/g' static/head.html
|
||||
sed -i -e 's/VERSION/'$version'/' static/foot.html
|
||||
|
||||
for page in $pages; do
|
||||
pagetitle=$(sed 1q ${page}.md)
|
||||
printf '<li><a href="%s.html" class="notPage">%s</a></li>\n' $page "$pagetitle" >> nav.html
|
||||
done
|
||||
|
||||
printf "</ul></div><div id='main'>\n" >> nav.html
|
||||
|
||||
for page in $pages; do
|
||||
printf "\thtml/%s\n" $page
|
||||
cat static/head.html > html/${page}.html
|
||||
cat nav.html >> html/${page}.html
|
||||
python -m markdown ${page}.md >> html/${page}.html
|
||||
cat static/foot.html >> html/${page}.html
|
||||
|
||||
pagetitle=$(sed 1q ${page}.md)
|
||||
sed -i -e 's/TITLE/'"$pagetitle"'/' html/${page}.html
|
||||
sed -i -e 's/'$page'.html" class="notPage/'$page'.html" class="thisPage/' html/${page}.html
|
||||
done
|
||||
|
||||
ln -sf libdevuansdk.7.html html/index.html
|
||||
#cat nav.html
|
||||
rm -f nav.html
|
||||
}
|
||||
|
||||
case $1 in
|
||||
man) generate_manpages && exit 0 ;;
|
||||
html) generate_html && exit 0 ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
<span class="right">
|
||||
<a href="https://git.devuan.org/sdk/libdevuansdk">libdevuansdk-VERSION</a>
|
||||
</span>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,199 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>TITLE</title>
|
||||
|
||||
<style type="text/css">
|
||||
/* {{{ stylesheet */
|
||||
body {
|
||||
background-color: #eee;
|
||||
color: #222;
|
||||
font-family: sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
hr { margin: 30px 60px; }
|
||||
|
||||
code {
|
||||
font-family: monospace;
|
||||
background-color: #ccc;
|
||||
padding: 0.2ex 0.5ex 0.2ex 0.5ex;
|
||||
margin: 0.2ex;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
a, a:visited {
|
||||
color: #058;
|
||||
text-decoration: none;
|
||||
-webkit-transition: all 0.2s linear;
|
||||
-moz-transition: all 0.2s linear;
|
||||
-ms-transition: all 0.2s linear;
|
||||
-o-transition: all 0.2s linear;
|
||||
transition: all 0.2s linear;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
background-color: #eee;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#menu {
|
||||
clear: both;
|
||||
overflow: hidden;
|
||||
color: #069;
|
||||
background-color: #333;
|
||||
padding: 0.7ex;
|
||||
font-size: 94%;
|
||||
border-top: 1px solid #333;
|
||||
border-bottom: 1px solid #333;
|
||||
}
|
||||
|
||||
#menu a {
|
||||
padding: 0.5ex 1ex 0.5ex 1ex;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#menu a:hover {
|
||||
background-color: #333;
|
||||
color: #17a;
|
||||
}
|
||||
|
||||
#menu a.thisSite {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#header {
|
||||
clear: both;
|
||||
color: #666;
|
||||
font-size: 1.78em;
|
||||
padding: 0.7ex 0.7ex 0.7ex 0.7em;
|
||||
}
|
||||
|
||||
#header img {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
#headerLink {
|
||||
color: #666;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: sans-serif;
|
||||
margin: 1em 1ex 0.5ex 0;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: sans-serif;
|
||||
margin: 1em 1ex 0.5ex 0;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-family: sans-serif;
|
||||
margin: 1em 1ex 0.5ex 0;
|
||||
font-size: 1.0em;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-family: sans-serif;
|
||||
margin: 1em 1ex 0.5ex 0;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
#headerSubtitle {
|
||||
font-size: 0.75em;
|
||||
font-style: italic;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
#content {
|
||||
clear: both;
|
||||
font-size: 0.9em;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #fff;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#nav {
|
||||
background-color: #fff;
|
||||
float: left;
|
||||
margin: 0 1px 0 0;
|
||||
padding: 1em 0;
|
||||
border-right: 1px dotted #ccc;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
#nav ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#nav li {
|
||||
list-style: none;
|
||||
font-size: 0.8em;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#nav li ul {
|
||||
padding-left: 0.6em !important;
|
||||
}
|
||||
|
||||
#nav li a {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0.8ex 2em 0.8ex 1em;
|
||||
}
|
||||
|
||||
#nav li a.thisPage {
|
||||
color: #222; /*#333;*/
|
||||
font-weight: bold;
|
||||
/*font-style: italic;*/
|
||||
}
|
||||
|
||||
#main {
|
||||
margin: 0 0 0 200px;
|
||||
padding: 1.5em;
|
||||
max-width: 50em;
|
||||
}
|
||||
|
||||
#footer {
|
||||
clear: both;
|
||||
color: #666;
|
||||
border-top: 1px solid #ccc;
|
||||
font-size: 84%;
|
||||
padding: 1em;
|
||||
margin: 0 0 1.5em 0;
|
||||
}
|
||||
|
||||
.left {
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.right {
|
||||
float: right;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
/* }}} */
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<a id="headerLink" href="html">libdevuansdk</a>
|
||||
<span id="headerSubtitle">DESC</span>
|
||||
</div>
|
||||
<div id="menu"></div>
|
||||
|
||||
<div id="content">
|
||||
<div id="nav">
|
||||
|
||||
<ul>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
libdevuansdk workflow
|
||||
=====================
|
||||
|
||||
Working with libdevuansdk splits into categories of what you want to do.
|
||||
`zlibs` are files separated into these "categories":
|
||||
|
||||
## bootstrap
|
||||
|
||||
Contains the functions for the bootstrap process. Creating a minimal debootstrap
|
||||
base, and making it into a tarball for later use so you don't have to wait for
|
||||
the debootstrap on every build.
|
||||
|
||||
## helpers
|
||||
|
||||
Contains the helper functions for libdevuansdk that make your and my life a bit
|
||||
easier.
|
||||
|
||||
## imaging
|
||||
|
||||
Contains the functions necessary for creating raw dd-able images.
|
||||
|
||||
## kernel
|
||||
|
||||
Contains the functions for installing a vanilla kernel.
|
||||
|
||||
## rsync
|
||||
|
||||
Contains rsync functions
|
||||
|
||||
## sysconf
|
||||
|
||||
Contains the default system configuration.
|
||||
Loading…
Reference in New Issue