make fetch
make makesum
make extract
Note: Patches go in the directory `patches' and are names patch-xx where xx should be aa, ab, ..., az, ba, bb ... zz.
make patch
make PATCH_DEBUG=YES patch
The easiest way to re-run patches is to `make clean && make patch'. This will delete the work directory and re-extract and patch.
If GNU_CONFIGURE is used you may want to run ./configure --help to see what options are available. Anything thay you may want to override can be changed by adding the --option flags to the CONFIGURE_ARGS parameter in the Makefile
make configure
Note: make sure host dependent files go in /etc or /etc/ The OpenBSD file locations are:
COMMENT is a SHORT one-line description of the port
(max. 60 characters). Do NOT include the
package name (or version number of the software) in the comment.
DESCR is a longer description of the port. One to a few paragraphs
concisely explaining what the port does is sufficient.
PLIST is kept empty at this point.
which makes a the file PLIST-auto in the pkg directory. This file
is a candidate packing list. Beware: the files are found by
timestamp. This means it does NOT:
Peruse `PLIST-auto' and verify that everything was installed and
that it was installed in the proper locations. Anything not installed
can be added to a port Makefile `post-install' rule.
Copy `PLIST-auto' to `PLIST'
should only list standard directory names.
The ports@openbsd mailing list is a good place to find porting-savy
people with different platforms!
In short, import is typically used when a port is created.
From that point on cvs add and cvs rm are typically used to add or remove
files, and the normal edit->commit cycle for changes.
You might use something like this:
-d cvs.openbsd.org:/cvs says where cvs lives. This can be omitted if you
have a CVS_ROOT environment variable defined.
-m 'kaffe port' is your login message. Change it to whatever you like
ports/lang/kaffe1 is the path relative to /cvs where the port lives
YourName (replaced with your login name) is the "vendor tag".
You imported it so you are the vendor.
YourName_YYYY-MMM-DD (e.g., ian_2000-Jan-01)
is the 'vendor release tag'. This is as good as any.
As a real example, here is the output of checking in the Kaffe1 port,
which one of us did on September 8, 1998:
Last but not least, add a one-line entry for the new port
in its parent directory's makefile, i.e., for ports/lang/kaffe1,
add it to ports/lang/Makefile.
If you do not have CVS commit access, send mail to the ports
maintainers at ports@openbsd.org,
stating that you have a port ready to go into the tree. List the
name and version of the program, the platforms it's been tested on,
and any limitations.
user executables: /usr/local/bin
system admin executables: /usr/local/sbin
program executables: /usr/local/libexec
libraries /usr/local/lib
architecture dependent data /usr/local/lib/
make
Begin a cycle of makes until the port is ready. Patch (see above)
clean, and make until the port is generated. Get rid of all warnings
if possible, especially security related warnings.
mkdir pkg; touch pkg/{DESCR,COMMENT,PLIST}
Create dummy versions of the package files. Edit DESCR and COMMENT.
sudo make install
install the application.
After the install is complete use the developers command:
make plist
info/dir
file if .info files are
added. You'll have to add that by hand. Also, be sure that
the info/dir
is not part of the PLIST.
Perfect is when everything installs and uninstalls
in its proper location. `pkg_delete find /usr/local -newer work/.install_started -print
After the port installs correctly issue the command
make package
to create a package. To test the
package first do a pkg_delete
and then do a
pkg_add
The results after an add should EXACTLY
match the results after a `make install'.
cd kaffe1
make clean # you really really don't want to check in all of work!
cvs -d cvs.openbsd.org:/cvs import -m 'kaffe port' ports/lang/kaffe1 \
YourName YourName_YYYY-MMM-DD
$ cd kaffe1
$ make clean >/dev/null
$ cvs import -m 'kaffe1.0(==JDK1.1) port' ports/lang/kaffe1 ian ian_1998-Sep-08
ian@cvs.openbsd.org's password: (not shown, obviously)
I ports/lang/kaffe1/CVS
I ports/lang/kaffe1/files/CVS
I ports/lang/kaffe1/pkg/CVS
N ports/lang/kaffe1/Makefile
cvs server: Importing /cvs/ports/lang/kaffe1/files
N ports/lang/kaffe1/files/md5
cvs server: Importing /cvs/ports/lang/kaffe1/pkg
N ports/lang/kaffe1/pkg/COMMENT
N ports/lang/kaffe1/pkg/DESCR
N ports/lang/kaffe1/pkg/PLIST
No conflicts created by this import
$
As time goes by, problems may arise, or new versions of the software
may be released. You should strive to keep your port up to date.
In other words - iterate, test, test, iterate, ...
;;;
indicates values that must be supplied by the
porter. Remove extraneous comments when done.
# $OpenBSD: checklist.html,v 1.7 1998/11/19 04:14:56 espie Exp $ # # What port/package will be created # DISTNAME= ;;; #DIST_SUBDIR= ;;; #PKGNAME= ;;; CATEGORIES= ;;; # Reasons why the port/package shouldn't be built # #COMES_WITH= 2.3 #ONLY_FOR_ARCHS= list architectures here #BROKEN= "reason" #RESTRICTED= "reason" #NO_CDROM= "reason" #NO_PACKAGE= "reason" # where to send bitches about this port # MAINTAINER= ports@openbsd.org # where the source files and patches can be fetched # MASTER_SITES= ;;; #MASTER_SITE_SUBDIR= ;;; #DISTFILES= ;;; #PATCH_SITES= ;;; #PATCHFILES= ;;; #PATCH_DIST_STRIP= -p0 # How to extract the sources # #EXTRACT_SUFX= .tar.Z #EXTRACT_CMD= ;;; #EXTRACT_BEFORE_ARGS= ;;; #EXTRACT_AFTER_ARGS= ;;; # Dependencies # #FETCH_DEPENDS= ;;; #BUILD_DEPENDS= ;;; #RUN_DEPENDS= ;;; #LIB_DEPENDS= ;;; # Is the build automagic or is it interactive # #IS_INTERACTIVE= yes # build/configuration variables # #USE_GMAKE= yes #USE_IMAKE= yes #USE_X11= yes (assumed if USE_IMAKE is yes) #GNU_CONFIGURE= yes #HAS_CONFIGURE= yes (assumed if GNU_CONFIGURE is yes) #CONFIGURE_SCRIPT= ;;; (if other than configure) #.if (${MACHINE_ARCH} != "alpha") #CONFIGURE_ARGS+= --enable-shared #.endif #CONFIGURE_ARGS+= --enable-static #CONFIGURE_ENV= ${SETENV} # Things that we don't want to do for this port/package # #NO_DEPENDS= yes #NO_WRKDIR= yes #NO_WRKSUBDIR= yes #NO_CHECKSUM= yes #NO_EXTRACT= yes #NO_PATCH= yes #NO_CONFIGURE= yes #NO_BUILD= yes #NO_INSTALL= yes #NO_MTREE= yes # This section is only needed if man pages are distributed in compressed # form. Define MANCOMPRESSED and the man pages by section. The pages # will be uncompressed after being installed. # #MANCOMPRESSED= yes #MAN1= ;;; #MAN3= ;;; #MAN4= ;;; #MAN5= ;;; #MAN8= ;;; # Overrides for default values # #MAKEFILE= ;;; #MAKE_FLAGS= ;;; #MAKE_ENV= ;;; #SCRIPTS_ENV= ;;; #LDFLAGS= ;;; #WRKDIR= ;;; if other than work #WRKSRC= ;;; if other than ${WRKDIR}/$DISTNAME #ALL_TARGET= ;;; #INSTALL_TARGET= ;;; # This target may be necessary if a shared library may have been created # #post-install: # ${LDCONFIG} -m ${PREFIX}/lib .include <bsd.port.mk>