This page is a work in progress.
When supplying patches to software in oi-build, please:
Makefile's syntax can be mind-bending, so the general purpose of this style guide is to provide suggestions for how to make files as readable as possible. There are three basic guidelines:
Makefileshould not have redundant settings or rules or preserve commented out lines that are no longer required. They should do the minimum necessary to provide a consistent build and do it in a way that a person can readily understand.
COMPONENT_PRE_CONFIGURE_ACTIONshould come before
COMPONENT_BUILD_ENVshould come before the build target is defined.
Makefileshould produce a sample manifest that approximates what is actually packaged as closely as possible. It is acceptable for packaging to pull augments out of the component directory, but any other magic should be done using pre- and post-target actions in the
Makefilerather than in the packaging manifest.
There are a number of conventions that should be respected, partly out of mechanics, partly for readability.
Makefileshould start by providing an illumos CDDL declaration or preserve an OpenSolaris CDDL declaration if the
Makefilewas carried over from
illumos-userlandcontributors individually unless they are required to assign copyright to an employer.
shared-macros.mkusing a relative directory. All subsequent includes should use
COMPONENT_PRE_CONFIGURE_ACTIONsetting that call
configure.intemplates but do not come with pre-generated
configurescripts should call
configurescript should be listed as dependencies for the component or explicitly disabled.
Packages that have a pre-existing legacy action should have this left intact/unchanged, unless a package is being split up or the version bump is major, and it no longer makes sense to deliver the legacy action.
(The legacy action provides an SVR4 package entry in /var/sadm/pkg, so that the package shows up via pkginfo SUNWfoo - provided for backwards compatibility).
New packages that were not delivered via legacy SVR4 packages in previous versions of Solaris/OpenSolaris do not need a legacy action.