1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
The LinHES development is divided into two different git repositories.
The first repository is LinHES-PKGBUILD, and it contains all the PKGBUILD files that make up LinHES. The second repository is called LinHES-dev and is intended to create a chroot for all development to occur within. By using a chroot development work can be done on non-LinHES machines. The reason for the split is so that the PKGBUILD's may be downloaded and modified by non-developers without requiring them to download the entire development environment.
------ LinHES-PKGBUILD -----------
The layout of the LinHES-PKGBUILD repository is as follows.
-- abs
|-- chroot-devel
|-- chroot-devel-testing
|-- core
|-- core-testing
|-- extra
|-- extra-testing
Core is the set of packages that make up the “core” of LinHES, or in other words all the packages needed to create a fully functioning system.
Extra contains all the packages used by LinHES, but not necessarily needed to create a fully functioning system. For example this would include mplayer, xine and mozilla.
Chroot-devel are packages used by developers that are not in LinHES.
The difference between core and core-testing is that core is intended to be used for public iso releases, where as core-testing is intended for developers or beta testing. The same applies to extra and chroot-devel.
----------- LinHES-dev -------------------
LinHES-dev contains the tools and scripts for a working development environment, but it is not a working development by itself. The script setup-env.sh will do all the work in creating a working development environment. The script will download and install the required packages(from the current stable release) into a directory called build_root and create a script that can be used to enter the chroot.
Because LinHES will support multiple architectures, setup-env.sh requires and argument telling it which architecture to work with.. Currently i686 is the only working option, so that is the one I recommend you use. For example running “setup-env.sh i686” will create a working i686 LinHES development environment named build_root.i686. Setup-env.sh also creates a empty directory structure called pkg_repo, this is used by kmsync.sh (which will be discussed later).
To enter the build root run (as root) the newly created script called enter_build_root.i686.
The script will take care of the following things for you
a) mounting proc,sys,dev/pts
b) bind mounting LinHES-dev/build_tools to build_root/build_tools
c) bind mounting LinHES-PKGBUILD to build_root/data/LinHES-PKGBUILD
d) bind mounting pkg_repo to build_root/data/pkg_repo.
e) unmount the above directories when leaving the chroot
The following is a list of tools available to you inside the chroot.
a) mp
Small script to compile a package, copy it to the local testing repo and update the local database using the repo-add function. Must be called from the same directory that contains the PKGBUILD. This script takes all the same arguments that makepkg takes.
b) mpr
Symlink to mp that does the same thing as mp except it copies the package to the release repo
c) update_db_repo
Used to completely regenerate the the local package database.
Takes two arguments the directory with packages, and the name of the repository.
Example: update_db_repo /data/local/pkg_repo/i686/core-testing core-testing
d) kmsync.sh (testing|release|chroot-devel
This script is used to synchronize the contents of the compiled packages on knoppmyth.net and the ones on your local machine.
The script takes 1 argument telling it which repository to sync up with
The first time it's run with any given option the local directory (/data/pkg_repo/i686/core|extra|chroot-devel) MUST MUST MUST be empty.
Please use this script with care, any changes that are made in the local mirror will be copied to the knoppmyth server.
This includes the possibility to completely erase all the packages. Finally this script uses a shared user account on knoppmyth.net that is a locked account. SSH keys must be setup for this script to work.
e) build_tools/go.sh
Menu driven fronted to create an ISO with selected profile
The following profiles are available to create an iso.
a ) i686-RELEASE-REMOTE
Create an iso from the release repo using packages from knoppmyth.net
b ) i686-testing-REMOTE
Create an ISO from the testing repo using packages from knoppmyth.net
c) i686-testing-local
Create an ISO from the testing repo using packages from the local mirror
d ) i686-testing-local-httpdir-structure
Create an ISO from the testing repo using packages from a local web server name “localmirror”
After the process finishes it will let you know the final name and location of the resulting ISO
For any of the local profiles to work, it requires that kmsync be run at least once to populate the local mirror.
Quick start showing typical process
############
Create the chroot for i686
git clone ssh://jams@knoppmyth.net/mount/repository/LinHES-dev
git clone ssh://jams@knoppmyth.net/mount/repository/LinHES-PKGBUILD
cd LinHES-dev/
./setup_env.sh i686
cd ..
./enter_dev_chroot.i686.sh
Build and iso from knoppmyth.net
cdb <= alias
./go.sh
(select i686-testing-REMOTE)
commands used to build a package (tar in this example), and update knoppmyth.net
cdl <= alias that takes you the the top level PKGBUILD directory
cd core-testing
cd tar
vi PKGBUILD <= bump the pkgrel line by 1
mp
(at this point you should test the package, either by building a new iso or installing the package)kmsync.sh testing <= this will pull down all changes from knoppmyth.net and upload the new tar package
-----------------------
Misc.
Directory structure after a functioning chroot is created for i686
|-- LinHES-PKGBUILD
|-- LinHES-dev
|-- build_root.i686
|-- enter_dev_chroot.i686.sh
`-- pkg_repo
|