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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
PTXdist
=======
Necessary Packages
------------------
In order to build ptxdist, you need three archives:
ptxdist-<version>.tgz (mandatory)
ptxdist-<version>-patches.tgz (mandatory)
ptxdist-<version>-projects.tgz (optional)
Extract these archives into some build directory; the tarballs are put
together in a way that they extract into one subdir ptxdist-<version>.
Installation
------------
To install PTXdist, just run
./configure --prefix=<installpath>
to configure the packet, then
make
to build everything and
make install
to install it. When you start using PTXdist, make sure your $PATH
environment variable points to <installpath>/bin, because that's where
the ptxdist frontend program is being installed to.
For developers who want to work with svn versions of PTXdist it is only
necessary to run "./configure && make" and set the PATH variable to the
bin/ directory inside the PTXdist tree.
Quickstart
----------
PTXdist comes with some example projects in the
ptxdist-<version>-projects.tgz
archive. If this packet is installed with ptxdist it is possible to
"clone" the example projects and use them i.e. as a start for your own
project. Find out which projects are available, using
$ ptxdist projects
Then clone a project with
$ ptxdist clone <projectname> myproject
This copies the project named <projectname> into ./myproject, which is
your "workspace" for the following actions.
Change into your project's workspace and build everything:
$ cd myproject
$ ptxdist go
This builds a root filesystem into the root/ directory of your
workspace. If the project was built for the same architecture as your
devenlopment machine, you can try it with
$ chroot root/ /bin/sh
If you have more time to find out how it works, read on.
Idea
----
PTXdist is a tool which can be used to generate a root tree for all
kinds of Linux systems. It was written with embedded systems in mind,
but there is no reason why you can't use it to configure your firewall,
router or whatever dedicated "device" comes to your mind.
The job works like this: you run 'ptxdist menuconfig', configure what
you need and get a 'ptxconfig' file. Run 'ptxdist go' and you'll find a
root tree in root/. Voila.
All magic necessary to do these things in a cross enviroment are written
into "recipies", living in rules/*.make, and config menues in
rules/*.in.
Directory Layout
----------------
These files and directories are supposed to be in an empty project
directory:
kernelconfig.native kernel .config file for the native kernel
kernelconfig.target kernel .config file for the target kernel
patches/ project specific patches, overwrites the generic
ones from PTXdist
projectroot/ put files here which are to be copied over to
the target's root directory, like for example
etc files, scripts, ... Note that the copying
has to be done explicitly by some project
specific rule file.
ptxconfig .config file to configure the userland for
your project.
rules/ contains project specific rules
src -> ... link to point to your directory containing
tarball files for the packets.
Additionally some other directories are being built when you run
"ptxdist go" or other start other build targets.
build-host/ build directory for host tools
build-cross/ build directory for cross tools
build-target/ build directory for target tools
images/ 'ptxdist images' creates tarballs and
filesystem images in this directory.
local/ tools which are installed locally go to this dir
root/ root filesystem for the target
state/ state files (show in which state packages
currently are during the compilation)
For more details look at the output of 'ptxdist --help' or see the
PTXdist manual.
Bugs
----
- search for FIXMEs
- see TODO, which is out of date :-)
Robert Schwebel <r.schwebel@pengutronix.de>, 2006-02-19
|