diff --git a/handbook/Makefile b/handbook/Makefile index fe676e8e48..801dc6a427 100644 --- a/handbook/Makefile +++ b/handbook/Makefile @@ -1,9 +1,9 @@ -# $Id: Makefile,v 1.6 1995-10-14 21:49:43 jfieber Exp $ +# $Id: Makefile,v 1.7 1995-12-07 13:22:12 jkh Exp $ SRCS= authors.sgml basics.sgml bibliography.sgml boothelp.sgml SRCS+= booting.sgml contrib.sgml crypt.sgml ctm.sgml current.sgml dialup.sgml SRCS+= diskless.sgml dma.sgml eresources.sgml esdi.sgml -SRCS+= firewalls.sgml glossary.sgml +SRCS+= firewalls.sgml glossary.sgml goals.sgml SRCS+= handbook.sgml history.sgml hw.sgml install.sgml kerberos.sgml SRCS+= kernelconfig.sgml kerneldebug.sgml memoryuse.sgml SRCS+= mirrors.sgml nfs.sgml nutshell.sgml diff --git a/handbook/goals.sgml b/handbook/goals.sgml new file mode 100644 index 0000000000..24ca6c8ffc --- /dev/null +++ b/handbook/goals.sgml @@ -0,0 +1,9 @@ + + + +FreeBSD Project goals + +

Contributed by &a.jkh;. + +

Note: This section is under construction. + diff --git a/handbook/handbook.sgml b/handbook/handbook.sgml index 6c4c341961..7101b45cdf 100644 --- a/handbook/handbook.sgml +++ b/handbook/handbook.sgml @@ -1,4 +1,4 @@ - + . Basics Introduction +

FreeBSD is a 4.4 BSD Lite based operating system for Intel + architecture (x86) based PCs. For an overview of FreeBSD, see + . For a + history of the project, read . To see a description of the + latest release, read . If you're interested + in contributing something to the FreeBSD project (code, equipment, + sacks of unmarked bills), please see about . + &nutshell; &history; + &goals; &relnotes; &install; @@ -59,7 +71,6 @@ Web server">. Installing applications * Installing packages &ports; - &porting; @@ -124,8 +135,8 @@ Web server">. &ctm; ⊃ &kerneldebug; - &submitters; &troubleshooting; + &submitters; diff --git a/handbook/porting.sgml b/handbook/porting.sgml index bc40ca21d4..50c9659ef0 100644 --- a/handbook/porting.sgml +++ b/handbook/porting.sgml @@ -1,21 +1,30 @@ - + -Porting applications +Porting an existing piece of free software

Contributed by &a.jkh;, &a.gpalmer; and &a.asami;.19 August 1995. - Here are the guidelines one should follow in - creating a new port for FreeBSD 2.x . This documentation will - change as this process is progressively refined, so watch - this space for details. The ${..} - variable names you see in this document all refer to - various user-overridable defaults used (and documented) - by /usr/share/mk/bsd.port.mk. Please refer to - that file for more details. +

The porting of freely available software, while perhaps not as +gratifying as developing your own from scratch, is still a vital part +of FreeBSD's growth and of great usefulness to those who wouldn't +otherwise know where to turn for it. All ported software is organized +into a carefully organized hierarchy know as ``the ports collection''. +The collection enables a new user to get a quick and complete overview +of what's available for FreeBSD in an easy-to-compile form. It also +saves considerable space by not actually containing the the majority +of the sources being ported, but merely those differences required for +running under FreeBSD. - +

What follows are some guidelines for creating a new port for +FreeBSD 2.x . The ${..} variable names you will +see in this document all refer to various user-overridable defaults +used (and documented) by /usr/share/mk/bsd.port.mk. +Please refer to that file for more details on the inner workings of +the ports collection. + + Before Starting the Port

Note: Only a fraction of the overridable variables are @@ -98,7 +107,7 @@ screwed up and used it in the wrong place doesn't mean you should do so too. - + Quick Porting

This section tells you how to do a quick port. In many @@ -114,7 +123,7 @@ change something, you'll have to refer to the next section too. - + Writing the Makefile

The minimal Makefile would look something like this: @@ -125,7 +134,7 @@ # Date created: 5 December 1994 # Whom: asami # - # $Id: porting.sgml,v 1.10 1995-12-04 17:58:44 jfieber Exp $ + # $Id: porting.sgml,v 1.11 1995-12-07 13:22:15 jkh Exp $ # DISTNAME= oneko-1.1b @@ -144,7 +153,7 @@ automatically by CVS when the port is imported to our main ports tree. - + Writing the description files

