041e06d511
column starts in column 1. Everything else is left to the style sheet.
199 lines
9.4 KiB
XML
199 lines
9.4 KiB
XML
<!-- $NetBSD: examples.xml,v 1.12 2007/06/01 11:07:24 rillig Exp $ -->
|
|
|
|
<appendix id="examples">
|
|
<title>A simple example package: bison</title>
|
|
|
|
<para>We checked to find a piece of software that wasn't in the packages
|
|
collection, and picked GNU bison. Quite why someone would want to have
|
|
<command>bison</command> when Berkeley <command>yacc</command> is already
|
|
present in the tree is beyond us, but it's useful for the purposes of
|
|
this exercise.</para>
|
|
|
|
<sect1 id="example-files">
|
|
<title>files</title>
|
|
|
|
<sect2 id="example-Makefile">
|
|
<title>Makefile</title>
|
|
|
|
<programlisting>
|
|
# $NetBSD$
|
|
#
|
|
|
|
DISTNAME= bison-1.25
|
|
CATEGORIES= devel
|
|
MASTER_SITES= ${MASTER_SITE_GNU}
|
|
|
|
MAINTAINER= thorpej@NetBSD.org
|
|
HOMEPAGE= http://www.gnu.org/software/bison/bison.html
|
|
COMMENT= GNU yacc clone
|
|
|
|
GNU_CONFIGURE= yes
|
|
INFO_FILES= bison.info
|
|
|
|
.include "../../mk/bsd.pkg.mk"
|
|
</programlisting>
|
|
</sect2>
|
|
|
|
<sect2 id="example-descr">
|
|
<title>DESCR</title>
|
|
|
|
<programlisting>
|
|
GNU version of yacc. Can make re-entrant parsers, and numerous other
|
|
improvements. Why you would want this when Berkeley &man.yacc.1; is part
|
|
of the &os; source tree is beyond me.
|
|
</programlisting>
|
|
</sect2>
|
|
|
|
<sect2 id="example-plist">
|
|
<title>PLIST</title>
|
|
|
|
<programlisting>
|
|
@comment $NetBSD$
|
|
bin/bison
|
|
man/man1/bison.1.gz
|
|
share/bison.simple
|
|
share/bison.hairy
|
|
</programlisting>
|
|
</sect2>
|
|
|
|
<sect2 id="checking-package-with-pkglint">
|
|
<title>Checking a package with <command>pkglint</command></title>
|
|
|
|
<para>The NetBSD package system comes with
|
|
<filename role="pkg">pkgtools/pkglint</filename>
|
|
which helps to check the contents of these
|
|
files. After installation it is quite easy to use, just change to the
|
|
directory of the package you wish to examine and execute
|
|
<command>pkglint</command>:</para>
|
|
|
|
<screen>&uprompt; <userinput>pkglint</userinput>
|
|
looks fine.</screen>
|
|
|
|
<para>Depending on the supplied command line arguments (see pkglint(1)),
|
|
more checks will be performed. Use e.g. <command>pkglint -Call
|
|
-Wall</command> for a very thorough check.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="steps-for-b-i-p">
|
|
<title>Steps for building, installing, packaging</title>
|
|
|
|
<para>Create the directory where the package lives,
|
|
plus any auxiliary directories:</para>
|
|
|
|
<screen>&rprompt; <userinput>cd /usr/pkgsrc/lang</userinput>
|
|
&rprompt; <userinput>mkdir bison</userinput>
|
|
&rprompt; <userinput>cd bison</userinput>
|
|
&rprompt; <userinput>mkdir patches</userinput></screen>
|
|
|
|
<para>Create <filename>Makefile</filename>, <filename>DESCR</filename> and
|
|
<filename>PLIST</filename> (see <xref linkend="components"/>)
|
|
then continue with fetching the distfile:</para>
|
|
|
|
<screen>&rprompt; <userinput>make fetch</userinput>
|
|
>> bison-1.25.tar.gz doesn't seem to exist on this system.
|
|
>> Attempting to fetch from ftp://prep.ai.mit.edu/pub/gnu//.
|
|
Requesting ftp://prep.ai.mit.edu/pub/gnu//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/)
|
|
ftp: Error retrieving file: 500 Internal error
|
|
|
|
>> Attempting to fetch from ftp://wuarchive.wustl.edu/systems/gnu//.
|
|
Requesting ftp://wuarchive.wustl.edu/systems/gnu//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/)
|
|
ftp: Error retrieving file: 500 Internal error
|
|
|
|
>> Attempting to fetch from ftp://ftp.freebsd.org/pub/FreeBSD/distfiles//.
|
|
Requesting ftp://ftp.freebsd.org/pub/FreeBSD/distfiles//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/)
|
|
Successfully retrieved file.</screen>
|
|
|
|
<para>Generate the checksum of the distfile into
|
|
<filename>distinfo</filename>:</para>
|
|
|
|
<screen>&rprompt; <userinput>make makedistinfo</userinput></screen>
|
|
|
|
<para>Now compile:</para>
|
|
|
|
<screen>&rprompt; <userinput>make</userinput>
|
|
>> Checksum OK for bison-1.25.tar.gz.
|
|
===> Extracting for bison-1.25
|
|
===> Patching for bison-1.25
|
|
===> Ignoring empty patch directory
|
|
===> Configuring for bison-1.25
|
|
creating cache ./config.cache
|
|
checking for gcc... cc
|
|
checking whether we are using GNU C... yes
|
|
checking for a BSD compatible install... /usr/bin/install -c -o bin -g bin
|
|
checking how to run the C preprocessor... cc -E
|
|
checking for minix/config.h... no
|
|
checking for POSIXized ISC... no
|
|
checking whether cross-compiling... no
|
|
checking for ANSI C header files... yes
|
|
checking for string.h... yes
|
|
checking for stdlib.h... yes
|
|
checking for memory.h... yes
|
|
checking for working const... yes
|
|
checking for working alloca.h... no
|
|
checking for alloca... yes
|
|
checking for strerror... yes
|
|
updating cache ./config.cache
|
|
creating ./config.status
|
|
creating Makefile
|
|
===> Building for bison-1.25
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g LR0.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g allocate.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g closure.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g conflicts.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g derives.c
|
|
cc -c -DXPFILE=\"/usr/pkg/share/bison.simple\" -DXPFILE1=\"/usr/pkg/share/bison.hairy\" -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -g ./files.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g getargs.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g gram.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g lalr.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g lex.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g main.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g nullable.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g output.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g print.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g reader.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g reduce.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g symtab.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g warshall.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g version.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g getopt.c
|
|
cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g getopt1.c
|
|
cc -g -o bison LR0.o allocate.o closure.o conflicts.o derives.o files.o getargs.o gram.o lalr.o lex.o main.o nullable.o output.o print.o reader.o reduce.o symtab.o warshall.o version.o getopt.o getopt1.o
|
|
./files.c:240: warning: mktemp() possibly used unsafely, consider using mkstemp()
|
|
rm -f bison.s1
|
|
sed -e "/^#line/ s|bison|/usr/pkg/share/bison|" < ./bison.simple > bison.s1</screen>
|
|
|
|
<para>Everything seems OK, so install the files:</para>
|
|
|
|
<screen>&rprompt; <userinput>make install</userinput>
|
|
>> Checksum OK for bison-1.25.tar.gz.
|
|
===> Installing for bison-1.25
|
|
sh ./mkinstalldirs /usr/pkg/bin /usr/pkg/share /usr/pkg/info /usr/pkg/man/man1
|
|
rm -f /usr/pkg/bin/bison
|
|
cd /usr/pkg/share; rm -f bison.simple bison.hairy
|
|
rm -f /usr/pkg/man/man1/bison.1 /usr/pkg/info/bison.info*
|
|
install -c -o bin -g bin -m 555 bison /usr/pkg/bin/bison
|
|
/usr/bin/install -c -o bin -g bin -m 644 bison.s1 /usr/pkg/share/bison.simple
|
|
/usr/bin/install -c -o bin -g bin -m 644 ./bison.hairy /usr/pkg/share/bison.hairy
|
|
cd .; for f in bison.info*; do /usr/bin/install -c -o bin -g bin -m 644 $f /usr/pkg/info/$f; done
|
|
/usr/bin/install -c -o bin -g bin -m 644 ./bison.1 /usr/pkg/man/man1/bison.1
|
|
===> Registering installation for bison-1.25</screen>
|
|
|
|
<para>You can now use bison, and also - if you decide so - remove it with
|
|
<command>pkg_delete bison</command>. Should you decide that you want a
|
|
binary package, do this now:</para>
|
|
|
|
<screen>&rprompt; <userinput>make package</userinput>
|
|
>> Checksum OK for bison-1.25.tar.gz.
|
|
===> Building package for bison-1.25
|
|
Creating package bison-1.25.tgz
|
|
Registering depends:.
|
|
Creating gzip'd tar ball in '/u/pkgsrc/lang/bison/bison-1.25.tgz'</screen>
|
|
|
|
<para>Now that you don't need the source and object files
|
|
any more, clean up:</para>
|
|
|
|
<screen>&rprompt; <userinput>make clean</userinput>
|
|
===> Cleaning for bison-1.25</screen>
|
|
</sect1>
|
|
</appendix>
|