Chapter 14. Becoming a Developer

Chapter 12 introduced you to some of the areas any PC-BSD user can explore to contribute to the PC-BSD community. This chapter covers more advanced forms of contribution that typically require programming skills. If you are a programmer, taking programming in school and looking for opportunities to practice your skills, or if you are interested in learning more about how the PC-BSD operating system and push button installer applications (PBIs) are developed, this chapter is for you.

We begin by describing the PC-BSD release engineering process and the resources available to developers to give you an idea of what to expect. If you have limited programming knowledge, you can still successfully complete the tasks found in the section on "Converting a FreeBSD Port Using PBI Builder."

PC-BSD Release Engineering Process

Any large software project needs a set of guiding principles and processes. Ideally, a project's processes are documented so new developers know what to expect. Processes are meant to address how the software project manages its code development, answering questions such as:

  • Where is the source code located? Is it browsable? Is it downloadable?"

  • Who is allowed to make (commit) changes to the source code? Are changes monitored or checked by other developers?

  • Can a committer make a change anywhere in the code base or are committers given write permission to only certain sections of the code?

  • How often are new changes tested against the entire code base? If a commit breaks something, who is alerted and who fixes the problem?

  • Are commits made against the current released version of the software or to a testing version that has not been released yet?

  • Who determines what features should go into the next software release?

  • Are there any rules governing what style of code developers are expected to use?

  • How often are new versions of the software released?

  • How long are older versions of the software maintained for security patches?

The rest of this section provides an overview of how PC-BSD manages its development process.

Tip

It is useful to remember that PC-BSD is based on FreeBSD and closely follows FreeBSD's set of processes that are documented in the FreeBSD Release Engineering[104] document.

The code base for PC-BSD is kept in a subversion server, and trac provides browse and search mechanisms for the code base. Chapter 12 introduced you to the PC-BSD trac system. PC-BSD's code base is divided into branches, with each branch representing a different version of the software. Figure 14-1 shows the branches for the "pcbsd" code base from versions 1.4 to 7.1.1.

PC-BSD branches

Figure 14-1. PC-BSD branches

New commits are made against trunk, which represents the current version that hasn't been released yet. Figure 14-1 was taken before the release of PC-BSD 8, meaning that version 8 was the trunk version at that time.

After a version is released, it is moved from trunk to a new version number in branches, and a new trunk is created for the next expected version. It is rare for a commit to be made against a released version because it is considered to be released (or finalized).

trunk and each branch version are divided into modules, which allow developers to follow and commit to the modules that interest them. Most modules contain the source files and configurations for a PC-BSD utility. The modules for trunk (version 8.0 before it was released) are seen in Figure 14-2 and briefly described in Table 14-1.

PC-BSD development modules

Figure 14-2. PC-BSD development modules

Table 14-1. Overview of PC-BSD Software Modules

Module

Description

build-files

Configuration files and patches used to build PC-BSD

CrashHandler

Program that is executed when a PBI's executable exits with an error condition

installcd-overlay

Filesystem on the 32-bit version of the installation CD/DVD

installcd-overlay64

64-bit version of files that differ from the 32-bit version found in installcd-overlay

kcmPBSystem

Files needed for System Manager to work in KDE

kcmPFManager

Files needed for Firewall Manager to work in KDE

kcmSoftwareManagerLauncher

Files needed for Software Manager to work in KDE

kcmUserManagerLauncher

Files needed for User Manager to work in KDE

libpcbsd

Libraries specific to PC-BSD

lifePreserver

Life Preserver backup utility

mfsroot-overlay

The list of files copied to the memory filesystem during installation

mind

Mind map template for XMind[a]

PBIdelete

PBI uninstaller

PBIThumbnailCreator

PBI thumbnail creator

PBReg

PC-BSD registry tool

pc-sysinstall

PC-BSD installer backend

pcbsd-netmanager

PC-BSD networking utilities

pcbsdusermanager

User manager

ServiceManager

Service Manager

SoftwareManager