There are three required description files that are @@ -152,7 +161,7 @@ They are COMMENT, DESCR, and PLIST, and reside in the pkg subdirectory. - + COMMENT

This is the one-line description of the port. It is @@ -162,7 +171,7 @@ A cat chasing a mouse all over the screen - + DESCR

This is a longer description of the port. One to a few @@ -186,7 +195,7 @@ the screen. asami@cs.berkeley.edu - + PLIST

This file lists all the files installed by the port. It @@ -206,13 +215,13 @@ lib/X11/oneko/cat2.xpm lib/X11/oneko/mouse.xpm - + Creating the checksum file

Just type `make makesum'. The ports make rules will automatically generate the file files/md5. - + Testing the port

You should make sure that the port rules do exactly what @@ -223,7 +232,7 @@ lib/X11/oneko/mouse.xpm <pkgname>.tgz' and see if everything re-appears and works correctly. - + Submitting the port

Now that you're happy with your port, the only thing @@ -242,7 +251,7 @@ ftp://ftp.freebsd.org/pub/FreeBSD/incoming/ FreeBSD contributors' on the FreeBSD Handbook and other files. Isn't that great?!? :) - + Slow Porting

Ok, so it wasn't that simple, and the port required some @@ -250,7 +259,7 @@ ftp://ftp.freebsd.org/pub/FreeBSD/incoming/ explain, step by step, how to modify it to get it to work with the ports paradigm. - + How things work

First, this is the sequence of events which occurs when the @@ -347,7 +356,7 @@ ftp://ftp.freebsd.org/pub/FreeBSD/incoming/ `make', let's go through the recommended steps to create the perfect port. - + Getting the original sources

Get the original sources (normally) as a compressed tarball @@ -372,7 +381,7 @@ ftp://freefall.freebsd.org/pub/FreeBSD/LOCAL_PORTS/ we have a way to handle these situations (see the description of ${PATCHFILES} below). - + Modifying the port

Unpack a copy of the tarball in a private directory and @@ -392,7 +401,7 @@ ftp://freefall.freebsd.org/pub/FreeBSD/LOCAL_PORTS/ as possible for the end-user while using a minimum of disk space. - + Patching

In the preparation of the port, files that have been added @@ -414,7 +423,7 @@ ftp://freefall.freebsd.org/pub/FreeBSD/LOCAL_PORTS/ same file (e.g., patch-aa and patch-ab both changing ${WRKSRC}/foobar.c). - + Configuring

Include any additional customization commands to your @@ -423,7 +432,7 @@ ftp://freefall.freebsd.org/pub/FreeBSD/LOCAL_PORTS/ can also do this as Makefile targets and/or scripts with the name pre-configure or post-configure. - + Handling user input

If your port requires user input to build, configure or @@ -434,7 +443,7 @@ ftp://freefall.freebsd.org/pub/FreeBSD/LOCAL_PORTS/ then only those ports requiring interaction are built). - + Configuring the Makefile

Configuring the Makefile is pretty simple, and again we @@ -442,7 +451,7 @@ ftp://freefall.freebsd.org/pub/FreeBSD/LOCAL_PORTS/ starting. Consider the following problems in sequence as you design your new Makefile: - + The original source

Does it live in ${DISTDIR} as a standard @@ -461,7 +470,7 @@ ftp://freefall.freebsd.org/pub/FreeBSD/LOCAL_PORTS/ `do-extract' target to override the default, though this should be rarely, if ever, necessary. - + DISTNAME

You should set ${DISTNAME} to be the base name of your port. The default rules expect the @@ -492,7 +501,7 @@ work/foozolix-1.0/ extraction, and the rest will be just left in ${DISTDIR} for later use. - + CATEGORIES and KEYWORDS

When a package is created, it is put under /usr/ports/packages/All and links are made from one @@ -513,7 +522,7 @@ work/foozolix-1.0/ ${CATEGORIES}. This is currently used only as a field of the /usr/ports/INDEX file. - + MASTER_SITES

If you have a ftp-URL pointing at the the original tarball, record the directory containing the tarball in @@ -531,7 +540,7 @@ work/foozolix-1.0/ to add support for automatically determining the closest master site and fetching from there! - + PATCHFILES

