summaryrefslogtreecommitdiff
path: root/doc/guide/files/porting.xml
blob: a3ac1ced7f3c6a05c5d1a4ca47aa5611e7133bdd (plain)
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
<!-- $NetBSD: porting.xml,v 1.4 2007/04/19 16:54:58 joerg Exp $ -->

<chapter id="porting"> <?dbhtml filename="porting.html"?>
<title>Porting pkgsrc</title>

	<para>The pkgsrc system has already been ported to many
	operating systems, hardware architectures and compilers. This
	chapter explains the necessary steps to make pkgsrc even more
	portable.</para>

<sect1 id="porting.opsys">
<title>Porting pkgsrc to a new operating system</title>

	<para>To port pkgsrc to a new operating system (called
	<literal>MyOS</literal> in this example), you need to touch the
	following files:</para>

	<variablelist>

	<varlistentry><term><filename>pkgtools/bootstrap-mk-files/files/mods/<replaceable>MyOS</replaceable>.sys.mk</filename></term>
	<listitem><para>This file contains some basic definitions, for
	example the name of the C
	compiler.</para></listitem></varlistentry>

	<varlistentry><term><filename>mk/bsd.prefs.mk</filename></term>
	<listitem><para>Insert code that defines the variables
	<varname>OPSYS</varname>, <varname>OS_VERSION</varname>,
	<varname>LOWER_OS_VERSION</varname>,
	<varname>LOWER_VENDOR</varname>,
	<varname>MACHINE_ARCH</varname>, <varname>OBJECT_FMT</varname>,
	<varname>APPEND_ELF</varname>, and the other variables that
	appear in this file.</para></listitem></varlistentry>

	<varlistentry><term><filename>mk/platform/<replaceable>MyOS</replaceable>.mk</filename></term>
	<listitem><para>This file contains the platform-specific
	definitions that are used by pkgsrc. Start by copying one of the
	other files and edit it to your
	needs.</para></listitem></varlistentry>

	<varlistentry><term><filename>mk/platform/<replaceable>MyOS</replaceable>.pkg.dist</filename></term>
	<listitem><para>This file contains a list of directories,
	together with their permission bits and ownership. These
	directories will be created automatically with every package
	that explicitly sets <varname>USE_MTREE</varname>. This feature will
	be removed.</para></listitem></varlistentry>

	<varlistentry><term><filename>mk/platform/<replaceable>MyOS</replaceable>.x11.dist</filename></term>
	<listitem><para>Just copy one of the pre-existing x11.dist files
	to your
	<filename><replaceable>MyOS</replaceable>.x11.dist</filename>.</para></listitem></varlistentry>

	<varlistentry><term><filename>mk/tools/bootstrap.mk</filename></term>
	<listitem><para>On some operating systems, the tools that are
	provided with the base system are not good enough for pkgsrc.
	For example, there are many versions of &man.sed.1; that have a
	narrow limit on the line length they can process. Therefore
	pkgsrc brings its own tools, which can be enabled
	here.</para></listitem></varlistentry>

	<varlistentry><term><filename>mk/tools/tools.<replaceable>MyOS</replaceable>.mk</filename></term>
	<listitem><para>This file defines the paths to all the tools
	that are needed by one or the other package in pkgsrc, as well
	as by pkgsrc itself. Find out where these tools are on your
	platform and add them.</para></listitem></varlistentry>

	</variablelist>

	<para>Now, you should be able to build some basic packages, like
	<filename role="pkg">lang/perl5</filename>, <filename
	role="pkg">shells/bash</filename>.</para>

</sect1>

<sect1 id="porting.compiler">
<title>Adding support for a new compiler</title>

	<para>TODO</para>

</sect1>

</chapter>