Software Manager

SoundDetect

Utility to detect installed sound cards

SoundError

Utility that creates a diagnostic sheet when no sound card is detected

SysInstaller

PC-BSD installer program

system-overlay

Filesystem for 32-bit version of PC-BSD

system-overlay64

64-bit version of files that differ from the 32-bit version found in system-overlay

SystemUpdaterTray

System Updater

XGUISource

Display setup program

[a] http://www.xmind.net/ is a popular one source mind mapping application.

Security patches are not stored on the trac server because they are usually based on the FreeBSD security advisory system.[105] Every PC-BSD security patch installed by Update Manager contains the URL to the associated security advisory.

Tip

You can also view each available, ignored, and installed system patch for your system in /PCBSD/SystemUpdater/system-updates/.

As changes are committed to the PC-BSD code base, an email containing the details of the change is automatically sent to the Commits mailing list.[106] Browsing through that list's archives gives you a good idea of the changes made to the PC-BSD code base.

As the trunk version of PC-BSD gets closer to being released, installable versions of the operating system are periodically released to the Testing mailing list.[107] As described in Chapter 12, everyone is encouraged to install and try the testing version and to report any bugs so that developers can fix them. This helps to ensure that when the new version is released, it has been tested on many different types of hardware and is as bug-free as possible.

System Developer Resources

In addition to the resources mentioned in the previous section, the following resources are available to programmers interested in contributing to the development of the PC-BSD operating system.

  • Dev[108] mailing list: For general development discussion. This is where features are planned and discussed.

  • Development team:[109] In addition to the contact information for each team member, this page lists which development tasks are needed for system development and translation, quality assurance, PBI development, PBI quality assurance, documentation, web development, and system administration. It also lists who to contact if you are interested in helping in one of these areas.

  • Development Guidelines:[110] Discusses naming conventions, indentation, internationalization support, documentation, and licensing.

If you are interested in PC-BSD system development, you should also take the time to familiarize yourself with the following documentation because PC-BSD is based on FreeBSD and KDE.

  • FreeBSD Developer's Handbook[111]

  • KDE API Reference[112]

  • Qt Reference Documentation[113]

Getting System Source

Anyone can browse and download any portion of the PC-BSD code base. If you are interested only in a few files, you can use your browser to download them from the trac server. If you would like to follow the changes being made in an entire branch while keeping the files you have downloaded "in sync" with the changes on the subversion server, you should use the svn utility to "check out" (download) the files you need.