If your port requires some additional patches that are available by ftp, set ${PATCHFILES} to the @@ -550,16 +559,16 @@ work/foozolix-1.0/ decompressed automatically if the filenames end with `.gz' or `.Z'. - + MAINTAINER

Set your mail-address here. Please. :) - + Dependencies

Many ports depend on other ports. There are five variables that you can use to ensure that all the required bits will be on the user's machine. - + LIB_DEPENDS

This variable specifies the shared libraries this port depends on. It is a list of `lib:dir' pairs @@ -576,7 +585,7 @@ LIB_DEPENDS= tcl\\.7\\.:${PORTSDIR}/lang/tcl Note that the lib part is just an argument given to `ldconfig -r | grep', so periods should be escaped by two backslashes like in the example above. - + RUN_DEPENDS

This variable specifies executables this port depends on during run-time. It is a list of `exec:dir' @@ -594,7 +603,7 @@ RUN_DEPENDS= wish:${PORTSDIR}/x11/tk target. Also, the name of the dependency is put in to the package so that pkg_add will automatically install it if it is not on the user's system. - + BUILD_DEPENDS

This variable specifies executables this port requires to build. Like RUN_DEPENDS, it is a list of @@ -609,7 +618,7 @@ BUILD_DEPENDS= unzip:${PORTSDIR}/archivers/unzip Note that `build' here means everything from extracting to compilation. The dependency is checked from within the extract target. - + FETCH_DEPENDS

This variable specifies executables this port requires to fetch. Like the previous two, it is a list of @@ -623,7 +632,7 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 The dependency is checked from within the fetch target. - + DEPENDS

If there is a dependency that doesn't fall into either of the above four categories, or your port requires to have @@ -632,7 +641,7 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 just a list of directories, as there is nothing to check, unlike the previous two. - + Building mechanisms

If your package uses GNU make, set `USE_GMAKE=yes'. If your package uses GNU @@ -654,14 +663,14 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 ${ALL_TARGET} accordingly. Same goes for `install' and ${INSTALL_TARGET}. - + NO_INSTALL_MANPAGES

If the port uses imake but doesn't understand the `install.man' target, `NO_INSTALL_MANPAGES=yes' should be set. In addition, the author of the original port should be shot. - + Licensing Problems

Some software packages have restrictive licenses or are in violation to the law (PKP's patent on public key crypto, @@ -688,17 +697,17 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2

Note: If you are a committer, make sure you update the ports/LEGAL file too. - + * Upgrading

This section is still under construction, sorry. - + Do's and Dont's

Here's a list of common do's and dont's that you encounter during the porting process. - + WRKDIR

Don't leave anything valuable lying around in the `work' subdirectory, `make clean' will @@ -707,14 +716,14 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 `files' and use the post-extract target to copy them to the `work' subdirectory. - + Package information

Do install package information, i.e., the three files in pkg. Note that these files are not used only for packaging anymore, and are mandatory now, even if ${NO_PACKAGE} is set. - + Compress manpages, strip binaries

Do compress manpages and strip binaries. If the original source already does that, fine; otherwise, you can add a @@ -734,7 +743,7 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 to check whether the binary is stripped or not. If it doesn't say `not stripped', it is stripped. - + Custom utilities

Don't rely on custom utilities in your local configure script or anything -- they may not be there on the user's @@ -755,14 +764,14 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 `make' and have that port, as well as everything it requires, built automatically. - + Feedback

Do send applicable changes/patches to the original author/maintainer for inclusion in next release of the code. This will only make your job that much easier for the next release. - + RCS strings

Don't put RCS strings in patches. CVS will mangle them when we put the files into the ports tree, and when we check @@ -771,7 +780,7 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 (`$') signs, and typically start with `$Id' or `$RCS'. - + Recursive diff

Using the recurse (`-r') option to diff to generate patches is fine, but please take a look at the @@ -783,7 +792,7 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 post-extract target rather than as part of the patch. - + PREFIX

Do try to make your port install relative to ${PREFIX} in your Makefiles. This will @@ -801,7 +810,7 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 of ${PREFIX} unless the package is one that hard-codes itself to a compiled-in location. - + Subdirectories

Try to let the port put things in the right subdirectories of ${PREFIX}. Some ports lump everything @@ -818,7 +827,7 @@ FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 /usr pretty much applies to /usr/local too. - + ldconfig

If your port installs a shared library, add a post-install target to your Makefile that runs @@ -851,7 +860,7 @@ lib/libtcl.so.7.3 eternally rot to death in the deepest bowels of hell (not necessarily in that order).... - + If you are stuck....

Do look at existing examples and the bsd.port.mk file before asking us questions! ;) @@ -859,7 +868,7 @@ lib/libtcl.so.7.3

Do ask us questions if you have any trouble! Don't just beat your head against a wall! :) - + A Sample Makefile

Here is a sample Makefile that you can use to create a new port. Make sure you remove all the extra comments (ones @@ -880,7 +889,7 @@ lib/libtcl.so.7.3 person who wrote this Makefile] # Whom: Satoshi Asami # - # $Id: porting.sgml,v 1.10 1995-12-04 17:58:44 jfieber Exp $ + # $Id: porting.sgml,v 1.11 1995-12-07 13:22:15 jkh Exp $ [ ^^^^ don't worry about this...it will be automatically filled in by CVS when it is committed to our repository] # @@ -943,7 +952,7 @@ lib/libtcl.so.7.3 .include - + Package Names

The following are the conventions you should follow in @@ -998,7 +1007,7 @@ xvgr-2.10pl1 xvgr-2.10.1 `pl' allowed only when no maj/minor numbers original author or use the date string (`yy.mm.dd') as the version. - + That's It, Folks!

Boy, this sure was a long tutorial, wasn't it? Thanks for diff --git a/handbook/relnotes.sgml b/handbook/relnotes.sgml index 2357ec323f..1fe377c268 100644 --- a/handbook/relnotes.sgml +++ b/handbook/relnotes.sgml @@ -1,11 +1,11 @@ - + - About this release + About the current release

FreeBSD is a freely available, full source 4.4 BSD Lite based release for Intel i386/i486/Pentium (or diff --git a/handbook/sections.sgml b/handbook/sections.sgml index b98430ec85..34b19db2db 100644 --- a/handbook/sections.sgml +++ b/handbook/sections.sgml @@ -1,4 +1,4 @@ - + @@ -17,6 +17,7 @@ + diff --git a/handbook/submitters.sgml b/handbook/submitters.sgml index b541641d80..1913769e62 100644 --- a/handbook/submitters.sgml +++ b/handbook/submitters.sgml @@ -1,46 +1,96 @@ - + Contributing to FreeBSD

Contributed by &a.jkh;. -This guide is intended for those who are moderately familiar with -FreeBSD and have reached a point where they have some locally -developed customizations or fixes to the system which they'd like to -incorporate back into the mainstream sources. Submitting something to -the FreeBSD project ensures that you won't have to continually -reintegrate it with each subsequent release and is also an excellent -way of getting your code seriously tested! Many people have -seen an original concept develop far beyond what they might have -originally envisioned simply due to the flood of feedback and ideas -generated by the many thousands of users of FreeBSD. Contributions -are also what FreeBSD lives and grows from, so your contributions are -very important to the continued survival of this communal effort of -ours---we're very glad to see you reading this document! +

So you want to contribute something to FreeBSD? That's great! +We can always use the help, and FreeBSD is one of those systems +that relies on the contributions of its user base in order +to survive. Your contributions are not only appreciated, they're +vital to FreeBSD's continued growth! -Submissions to FreeBSD can generally be classified into four categories: +

Contrary to what some people might also have you believe, you don't +need to be a hot-shot programmer or a close personal friend of the +FreeBSD core team in order to have your contributions accepted. The +FreeBSD Project's development is done by a large and growing number of +international contributors who's ages and areas of technical expertise +vary greatly, and there is always more work to be done than there are +people available to do it. + +

Since the FreeBSD project is responsible for an entire operating +system environment (and its installation) rather than just a kernel or +a few scattered utilities, our "TODO" list also spans a very wide +range of tasks, from documentation, beta testing and presentation to +highly specialized types of kernel development. No matter what your +skill level, there's almost certainly something you can do to help the +project! + +

Commmercial entities engaged in FreeBSD-related enterprises are +also encouraged to contact us. Need a special extention to make your +product work? You'll find us receptive to your requests, given that +they aren't too outlandish. Working on a value-added product? Please +let us know! We may be able to work cooperatively on some aspect of +it. The free software world is challenging a lot of existing +assumptions about how software is developed, sold, and maintained +throughout its life cycle, and we urge you to at least give it a +second look. + +What's needed + +

The following list of tasks and sub-projects represents something +of an amalgam of the various core team TODO lists and user requests +we've collected over the last couple of months. Where possible, tasks +have been ranked by degree of urgency. If you're interested in +working on one of the tasks you see here, send mail to the coordinator +listed by clicking on their names. If no coordinator has been +appointed, maybe you'd like to volunteer? + +Urgently needed +

The following tasks are considered to be urgent, usually because +they represent something that is badly broken: -Ideas, general suggestions, bug reports. -Changes to existing sources. -Significant contribution of a large body of independent work. -Porting of freely available software. +Fix the DOS file system. Coordinator: . +Fix the union file system. Coordinator: -A submission in any of these categories is highly welcomed as they -are each, in their own way, quite significant to the project. +Not urgently needed +

The following tasks need to be done, but not with any particular +urgency: + +Put something here. + -Ideas and suggestions +Would be nice to have +

The following tasks are purely cosmetic or represent such an +investment or work that it's not likely that anyone will get them done +anytime soon: + + +Put something here too. + + +How to contribute + +

Contributions to the system generally fall into one or more of +the following 5 categories: + +Bug reports and general commentary +

If you have a bug to report or a suggestion to make: -

An idea, suggestion or fix can be communicated in one of the following ways: An idea or suggestion of general technical interest should be - mailed to <hackers@freebsd.org>. + mailed to . Likewise, people with an interest in such things (and a tolerance for a high volume of mail!) may subscribe to the hackers mailing list by sending mail to - <majordomo@freebsd.org>. + . See for more information about this and other mailing lists. @@ -56,10 +106,19 @@ are each, in their own way, quite significant to the project. a week, depending on your email connection) or are, for some reason, unable to use the send-pr(1) command, then you may also file a bug report by sending mail to - <bugs@freebsd.org>. + . -Changes to the existing code +Changes to the documentation + +

Changes to the documentation are overseen by the FreeBSD Documentation +Project, which can be reached at . This does not generally include +changes to manual pages, which should be considered under the category +of "changes to existing source code." + +Changes to existing source code

An addition or change to the existing source code is a somewhat trickier affair and depends a lot on how far out of date you are with the current @@ -96,7 +155,8 @@ diff -c -r olddir newdir patch(1) command), you should bundle them up in an email message and send it, along with a brief description of what the diffs are for, to - <hackers@freebsd.org>. Someone will very + . Someone will very likely get back in touch with you in 24 hours or less, assuming of course that your diffs are interesting! :-) @@ -105,22 +165,23 @@ diff -c -r olddir newdir then you may be better off bundling any new files, diffs and instructions for deleting/renaming others into a tar file and running the uuencode(1) program on it before - sending the output of that to <hackers@freebsd.org>. + sending the output of that to . See the man pages on tar(1) and uuencode(1) for more information on bundling files this way. If your change is of a potentially sensitive nature, e.g. you're unsure of copyright issues governing its further distribution or you're simply not ready to release it without a tighter review first, - then you should send it to <core@freebsd.org> rather than + then you should send it to rather than <hackers@freebsd.org>. The core mailing list reaches a much smaller group of people who do much of the day-to-day work on FreeBSD. Note that this group is also very busy and so you should only send mail to them in cases where mailing to hackers is truly impractical. - -Contributions of new code +Contributions of new code

In the case of a significant contribution of a large body work, or the addition of an important new feature to FreeBSD, @@ -193,30 +254,9 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - $Id: submitters.sgml,v 1.8 1995-10-07 04:32:03 jfieber Exp $ + $Id: submitters.sgml,v 1.9 1995-12-07 13:22:18 jkh Exp $ For your convenience, a copy of this text can be found in /usr/share/examples/etc/bsd-style-copyright. - -Porting of software - -

The porting of freely available software, while perhaps not as -gratifying as developing your own from scratch, is still a vital part -of FreeBSD's growth and of great usefulness to those who wouldn't -otherwise know where to turn for it. All ported software is organized -into a carefully organized hierarchy know as ``the ports collection''. -The collection enables a new user to get a quick and complete overview -of what's available for FreeBSD in an easy-to-compile form. It also -saves considerable space by not actually containing the the majority -of the sources being ported, but merely those differences required for -running under FreeBSD. See for more information on using the ports collection and - for guidelines on -creating new ports. You may also send mail to -<ports@freebsd.org>. - -Whichever way you decide to contribute, we hope you'll find it an -enjoyable and rewarding process. Such contributions are also very -valuable to FreeBSD's continued progress, and as a free software -effort, the more we all put in the more we all get back out of it! + &porting;