Ravenports generated: 01 Oct 2020 01:22
[ravenports.git] / Mk / README
1 This directory contains the makefile logic for the Ravenports universal
2 package builder system.  The individual port makefiles are generated
3 and thus should conform to the definitions documented below.
4 Please ensure editor is set to 8-column hard tabs before modification.
5
6 --------------------------------------------------------------------------
7 --  System definitions
8 --------------------------------------------------------------------------
9
10 RAVENBASE               Ravenports base for hierarchy
11                         Default: /raven
12 WRKDIRPREFIX            Root of the temporary working directory hierarchy
13                         Default: /usr/obj/raven
14 DISTDIR                 Directory to store original distribution sources
15                         Default: ${RAVENBASE}/distfiles
16
17 --------------------------------------------------------------------------
18 --  Operating System Definitions (overridable)
19 --------------------------------------------------------------------------
20
21 ARCH                    The architecture of the target machine, such as
22                         would be returned by "uname -p".
23 ARCH_STANDARD           All variations of ia64 are called "x86_64" and
24                         all variations of ia64 are called "i386".  This
25                         may differ from ARCH definition.
26 OPSYS                   The name of the operating system, such as would
27                         be returned by "uname -s".
28 OSVERSION               An OS-specific kernel version.
29                         FreeBSD can return with "uname -K"
30 OSREL                   The version of the release/dev branch of the
31                         operating system using two points.
32 MAJOR                   The <major> release of operating system.  It is
33                         not simply OSREL:R (it may be same as OSREL)
34
35 --------------------------------------------------------------------------
36 --  Port identifiers and directories
37 --------------------------------------------------------------------------
38
39 NAMEBASE                The unique first segment of the package origin
40                         triplet.  It must be defined by the generated
41                         port makefile.
42 VERSION                 Version of the port, usually identical to the
43                         version designated by the vendor
44 REVISION                Iteration of port at the defined version
45                         Default: 0
46 EPOCH                   Whenever versions numerically regress, the epoch
47                         must be incremented to show the older version is
48                         actually the newest.  The epoch can never regress.
49                         Default: 0
50 KEYWORDS                At least one keyword from the list below must be
51                         used to describe the functionality of the port.
52                         There are no limits to how many keywords are used.
53 VARIANT                 Specified by ravenadm tool as part of build command
54                         Must conform to options listed in buildsheet.
55                         Default: standard (but always override)
56 PKGNAME_<SPKG>          Name of generated package minus extension. It is
57                         always defined as: ${NB}__${VAR}__${SPKG}-${VER}
58                         where NB=NAMEBASE, VAR=VARIANT, SPKG=subpackage,
59                         VER=VERSION
60 TWO_PART_ID             Port reference, always defined as:
61                         ${NAMEBASE}-${VARIANT}
62 DISTNAME                Used for default definition of WRKSRC and github
63                         distributions.  Default: ${NAMEBASE}-${VERSION}
64 WRKDIR                  Temporary working directory to build the port
65                         Defined as ${WRKDIRPREFIX}/${NAMEBASE} (no override)
66 WRKSRC                  Subdirectory to where distribution extracts
67                         Defined as ${WRKDIR}/${DISTNAME} (no override)
68                         see DIRTY_EXTRACT_<#> as well.
69 DIRTY_EXTRACT_<#>       Define to indicate that dist. file does not extract
70                         into a directory, so create ${WRKDIR}/${NAMEBASE}_<#>
71                         and unpack to there. if DIRTY_EXTRACT_1 set, WRKSRC
72                         gets defined to ${WRKDIR}/${NAMEBASE}_1
73 DIST_SUBDIR             Optional private subdirectory of ${DISTDIR}.
74                         Used for tidiness and reroll disambiguity.
75 STD_DOCDIR              The only location for non-man page documentation
76                         Defined: ${PREFIX}/share/doc/${NAMEBASE} (no override)
77 DESKTOPDIR              Directory to install desktop entries in
78                         Default: ${PREFIX}/share/applications
79 ./patches               Port subdirectory containing common additional
80                         patches made by port maintainer.
81 ./opsys                 Port subdirectory containing OS-specific patches and
82                         files.  ravenadm dynamically selects the right ones.
83 ./files                 Port subdirectory containing additional common
84                         non-patch files.
85 ./scripts               Port subdirectory containing auxilliary scripts.
86
87 --------------------------------------------------------------------------
88 --  Related to distribution
89 --------------------------------------------------------------------------
90
91 DF_INDEX                List of integers corresponding to complete set
92                         of distfiles to used in the current configuration.
93                         May be empty string if there are no distfiles
94 DISTFILE_<#>            Full filename plus mandatory group identifier.
95                         .e.g. mysql-5.6.35.tar.gz:main
96
97 --------------------------------------------------------------------------
98 --  Fetching
99 --------------------------------------------------------------------------
100
101 FORCE_FETCH_LIST        Used by scripts to specify which distfiles to
102                         unconditionally refetch.  Not used by humans.
103
104 DL_SITE_BACKUP          Backup locations(s) for distribution and patch
105                         files if not locally cached and attempts to fetch
106                         from DL_SITES and PATCH_SITES fail.
107                         Default: TBD (currently unset)
108 DL_SITE_OVERRIDE        If set, prepend DL_SITES* with this value
109 DL_SITE_DISABLE         Exclusively use official backup site for downloads
110 FETCH_REGET             Times to retry fetching after checksum errors.
111                         Default: 1
112 SKIP_CHECKSUM           If defined, allows fetching a file that is not
113                         listed in the distinfo file.  This can never be
114                         present the port makefile
115
116 --------------------------------------------------------------------------
117 --  Extraction
118 --------------------------------------------------------------------------
119
120 EXTRACT_HEAD_<#>        Extract command and leading arguments for
121                         distfile <#>.  Default: "${TAR} -xf"
122 EXTRACT_TAIL_<#>        Trailing arguments for extract command for
123                         distfile <#>.  Default: "--no-same-owner
124                         --no-same-permissions"
125 EXTRACT_ONLY            Set of indices related to distfiles to be extracted
126                         Default: ${DF_INDEX}
127 EXTRACT_WRKDIR_<#>      Directory to extract distfile of same index.
128                         Read-only, WRKDIR unless DIRTY_EXTRACT_<#> is defined,
129                         then it is ${WRKDIR}/${NAMEBASE}_<#>
130
131 --------------------------------------------------------------------------
132 --  Patching
133 --------------------------------------------------------------------------
134
135 PATCH_WRKSRC            Directory to apply patches in
136                         Default: ${WRKSRC}
137 PATCH_STRIP             How many elements are stripped from port patches
138                         Default: -p0
139 PATCH_DIST_STRIP        How many elements are stripped from vendor patches
140                         Default: -p0
141
142 --------------------------------------------------------------------------
143 --  Configuration
144 --------------------------------------------------------------------------
145
146 SCRIPTS_ENV             Additional environment vars passed to scripts in
147                         ./scripts executed by raven.mk.
148 CONFIGURE_WRKSRC        Directory to run configure in
149                         Default: ${WRKSRC}
150 HAS_CONFIGURE           If set, this port has its own configure script.
151                         The configure stage will not do anything if this
152                         is not set.
153 GNU_CONFIGURE           If set, you are using GNU configure (optional).
154                         Implies HAS_CONFIGURE.
155 CONFIGURE_SCRIPT        Name of configure script, relative to
156                         ${CONFIGURE_WRKSRC}. Default: "Makefile.PL"
157                         if USES=perl5 and USE_PERL5=configure are set,
158                         "configure" otherwise.
159 GNU_CONFIGURE_PREFIX    The directory passed as prefix to the configure
160                         script if GNU_CONFIGURE is set. Default: ${PREFIX}
161 CONFIGURE_ARGS          Pass these arguments to configure script.
162 CONFIGURE_ENV           Pass these env (shell-like) to configure script.
163 CONFIGURE_TARGET        The name of target to call when GNU_CONFIGURE is
164                         defined. Default: ${ARCH}-raven-${OPSYS:tl}${OSREL}
165 CONFIGURE_OUTSOURCE     If set, this builds in an empty ${CONFIGURE_WRKSRC}
166                         and redefines the default for CONFIGURE_, BUILD_,
167                         INSTALL_, and TEST_WRKSRC variables.
168
169 --------------------------------------------------------------------------
170 --  Building
171 --------------------------------------------------------------------------
172
173 BUILD_WRKSRC            Directory to do build in. Default: ${WRKSRC}
174 NO_BUILD                Use a dummy (do-nothing) build target
175 MAKEFILE                Name of the makefile. Default: Makefile
176 MAKE_ARGS               Any extra arguments to sub-make in build and install
177                         stages.  Default: none
178 MAKE_ENV                Additional environment vars passed to sub-make in
179                         build and install stages.  Default: see below
180 ALL_TARGET              Default target for sub-make in build stage.
181                         Default: all
182 SINGLE_JOB              Disallow multiple jobs even when user set a global
183                         override.  This is a per-port setting.
184 NUMBER_CPUS             Equal to ncpu (e.g. sysctl -n hw.ncpu)
185                         Must be set in global make.conf (mandatory)
186 DISABLE_MAKE_JOBS       Set to disable the multiple jobs feature.
187                         Global setting.
188 MAKE_JOBS_NUMBER        Override the number of make jobs to be used.
189                         if unset, NUMBER_CPUS is used.
190 MAKE_JOBS_NUMBER_LIMIT  Set a limit for maximum number of make jobs allowed
191                         to be used.
192 DESTDIRNAME             Name of variable representing DESTDIR.
193                         Port-settable.  Default: DESTDIR
194 DESTDIR_VIA_ENV         if defined, set ${DESTDIRNAME} in MAKE_ENV instead
195                         of MAKE_ARGS.  Per-port setting.
196
197 --------------------------------------------------------------------------
198 --  Flags and other settings that affect building
199 --------------------------------------------------------------------------
200
201 CFLAGS                  Additional switches to pass to the C compiler
202 CXXFLAGS                Additional switches to pass to the C++ compiler
203 CPPFLAGS                Additional switches to pass to C/C++ pre-processor
204 LDFLAGS                 Additional switches to pass to the linker
205
206 --------------------------------------------------------------------------
207 --  Compiler cache
208 --------------------------------------------------------------------------
209
210 BUILD_WITH_CCACHE       When set, enable ccache support globally.
211 CCACHE_DIR              Which directory to use for ccache
212                         Default: /root/.ccache
213 NO_CCACHE               Disable CCACHE support even when BUILD_WITH_CCACHE
214                         is defined.  Per-port setting.
215
216 --------------------------------------------------------------------------
217 --  Staging
218 --------------------------------------------------------------------------
219
220 NO_INSTALL              Use a dummy (do-nothing) install target
221
222 --------------------------------------------------------------------------
223 --  Package manifests
224 --------------------------------------------------------------------------
225
226 INFO_PATH               Path, where all .info files will be installed by your
227                         port, relative to ${PREFIX}. Default: share/info
228 INFO_<subpackage>       List of .info files (omitting the trailing ".info")
229                         in a given subpackage.  These files are located in
230                         the path relative to ${INFO_PATH}
231 MANPREFIX               The directory prefix for ${MAN<sect>} and ${MLINKS}.
232                         Default: ${PREFIX}/share
233 MAN<sect>PREFIX         If manual pages of some sections install in different
234                         locations than others, use these.
235                         Default: ${MANPREFIX}
236 RC_SUBR_<subpackage>    If set, the ports startup/shutdown script uses the
237                         common routines found in /etc/rc.subr.  If this is
238                         set to a list of files, these files will be
239                         automatically added to ${SUB_FILES}, some %%VAR%%'s
240                         will automatically be expanded, they will be
241                         installed in ${PREFIX}/etc/rc.d if ${PREFIX} is not
242                         /usr, otherwise they will be installed in /etc/rc.d/
243                         and added to the subpackage manifest.
244
245 --------------------------------------------------------------------------
246 --  Debugging
247 --------------------------------------------------------------------------
248
249 ECHO_MSG                Used to print the '===>' style comments.
250                         Override to turn them off.
251                         Default: ${ECHO_CMD}
252 DO_NADA                 Command on how to do nothing
253                         Default: ${TRUE}
254 PATCH_DEBUG             If set, print out more information about the
255                         patches as it attempts to apply them.
256 WITH_DEBUG              If set, debugging flags are added to CFLAGS and the
257                         binaries don't get stripped by INSTALL_PROGRAM or
258                         INSTALL_LIB.
259 DEBUG_FLAGS             When WITH_DEBUG defined, additional flags are
260                         passed to compiler.  Default: -g
261
262 --------------------------------------------------------------------------
263 --  Keyword Descriptions
264 --------------------------------------------------------------------------
265          
266 accessibility           Targeted at disabled users
267 archivers               Utilities for archiving and recovering data
268 astro                   Targeted at users interested in astronomy
269 audio                   Utilities related to sound
270 benchmarks              Utilities for measuring system performance
271 biology                 Targeted at users interested in biology
272 cad                     Targeted at users of computer aided design
273 comms                   Utilities related to communications (e.g. radio)
274 converters              Utilities related to conversions
275 databases               Data servers, clients, and related tools
276 deskutils               Applications for the desktop
277 devel                   Software development libraries and utilities
278 dns                     DNS servers, clients, and related tools
279 editors                 Text editors
280 emulators               Tools for emulating other op. systems
281 finance                 Monetary and financial tools
282 ftp                     FTP servers, clients, and related tools
283 games                   self-explanatory
284 geography               Geographic information software and tools
285 graphics                Graphics libraries and utilities
286 irc                     Internet Relay Chat servers and clients
287 lang                    Computer languages and compilers
288 mail                    email servers, clients and related tools
289 math                    Mathematical computation software
290 misc                    Miscellaneous (hard to classify)
291 multimedia              self-explanatory
292 net                     Networking utilities
293 net_im                  Instant messaging software
294 net_mgmt                Network management utilities
295 net_p2p                 Peer-to-Peer networking software
296 news                    USENET news support software
297 print                   Utilities dealing with printing
298 raven                   Tools related to Ravenports dev. and mgmt.
299 science                 Software targeted at scientists
300 security                System security software
301 shells                  Command line interpreters
302 sysutils                System utilities (often OS-specific)
303 textproc                text processing and search utiltiies
304 wayland                 Software using wayland display server protocol
305 www                     Web browsers, http servers, and utilities
306 x11                     X-Windows system utilities
307 x11_clocks              X-Windows clock applications
308 x11_drivers             X-Windows drivers (all types)
309 x11_fm                  X-Windows file managers
310 x11_fonts               X-Windows fonts and utilities
311 x11_servers             X-Windows servers
312 x11_themes              X-Windows system themes
313 x11_toolkits            X-Windows development tools
314 x11_wm                  X-Windows windows managers
315
316 Computer language subcategories
317 ----------------------------------
318 ada
319 c++
320 csharp
321 java
322 javascript
323 lisp
324 perl
325 php
326 python
327 ruby
328 rust
329 scheme
330
331 Language/Region specific categories
332 -----------------------------------
333 arabic
334 chinese
335 french
336 german
337 italian
338 japanese
339 korean
340 portuguese
341 russian
342 spanish
343 vietnamese