Your PC-BSD system comes with the svn utility installed, and the Getting Source guide[114] contains instructions for downloading all the branches, trunk only, or a specified branch. svn comes with a lot of options; following are the ones developers use most often.

  • svn co: Checks out the specified directory. It creates a directory of the same name in your current working directory. For example, if you check out the repository using the command "svncosvn://svn.pcbsd.org/pcbsd," a directory named "pcbsd" is created that contains everything you see under "pcbsd" on the trac server. You should see a list of files as they are copied. If you receive a message similar to "Checked out revision 5487," your copy is identical to the one on the trac server.

  • svn up: Updates your already downloaded copy so that it contains all the files on the trac server. Always run this command in the directory name that matches the directory you would like to sync with.

  • svn help: Lists all the possible commands. If you add help to a command, it shows its usage (for example, svn help co.

Only PC-BSD committers are able to make changes to the code on the trac server. If you have created code patches, submit them using the methods described in Chapter 12. Over time, the community gets to know you and your development style. If you submit many useful patches, don't be surprised if you are asked whether you would like to have a commit bit, the term used to signify that you now have the necessary permissions to upload your changes directly to the code base.

PC-BSD committers are also able to use the following svn commands.

  • svn add: Adds the specified file to the code base

  • svn rm: Removes the specified file from the code base

  • svn ci: Checks in (uploads) your changed files to the code base

Overview of PBI Development Process

The previous sections describe the development process for the PC-BSD operating system. This section concentrates on the development process for PBIs.

PBIs are stored on the PC-BSD Project's official PBI build servers (http://pbibuild.pcbsd.org and http://pbibuild64.pcbsd.org). Every Monday through Friday night, each server checks and builds the PBIs that meet any of these criteria:

  • The PBI is newly added.

  • The PBI's underlying FreeBSD port has been updated.

  • The PBI committer sets a configuration value indicating that the PBI should be rebuilt.

If the build of a PBI fails, an email is automatically sent to the Pbibuild mailing list.[115] The email contains the last 50 lines of the build log, which should include the error message. The full build log can be downloaded from the PBI build server. Figure 14-3 shows a screenshot from the build server, which indicates that the astro/googleearth build has failed.

Build failure for astro/googleearth on the PBI build server

Figure 14-3. Build failure for astro/googleearth on the PBI build server

To access the build log, click the hyperlink for the failed PBI, in this case astro/googleearth. The build log has a .bz extension, which indicates that it has been compressed. You can uncompress the file using the bunzip2 command that came with your PC-BSD system.

The configuration information used for building a PBI is known as a module. PBI modules are created by the PBI maintainer. The next section demonstrates how to create a PBI module. You can browse through all the modules at http://trac.pcbsd.org/browser/pbibuild/modules. Browsing through the modules can be helpful if you are stuck building a PBI or aren't sure how to modify a PBI's configuration files and want to see how other PBI developers handled their module's configuration. Two tools are available for creating a PBI. The recommended method is to use PBI Builder[116] when a FreeBSD port already exists. If a FreeBSD port does not exist, PBI Creator[117] can be used to create the PBI. PBI Builder is recommended for several reasons, including:

  • Most of the development work has already been done for you by the person who ported the software to FreeBSD.

  • PBI Builder is fairly straight-forward to use, meaning anyone with a bit of time and patience should be able to create a PBI.

  • PBI Builder creates a sandbox environment for building the PBI. This means that you don't have to create an environment on a separate build computer, it won't harm your computer, and the resulting PBI has everything it needs to work on a PC-BSD system.

  • PBI Builder enables you to create the module files understood by the PBI build server. After it is on the PBI build server, your PBI automatically updates whenever the underlying FreeBSD port changes.

  • The PBI build server sends out an automatic email message and generates a build log if your PBI ever fails to build.

In contrast, PBI Creator isn't recommended for several reasons, including:

  • It requires you to create your own clean build system, which means you want to use a separate computer (or virtual environment) that needs to be returned to a default PC-BSD install for every PBI that is built.

  • It requires you to manually populate your build environment with the application source and dependencies (PBI Builder automatically does this for you).

  • There are more than 21,000 FreeBSD ports, which means there is already plenty of software waiting to be built using PBI Builder.

  • If you are using PBI Creator because no FreeBSD port exists, you get to do all the porting work. Depending upon the size of the application, the number of its dependencies and what assumptions were coded into the software (for example, expected paths, libraries, devices, and so on), this work can range from trivial to really hard and time consuming to far exceeds your coding knowledge. We recommend that if you do all of the work required to port the software, you should submit the port to the FreeBSD ports collection and then use PBI Builder to convert the port to a PBI. This enables the ported software to be used by both FreeBSD and PC-BSD users and enables the resulting PBI to take advantage of the benefits provided by the PBI build server.

For these reasons, this chapter demonstrates only how to use PBI Builder. If you would like to tackle porting software to a FreeBSD port, work your way through the FreeBSD Porter's Handbook.[118]

After a PBI is created, it needs to be tested by others before it is added to the PBI build server and made available for download at pbidir.com. This helps to ensure the quality of the software available to PC-BSD users and provides a check that the developer didn't miss anything when creating the PBI.

Anyone can test a PBI. Feedback regarding a PBI should be sent to the Pbi-dev mailing list. This list should also be used if you ever find a bug in a PBI that is already available at pbidir.com so the developer can fix the bug.

PBI Developer Resources

In addition to the resources mentioned in the previous section, several resources are available to PBI developers, including:

Using the PBI Builder:[119]

General usage instructions for PBI Builder

PBI Module Builder Guide:[120]

The definitive reference for creating PBI modules

Creating PC-BSD Packages forum:[121]

Contains useful information and some how-tos

PBI FAQs:[122]

Answers to frequently asked questions about building PBIs

Converting a FreeBSD Port Using PBI Builder

Chapters 9 and 10 introduced you to FreeBSD ports and packages and gave some insight into the work port maintainers go through so that the package and port "just work." PBI Builder simplifies the process of converting an existing FreeBSD port into a PBI, which means anyone can create a PBI without needing much (if any) previous development experience. If you have a bit of time to spare, like to learn new things, and are interested in seeing as much software as possible available to the PC-BSD community, try your hand at creating a PBI with PBI Builder. The more PBIs that are available, the better it is for everyone because it ensures that even brand new PC-BSD users can safely install the software they need and keep it up to date.

Information about and the download for PBI Builder can be found at http://www.pcbsd.org/content/view/45/30/. PBI Builder is a command-line utility that requires you to edit a few configuration variables that are used when the PBI is built. PBI Builder automates the entire build process: the creation of the build sandbox, fetching the source for the port and all its dependencies, building everything that is needed, and converting the results into the PBI.

PBI Builder uses a large archive that contains the system source and world environment used by PC-BSD. It provides all the libraries needed to ensure that the resulting PBI works on the version of PC-BSD that matches the version of PBI Builder.

Tip

The file /pbi-build/docs/HOWTO-MODULES is well worth reading because it fully explains all the files contained in the archive and the PBI creation process. If you're curious about what commands are executed when building a PBI, read through the scripts in /pbi-build/scripts/. You can also find some examples in /pbi-build/docs/module-examples.

Building Your First PBI

Before building your PBI

  1. Check that a PBI for that software doesn't currently exist at pbidir.com or pbibuild.pcbsd.com.

  2. Check that the Pbi-dev mailing list isn't currently testing a PBI for that software.

  3. Check to see if a module already exists at http://trac.pcbsd.org/browser/pbibuild/modules.

  4. Search for the software at freshports.org. Some of the FreshPorts details for that software come in handy when you configure your PBI module.

  5. Download and untar the PBI Builder archive according to the instructions in the "Using the PBI Builder"[123] document.

Now that your system is ready for building PBIs, download the PBI module template.

# cd /pbi-build/modules
# fetch http://www.pcbsd.org/files/templates/module-template.tgz
# tar xvzf module-template.tgz

Create a directory structure for your module that represents the port's category and name. Copy the contents of the template directory to your new directory. We use the example of creating a module named /pbi-build/modules/irc/conspire.

# mkdir -p irc/conspire
# cp -R template/* irc/conspire/
# ls -F irc/conspire
build.sh        kmenu-dir/      overlay-dir/    preportmake.sh
copy-files      mime-dir/      pbi.conf

Most PBIs can be successfully built after modifying a few lines in pbi.conf and kmenu-dir/0mymenu. This section shows you how to make those changes, and the next section demonstrates more advanced configurations.

To successfully configure your module, you must modify the following variables in the pbi.conf file.

  • PROGNAME: The name of the PBI. This should be the same name as the FreeBSD port. Don't include the version number unless there is already another PBI for a different version.

  • PROGWEB: The Main Web Site URL for the port as listed at Freshports.

  • PROGAUTHOR: Most software is maintained by a project rather than an individual. Examples of suitable values are The Mozilla Foundation (for firefox) or the BitchX team (for bitchx).

  • PROGICON: At Freshports, check the pkg-plist in the CVSWeb for the port to find the path to the png file representing the icon for the application. If there is more than one, look for the png with the same name as the port. If there is no png for the software, check the software's website to see if it has an icon image. If there is an image available, download the image, convert it to png if it is in another format, save the png to the module's overlay-dir directory, and provide only the name of the png.

  • PBIPORT: The full path to the port to be built.

Here is an example of the changes made to /pbi-build/modules/irc/conspire/pbi.conf:

# Program Name
PROGNAME="conspire"

# Program Website
PROGWEB="http://confluence.atheme.org/display/CON/Home"

# Program Author
PROGAUTHOR="Conspire Team"

# Default Icon (Relative to overlay-dir)
# Please only use PNG files for the program icon
PROGICON="share/pixmaps/conspire.png"

# FreeBSD Port we want to build
PBIPORT="/usr/ports/irc/conspire"

Next, you must modify the first three variables in kmenu-dir/0mymenu.

  • ExePath: The path to the executable that should start when the application is launched. You can find the correct path name at Freshports. Click the CVSWeb link for the port, and then click the pkg-plist. The binary has "bin" somewhere in the path. If there are multiple binary paths, select the binary that seems the most reasonable name for the application.

  • ExeIcon: The same path you used in PROGICON= in pbi.conf. This allows the icon to show in the KDE menu.

  • ExeDescr: A short (2–3 words) description that shows up in the KDE menu.

The example for /pbi-build/modules/irc/conspire/kmenu-dir/0mymenu looks like this:

ExePath: bin/conspire
ExeIcon: share/pixmaps/conspire.png
ExeDescr: IRC Client

When you finish making your changes, ensure that the system is connected to the Internet because you require connectivity to build the underlying port.

You're now ready to cd into the /pbi-build directory and start the pbibuld.sh script. Include the name of the module you wish to build. If you don't provide any arguments, the script builds every module that exists in the modules directory. The script provides some messages as the build progresses, as seen in the following example:

# cd /pbi-build
# ./pbibuild.sh irc/conspire
Running portsnap to update ports tree
Starting module traversal...
Copying /pbi-build/buildworld to /pbi-build/pbisandbox
Copying /pbi-build/ports to /pbi-build/pbisandbox/usr/ports
Starting build of irc/conspire
Rebuilding module irc/conspire...
Found preportmake.sh, running it...
Running port build...
SUCCESS! Build finished for irc/conspire
#

If you want to watch the details of the build process, you can monitor the build log using "tail -f /pbi-build/outgoing/irc/conspire/build.log" and substitute the pathname for your PBI.

Although the PBI build process is completely automated and should just work, it does take time. The amount of time depends upon the size of the application, the number of dependencies, and the speed of your build system.

When the build is finished, you receive your prompt back and the PBI is placed in a subdirectory of /pbi-build/outgoing/ with the same name as the module you built. In this example, the PBI is found in /pbi-build/outgoing/irc/conspire/conspire4.0.35-PV0.pbi.

Advanced Module Configuration

Most PBIs can be built by simply modifying the variables mentioned in the previous section. This section provides an overview of the more advanced configurations that are possible through modifying the other variables and files that come with the modules template.

  • build.sh: This script is run after all the files have been copied to the PBI's directory and can contain any commands you wish to run at that time. The PBI Module Builder Guide[124] provides an example that modifies the version number.

  • copy-files: It is rare to need this file, but you can use it to modify where certain files get populated to.

  • kmenu-dir/0mymenu: The variables in this file control how the application appears in the KDE menu. Table 14-2 provides a description of each variable.

  • mime-dir/00mymime: Some applications require their MIME types to be listed to work correctly. See the PBI Module Builder Guide for usage examples and gotchas.

  • overlay-dir/: PBI builder automatically populates all the files needed by the PBI, according to the underlying port's instructions. If you have an additional file you would like to include (for example a README for the PBI) or a customized graphic, include it here. You can also customize the PBI scripts that came with this directory but should only do so if you have a good reason to make the change.

  • pbi.conf: Table 14-3 summarizes the remaining variables in this file.

  • preportmake.sh: Allows you to execute commands needed for the port to build properly. See the PBI Module Builder Guide for an example.

Table 14-2. Variables that Control a PBI's Appearance in the KDE Menu

Variable

Description

ExePath

The path to the application's executable as listed at Freshports.

ExeIcon

The path to the application's icon as listed at Freshports or the name of the custom icon you have created in overlay-dir/.

ExeDescr

A brief description of the application.

ExeNoDesktop

Set to 0 if you want a desktop icon and to 1 if you don't.

ExeNoMenu

Set to 0 if you want an icon in the KDE menu and 1 if you don't.

ExeRunRoot

Some applications require superuser access to run correctly. Set this to 1 to require the user to enter the administrative password when the application launches.

ExeRunShell

Set to 0 if the application should run in a GUI and set to 1 if the application is command-line based and should be executed in a Konsole session.

ExeNotify

Set to 0 to disable the bouncy application loading icon and set to 1 to enable it (the preferred setting).

ExeLink

Set to 1 to open the ExePath value in Konqueror, and set to 0 to launch the ExePath value as an executable.

ExeWebLink

If the ExePath value is an URL, set to 1 to open the URL in Konqueror; otherwise, leave it set as 0.

ExeTaskbar

Places application in system tray; this feature is currently unimplemented.

ExeOwndir

0 places the application name in top level directory of KDE menu, 1 places the application name in its own directory under the category indicated by ExeKdeCat, and 2 places the application name in the category indicated by ExeKdeCat.

ExeKdeCat

Set to one of the category names listed in Kickoff

Variables that Control a PBI's Appearance in the KDE Menu

If you right-click Kickoff and select Menu Editor, you can see the settings that come with every application in the KDE menu. Comparing the General and Advanced tab of an application should give you a better understanding of the effect that the variables in Table 14-3 have on the KDE menu. Figure 14-4 shows a screenshot for the installed conspire PBI.

KDE menu settings for the conspire PBI

Figure 14-4. KDE menu settings for the conspire PBI

Table 14-3 briefly describes the remaining variables that can be set in pbi.conf.

Table 14-3. Remaining Variables for pbi.conf

Variable

Description

PBIVERSION=

Enables you to override the PBI version if the build fails to automatically detect it.

PROGLIBS=

Leave at AUTO; otherwise, you have to manually populate the PBI's directory. If you need to override a file that is populated, use copy-files instead.

PBIUPDATE=

Leave as-is as needed by the PBI build server.

OTHERPORT=

If you want to include another port in your PBI (besides the dependencies listed in the port's Makefile), add its category and portname; this is useful for applications that have additional plugins or skins that are available as separate ports.

MAKEOPTS=

Enables you to pass make targets that are used when the PBI is built; Chapter 10 discusses targets.

BUILDKEY=

Committers can temporarily change this number to force the build server to rebuild the PBI.

PBIDISABLEFONTLINK=

Use this if you want to use the application's internal fonts instead of the system fonts.

PBIKEEPGL=

Use this to use the applications internal libGL libraries instead of the system libraries.

PBIPRUNE*

Several prune variables allow you to keep include directories, python files, perl files, or doc files that were created during the PBI build.

BUILDINMATE=

Uncomment this line if you are building an inmate file instead of a PBI.

INMATEVER=

Uncomment and set a version number for the inmate; increment the number for each later version.

Troubleshooting

As long as there isn't a problem with the underlying FreeBSD port and assuming you have followed all of the steps in the section on "Building your First PBI," PBI Builder should just work. If the build fails, double-check Freshports to confirm that the port isn't broken, forbidden, or restricted.

If the port looks fine, check the error message that appeared when you received your prompt back. It contains the number of the script that failed. The 2.1 in the following example indicates that /pbi-build/scripts/2.1.startmake.sh failed. Any script with a lower number is successful, and any script with a higher number has not run yet.

ERROR: 2.1 Build failed of irc/conspire!!!

When PBI Builder exits, it compresses the log of the PBI build process, so you need to uncompress it with the bunzip2 command. Take the time to go through the build log, starting at the end, because this is where the error occurred. Usually, the problem is obvious from the error. If it is not, work your way backwards to see what happened successfully before the error occurred. If the error indicates that the port build was unable to fetch a required file, double-check your Internet connectivity.

After you resolve the error, remove the .lock file and rerun buildpbi.sh. The build starts over again to ensure that your sandbox environment is clean.

If you are stuck, send an email to the Pbi-dev mailing list that includes the error and enough contextual information to enable other developers to help you figure out what went wrong.

Testing and Submitting Your PBI

After you have a PBI, you want to test it yourself before making it available for others to test. From Dolphin, navigate to your PBI, right-click it, and select Open with PBI Launcher. The PNG for your PBI should show in the PBI's icon within Dolphin. As the PBI installs, check the initial installation screen to ensure that the Vendor (PROGAUTHOR variable) and URL (PROGURL variable) are displayed correctly. After the PBI is finished installing, start the application to make sure that the correct binary starts. After the application launches, try out all the screens in the program to make sure that nothing is missing and none of the menus causes the application to crash. Finally, find your PBI in Menu Editor, and make sure that all the desired features show for the KDE menu.

If you find a typo or need to fix a configuration file in your module, you don't have to rebuild the underlying port. Simply run /pbi-build/scripts/3.makepbi.sh after making your configuration change. This rerolls the PBI so you can test your changes.

Tip

pbibuild.sh creates a clean environment every time it runs. This means that it removes everything that was previously built and starts over again. If your build successfully finished, you don't have to rebuild to reroll the PBI with your new configurations. You can save a lot of time by running the 3.makepbi.sh script.

When you are satisfied that your PBI works correctly, create a compressed archive of its directory. The following example creates a compressed archive named /conspire.tar.bz2.

# cd /pbi-build/modules/irc
# tar cvf /conspire.tar
# bzip2 /conspire.tar

Upload the archive to a publicly available server. If you don't have a server of your own, contact the leader of the PBI development team[125] for credentials to the PBI ftp server. After the PBI is uploaded, send an email to the Pbi-dev mailing list.[126] Your email should include a subject line of "submit module category/portname" (for example, submit module irc/conspire). The body of the email should contain the location where testers can download the archive for the module to build and test it.

Summary

This chapter discussed the most advanced tasks you can perform on your PC-BSD system, including those that enable you to contribute software back to the PC-BSD community so other users can benefit from it.

We cover a lot of ground in this book. It is our hope that you enjoyed learning more about the PC-BSD operating system and that this book is a handy guide you refer to often. We also hope that you have as much fun reading and using it as we had writing it!



[104] http://www.freebsd.org/doc/en_US.ISO8859-1/articles/releng/article.html

[105] See http://security.freebsd.org/ for more details.

[106] http://lists.pcbsd.org/mailman/listinfo/commits

[107] http://lists.pcbsd.org/mailman/listinfo/testing

[108] http://lists.pcbsd.org/mailman/listinfo/dev

[109] http://www.pcbsd.org/content/view/23/30/

[110] http://trac.pcbsd.org/wiki/DevelopmentGuidelines

[111] http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/index.html

[112] http://api.kde.org/

[113] http://doc.trolltech.com/

[114] http://trac.pcbsd.org/wiki/GettingSource

[115] http://lists.pcbsd.org/mailman/listinfo/pbibuild

[116] Available for download from http://www.pcbsd.org/content/view/45/30/

[117] Available for download from http://www.pbidir.com. Information for using this utility is available at http://www.pcbsd.org/content/view/39/30/.

[118] http://www.freebsd.org/doc/en/books/porters-handbook/

[119] http://wiki.pcbsd.org/index.php/Using_the_PBI_Builder

[120] http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide

[121] http://forums.pcbsd.org/viewforum.php?f=4

[122] http://faqs.pcbsd.org/index.php?action=show&cat=19

[123] http://wiki.pcbsd.org/index.php/Using_the_PBI_Builder

[124] http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide

[125] http://www.pcbsd.org/content/view/23/30/#pbi-dev

[126] http://lists.pcbsd.org/mailman/listinfo/pbi-dev

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset