almost perfect dependencies on crt0's and libraries. DPADD and
bsd.libnames.mk should go away soon. Use a new _EXTRADEPEND target
to implement this and to avoid editing of .depend when .depend isn;t
being rebuilt. The afterdepend target doesn't seem to be good for
anything and is now unused.
Fixed LDDESTDIR for the DESTDIR case when ${SHLIBDIR} != /usr/lib.
Added commented-out -nostdlib to LDDESTDIR for the DESTDIR case.
The wrong libraries may be used without this; however it breaks
linkage to crt0 and libc.
is most useful for centralizing the definitions of paths to contrib
directories.
Removed useless subshell and evil-hiding @ in the the rule for
initializing the info dir.
'make -j3 world' works
Jordan points out that this may not be the only place this is required to be
added, but so far, its the only one I've found to break -j3
interesting problems because the resulting file is newer than the source
and this stops 'make' from rebuilding it. Go via an intermediate file
and rename to make sure this doesn't happen.
to before they are used in .for loops and .SUFFIXES lists, or it
doesn't work! Without this, 'make all' doesn't gzip the result as the
generated 'all' target doesn't seem to be defined completely.
bsd.doc.mk:
rename GZIPCMD to DCOMPRESS_CMD, add DCOMPRESS_EXT
bsd.info.mk:
rename GZIPCMD to ICOMPRESS_CMD, add ICOMPRESS_EXT
set INFOTMPL to ${INFODIR}/dir-tmpl
bsd.man.mk
rename ZEXTENSION to MCOMPRESS_EXT, MCOMPRESS to MCOMPRESS_CMD
mv, respectively. This will make Warner's life easier.
(2) Add new variable ${PLIST}, which defaults to ${PKGDIR}/PLIST.
If you need to have different PLISTs for different configurations,
you can either
@ pre-fabricate all of them and switch ${PLIST} to point to the
appropriate one, or
@ use sed/awk/perl/whatever to create the correct one from
pkg/PLIST and set ${PLIST} to it.
It is still recommended to have a file called "pkg/PLIST" so
people can do "grep badprog /usr/ports/*/*/pkg/PLIST" and such.
(3) Move /var/db/pkg/${PKGNAME} clash detection to before the
installation (instead of after) and make it fatal, with an error
message suggesting a workaround.
(4) Don't make distclean fail if DIST_SUBDIR is set and the
subdirectory does not exist.
(5) Don't put "@pkgdep Error code 2. Stop." kind of garbage into
packing list if depended port's directory doesn't exist. Instead,
print out a message to stderr.
${PORTSDIR}. This undoes the changes done in rev. 1.38 and 1.59
(part of the bsd.port.mk pre-dawn ages I've never understood).
Requested by: jkh
(2) Add new variable NO_IGNORE that will override any IGNORE causes.
This is just a little hack to allow building of REQUIRES_MOTIF
ports and its dependencies only etc., so don't document it.
(3) Update +REQUIRED_BY files as necessary. Now you should be able to
delete ports that have runtime dependencies without pkg_delete
complaining about this file missing.
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.
Sorry, I know it's a gross fix to call share/info's install target as
a side-effect, but that's less gross than propagating the work-around
changes to files which have nothing to do with the info system.
the original logic went into a section of code assuming some
incarnation is there, but it's basically a "test -d" fix. Closes PR
ports/2082.
Reviewed by: max ("although I didn't test it, it looks fine")
(1) Change commented out MAINTAINER to FreeBSD_MAINTAINER and
OpenBSD_MAINTAINER. These are not comments anymore, so we may
even use it in the future.
(2) Instead of the ".if ${OPSYS} = "NetBSD" hack, use ".if exists()"
to find the location of md5 an tar. Play similar trick for fetch
(OpenBSD uses /usr/bin/ftp which groks http: addresses).
This commit includes most of the changes made in 1.242 (although many
of them are done differently after more discussion). One thing that
is conspicuously missing is NOMANCOMPRESS, which has been postponed
until Warner figures out what exactly the situation is on the OpenBSD
ports paradigm. (In a nutshell, we can't just define NOMANCOMPRESS in
this file even if uncompressed manpages is the default for OpenBSD,
because that will take away the ability of individual users to select
manpage compression.)
Reviewed by: imp@openbsd.org
and scripts/{pre,post}-* as environment vars. Also, if BATCH is
set, "BATCH=yes" is automatically added to SCRIPTS_ENV.
(Requested by: max)
(2) The INSTALL_* macros are added to SCRIPTS_ENV and MAKE_ENV as
BSD_INSTALL_*. (Requested by: obrien)
(3) New variable MOTIF_ONLY, which will only build ports with
REQUIRES_MOTIF defined. This doesn't do dependencies right (what
if the depended port doesn't need Motif) yet.
(4) Try not to clean the same port twice in clean-depends when (for
instance) it's defined in both BUILD_DEPENDS and INSTALL_DEPENDS.
Note that it won't check chained dependencies so you may still see
the same port cleaned multiple times, but checking that far will
surely make this run slower than the un-"optimized" case so I left
it as is. (Requested by: jkh)
(5) Ignore *.rej files in patches/ directory in addition to *~ and
*.orig.
into the DESTDIR in the beforeinstall rule in src/share/info/Makefile.
Then each info file that gets installed into the dir file using
install-info.
It has struck me that there's going to be a problem bootstrapping
this change, since parts of install will fail until install-info
is installed. Maybe someone who knows best how to deal with this can
fix it.
Generalize the selection of programs to run based on the existance of files
rather than the OS names that we find. Add comments about me being the
keeper of the OpenBSD mods of this file. Use ftp on OpenBSD rather than
fetch since OpenBSD's FTP supports urls and there is no fetch.
Reviewed by: Joerge Wunch, Jordan Hubbard, and others in ports I've forgotten
Obtained from: OpenBSD with changes from me.
Add a little more sophistication to the md5 grep command.
Change the md5 checksum logic a bit. Now, the message is printed
out for every successfully/unsuccessfully matched checksum, and it
aborts at the end if there was a mismatch. Also, make missing checksum
and IGNORE file inconsistency fatal, as there is now no reason to have
a missing checksum.
of PRINTER for defining the default output device when formatting
documents for installation. This prevents problems if the
user has defined PRINTER for use by lpr.
Closes PR# 1437.
(1) MANLANG is now a list (defaulting to ""), so if you have English
and Japanese-EUC versions of the manpages, you can say something
like `MANLANG= "" ja_JP.EUC' and manpage compression will DTRT.
(2) Add new variables MAN%cPREFIX (where %c=[1-9LN]) which default to
MANPREFIX (which defaults to PREFIX), to specify per-section
prefixes. In particular, this handles the cases in many perl
ports, which install man1pages into man/man1 and man3pages into
lib/perl5/man/man3.
Note these modifications won't change the behavior of existing
variables used in previously-approved ways, so any Makefile that
worked before will still continue to work.
(1) Print out reason when port is ignored because of NO_CDROM,
RESTRICTED, IS_INTERACTIVE, (not) IS_INTERACTIVE, BROKEN,
REQUIRES_MOTIF or NO_PACKAGE.
Submitted by: obrien
(2) Add new special file in pkg/: DISPLAY. (Cf. man pkg_create)
(3) Minor bugfix in clean-depends target, which sometimes executed
"make clean" in the current directory. (Which is probably ok, but
is wrong nonetheless.)
you have a Makefile without one.
(2) Fix case when user had DISTDIR defined elsewhere and DIST_SUBDIR
is also defined. (Submitted by: max)
(3) Add several popular master sites as variables. For instance,
MASTER_SITE_XCONTRIB is defined to be a list of X11R6 contrib sites,
which you can set MASTER_SITES to in your Makefile if you just
want ftp.x.org or any of the mirror sites.
There is also a new variable, MASTER_SITE_SUBDIR, to specify which
subdirectory of the master site your tarball is located.
One nice thing this enables the user to do is to define the
nearest mirror site in /etc/make.conf. This is especially useful
for continents without a full FreeBSD master site.
Eventually, we will probably split this into a separate file
(bsd.port.sites.mk?), and add some more sites from all corners of
the world.
Right now, XCONTRIB, GNU, PERL_CPAN, TEX_CTAN, and SUNSITE are
supported.
(4) COMPRESS_MAN command alias is replaced by MAN[1-9LN] variables.
You just say "MAN1=foo.1 bar.1" and the make rules will
automatically compress it for you if necessary. (Idea by: obrien)
(5) New "distclean" target to delete distfile too. (Submitted by:
obrien)
(6) Chained dependency cleaning, can be turned off by NOCLEANDEPENDS.
Reviewed by: the ports list
2.2 are more obvious. -Winline is unimportant, but -W gives thousands
of warnings for comparisions. Turning off -W also loses warnings for:
- auto variables clobbered by longjmp. Not much of a problem in the kernel.
- functions returning without a value. I don't like losing this.
- an expression statement or the left side of a comma operand contains no
side effects. Turning this off also stops warnings for the low quality
debugging macros in gsc.c and lpt.c.
Should be in 2.2.
Submitted by: Jason Thorpe <thorpej@nas.nasa.gov>
(2) Remove the bogus "CAT+=" definition. Closes PR ports/1703.
Submitted by: Peter Childs <pjchilds@imforei.apana.org.au>
(3) Change MKDIR to "/bin/mkdir -p", remove "-p" from ${MKDIR}
invocations. Closes PR ports/1901.
Submitted by: obrien
(4) Add a new macro variable COMPRESS_MAN, which will evaluate to gzip
if NOMANCOMPRESS isn't set (default), or true if it is.
(5) Add a new variable NO_CHECKSUM, which will disable the md5 checksum.
Submitted by: jkh
(6) Also, move NO_PATCH and NO_PACKAGE checks to right place in
invocation order.
(7) Check for LIB_DEPENDS before installation too. (It used to check
only before extraction.)
Forgotten a long time ago by: asami
Also disabled -Wunused. It caused too many warnings even for me.
The sign mismatch warnings should be fixed first. They are more
important and harder to disable (they are controlled by -W, which
controls too many things).
forced in any of the standard ways (MAKEOBJDIR was lost in the
previous commit). Simplified the conditionals for this.
Restored comment about MAKEOBJDIR from rev.1.4.
Improved English in comments.
of the variable OBJLINK which is used in /etc/make.conf to build 'obj'
links in the current directory. This caused lots of useless warnings
since if OBJLINK is defined ./obj will be created and used.
Submitted by: max
While I'm here, add "${DIST_SUBDIR}/" at end of CDROM pathnames. Also
add an empty declaration of PATCH_SITES next to MASTER_SITES to avoid
"variable recursive" error.
the gnu libobjc rather than the NeXT one. I do not understand objc
so I don't know the implications of this, but the gcc-2.7.2 libobjc is
built with this.
in the tree that use things like bsd.prog.mk just to get the default
targets like install, tags, obj, clean, cleandir, cleandepend, but do not
actually build anything there.
bsd.obj.mk. Also, a make target called objwarn checks to see
if ${.OBJDIR} != ${.CURDIR} and ${.OBJDIR} != ${CANONICALOBJDIR}
and outputs a warning. (No warning for the latter if MAKEOBJDIR or MAKEOBJDIRP
REFIX is set). objwarn is called from all targets in bsd.prog.mk, bsd.kmod.mk,
and bsd.lib.mk.
Reviewed by: bde
man pages (eg: named/bind/etc). In order to get (say) dig.1 to pass
through the filter and produce a new dig.1 for installing, I used an
intermediate file at build time, similar to the way the .gz man pages are
built.
I've not extensively tested this, but it seems to work for the known
cases where it was failing, and it only affects the NOMANCOMPRESS case
which was already broken.
Pointed out by: "Ph. Charnier" <charnier@xp11.frmug.org>, PR#1612
Running them twice usually destroyed the target binary. E.g., the
second `make objlink' in `make objlink; make; make objlink' replaced
the `cat' binary by a symlink cat@ -> /usr/obj/usr/src/bin/cat.
`ln -fs' is unusable when the target might be a symlink that resolves
to a directory. Then -f applies to a file in the directory and not
to the symlink. This seems to be the standard (and sometimes useful)
behaviour.
Added forgotten share/doc/psd/05.sysman and share/zoneinfo/America/Indiana.
bsd.doc.mk:
Nuked mkdir -p and wrong fixups of the leaf directory's ownerships and
permissions. The doc tree should be well enough established for this
to be safe. Installs to directories should use a trailing slash on
the directory name so installs to non-drectories are fatal, but I
didn't start changing them.
bsd.man.mk:
Nuked mkdir -p and wrong fixups of the leaf directory's ownerships and
permissions. They were overkill to create just /usr/share/info.
zoneinfo/Makefile:
No changes yet. zic creates directories with ordinary 755 permissions.
Why do we use 555 permissions for directories in /usr/share/zoninfo.
Why not for zoneinfo itself? /proc and /dev/fd are the only other
directories in the system with 555 permissions.
bombing mercilessly.
(2) If that directory has a directory called CVS, remind the user of
the existence of the "-P" option to cvs co and update.
(3) While I'm here, clean up the PATCH_DEBUG code a bit. In
particular, don't duplicate a whole bunch of code just for adding
a single "echo" statement. ;)
Reviewed by: the ports list
won't be pulled into individual ports that include this file. ;)
(2) Document MOTIFLIB, it's not set in the ports Makefiles but is
important for Motif ports (already documented in the handbook).
(3) Add INSTALL_PROGRAM, INSTALL_SCRIPT, INSTALL_DATA, INSTALL_MAN as
"aliases" of the appropriate install command line, for use in *-install
targets.
Reviewed by: the ports list (item 3 only)
pipe the man page source through before compressing or installing.
This can be used to do do (eg) sed substitution on man pages from
3rd party packages (in particular, ncurses and bind-4.9.4)
This should not affect anything already in the source tree.
(SRC_ENCAPSUATION). Stick in some cd ${.CURDIR} directives which have
been (benignly) missing all this time. Allow more types of targets to be
selectively disabled.
"MASTER_SITES:= ..." of defined(MASTER_SITE_OVERRIDE) case, otherwise
it would cause a recursive variable definition error when
MASTER_SITE_OVERRIDE is set and MASTER_SITES is not set.
Add some comments for variables and targets.
Include <bsd.obj.mk>, remove targets obj, clean, cleandir.
Replace ${MAN*} with ${DOC*} variables.
Use a .for loop for undefined targets
Create 'obj' directory in current directory instead
a symbolic link to the 'obj' tree if defined. [not set]
Print a warning if 'obj' tree (/usr/obj) does not exist.
Change default 'obj' directory from ``obj.${MACHINE}'' back to
``obj'', unfortunately many Makefiles are wired with the name ``obj''.
Add some comments for variables and targets.
eliminates many local symbols that could not be removed by the "ld -r -x"
steps on the individual object files. It makes shared libraries
substantially smaller -- almost 11%, in the case of libc.so.3.0.
(1) The new NO_CDROM Boolean variable means "don't put the distfile/
package on the CDROM you're going to sell". It will basically
turn off everything if FOR_CDROM is set.
Many of the NO_PACKAGE ports are actually "don't sell for profit"
types, which we shouldn't have any problem distributing via ftp.
(2) The new RESTRICTED Boolean variable means don't build this unless
you know what you are doing. It doesn't have any effect unless
NO_RESTRICTED is also set.
(3) BROKEN means this port is broken. At least it will now show up in
INDEX and README.html, and give people more incentive to fix (I
hope).
RESTRICTED and BROKEN are expected to replace the pseudo-targets
in parent Makefiles. (The RESTRICTED and BROKEN list didn't do
anything before, they were solely for grepping purposes.)
(4) The Motif support brings in four new variables: REQUIRES_MOTIF,
which the porter sets for ports that require Motif to build;
HAVE_MOTIF, which the user sets to indicate the system has Motif;
MOTIF_STATIC, which the user sets to indicate that the static
libXm, instead af the default dynamic library, is to be used; and
MOTIFLIB, which is set to "${X11BASE}/lib/libXm.a" or
"-L${X11BASE}/lib -lXm", depending on whether MOTIF_STATIC is set.
The porter is expected to replace all occurrences of libXm in the
{Im,M}akefiles with ${MOTIFLIB}, and this will allow both dynamic
linkage (for users with Motif) and static linkage (for those who
build packages to be used by those withot Motif, i.e., me ;)
automatically.
Original Motif support idea by: graichen
word: "zilch"). I guess the only way to get people try and comment on
these kind of things is to shove it down their throat.... ;)
Anyway, here's a set of changes required for auto-generation of READMEs
in ports directories. Necessary changes and additions of templates
to the ports tree will follow shortly.
Eventually I'll commit all the generated READMEs to the tree, but that
will be in the rather distant future. For now, I encourage anyone
with a -current systam and a matching ports tree to do a "make readmes"
at the top level and see what they get.
Next step will be to add pkg/{COMMENT,DESCR} to all the categories.
which has been in the tree for a much longer time.
Sorry for the multiple commits and I know I shouldn't be doing this but
my hamster tells me to be orthogonal...("hey Phoenix, do you think
I should call it LOCALBASE?" "squeak" "ok, if you say so").
counterpart to X11BASE (default "/usr/X11R6").
Now PREFIX is set to ${X11BASE} or ${LOCAL_PREFIX} depending on
whether USE_IMAKE or USE_X11 is set or not.
This enables us to refer to non-X ports from X ports using
${LOCAL_PREFIX}, thus removing most of the remaining "/usr/local"s
from the ports tree.
This will also allow the system administrator to move the whole
"local" tree to somewhere else, without affecting X ports. (Of course
not all ports are necessarily happy with that, but we're working on
it.)
Based on: an idea that came up while I was watching a football game
several months ago ("hey, maybe I can move that sideline
without disturbing the other!")
Fixed DPADD again.
mk/bsd.README
Don't list the LIBXXX identifiers here. Describe them better.
mk/bsd.prog.mk
Updated the list of LIBXXX identifiers.
- recently added library libdisk.a wasn't mentioned (required for sysinstall)
- old objects kz*.o weren't mentioned
- old libraries libc_pic.a, libcom_err.a, libf2c.a, libg++.a, libgcc_pic.a,
libgmp.a, libipx.a, libkeycap.a, libss.a and libxpg4.a weren't mentioned
- old libraries libgnumalloc.a and libftp.a no longer exist
- old library libmp.a was said to not exist
- deprecated links libfl.a and libln.a weren't mentioned
"foo", what this does is:
(1) Put all distfiles and patchfiles in /usr/ports/distfiles/foo
(2) Go to ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/foo when the
master site is down
When your port has a lot of dist/patchfiles, or has a file that does
not have a very port-specific name (e.g., "Makefile"), set this
variable instead of redefining DISTDIR. (If you redefine DISTDIR, (1)
will work but (2) will not.)
Agreed that it's a good idea by: adam
(Sorry Jordan, but your other idea (${CATEGORIES}) was a major hit.)
Also remove the keyword field in the INDEX line and replace it with
two columns: build-time dependencies and run-time dependencies. They
are both list of package names (minus the ".tgz").
(1) people can have weird paths and it will still work, and
(2) if you really need to use /usr/local/bin/cp instead of /bin/cp,
you can do that by changing only one line.
Submitted by: wosch
/var/db/pkg/${PKGNAME} exists. ("make install" will do nothing
because this is not a critical error and the installation is
treated as successful.)
Closes PR 870.
prototypes don't go missing again. Also added -Winline so that some
doubtful (non-)inlines get fixed.
bsd.kmod.mk:
Also added `-Wreturn-type -Wimplicit -Wnested-externs' to catch up
with the kernel.
1. ${ROFF} is run in ${.OBJDIR}.
2. the preprocessor prefixes ${SRCDIR}/ to relative pathnames in `.so'
statements.
This is useful when running ${ROFF} in the source directory isn't
convenient.
Added dependencies on ${EXTRA} and ${OBJS}. These are usually for files
that are sourced indirectly. ${OBJS} is for files that are built.
4.4lite has decentalized incomplete dependencies on ${EXTRA} and ${DPADD}.
These were broken by are centralized handling of the roff targets.
too. Basically, if the name starts with a "/", it's tested with "test -e";
otherwise, it's tested with "witch -s".
Reviewed by: the ports list (well at least nobody complained)
misplaced extern declarations (mostly prototypes of interrupt handlers)
that this exposed. The prototypes should be moved back to the driver
sources when the functions are staticalized.
Added idempotency guards to <machine/conf.h>. "ioconf.h" can't be
included when building LKMs so define a wart in bsd.kmod.mk to help
guard against including it.
failed when there was an obj directory. Use .PATH.n for installing too
so that make can find the source files. This allows the source files to
be in several directories (the old method using cd only works well for
a single directory). The dependencies are on the source files even for
the compressed case, although it would be more flexible to depend on the
files being installed, so that `make install' doesn't attempt to build
things
Force COPY to -c for the NOMANCOMPRESS case. Then the files to be installed
are always sources, so they must not be moved.