mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-16 10:20:30 +00:00
(1) Add MLINKS support.
Submitted by: hoek (2) ELF support. 2a. Variable PORTOBJFORMAT specifies the object format of the system. It is passed down to configure/make via CONFIGURE_ENV/MAKE_ENV, and is given to generate-plist via PLIST_SUB. 2b. In PLIST, substitute lines that end with "/libFOO.so.X" with "/libFOO.so.X.0". (This means PLISTs should only list ELF libraries.) Reviewed by: jb, jdp, hoek, jseger, steve (3) Perl5-in-system support. Basically turns USE_PERL5 into a no-op if there exists a "/usr/bin/perl5". Also fix prior breakage by dima (${PREFIX} => ${LOCALBASE} in perl5 path). Reviewed by: markm (sort of) (4) Install requirement file as "+REQUIRE" so it will be executed correctly by pkg_delete. Reported by: Shigeyuki FUKUSHIMA <shige@kuis.kyoto-u.ac.jp> (5) Do not disable checksum and makesum when NO_EXTRACT is set. Pointed out by: hoek and kiri, among other people
This commit is contained in:
parent
a58915fc10
commit
aa135a93cd
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=39037
@ -1,7 +1,7 @@
|
||||
#-*- mode: Fundamental; tab-width: 4; -*-
|
||||
# ex:ts=4
|
||||
#
|
||||
# $Id: bsd.port.mk,v 1.285 1998/08/27 00:18:50 asami Exp $
|
||||
# $Id: bsd.port.mk,v 1.286 1998/08/28 18:41:04 dima Exp $
|
||||
# $NetBSD: $
|
||||
#
|
||||
# bsd.port.mk - 940820 Jordan K. Hubbard.
|
||||
@ -36,6 +36,7 @@ OpenBSD_MAINTAINER= imp@OpenBSD.ORG
|
||||
# makefile is being used on. Automatically set to
|
||||
# "FreeBSD," "NetBSD," or "OpenBSD" as appropriate.
|
||||
# OSREL - The release version (numeric) of the operating system.
|
||||
# PORTOBJFORMAT - The object format ("aout" or "elf").
|
||||
#
|
||||
# These variables are used to identify your port.
|
||||
#
|
||||
@ -224,7 +225,14 @@ OpenBSD_MAINTAINER= imp@OpenBSD.ORG
|
||||
# example, if your port has "man/man1/foo.1" and
|
||||
# "man/mann/bar.n", set "MAN1=foo.1" and "MANN=bar.n".
|
||||
# The available sections chars are "123456789LN".
|
||||
# MANPREFIX - The directory prefix for ${MAN<sect>} (default: ${PREFIX}).
|
||||
# MLINKS - A list of <target, source> tuples for creating links
|
||||
# for manpages. For example, "MLINKS= a.1 b.1 c.3 d.3"
|
||||
# will do an "ln -sf a.1 b.1" and "ln -sf c.3 and d.3" in
|
||||
# appropriate directories. (Use this even if the port
|
||||
# installs its own manpage links so they will show up
|
||||
# correctly in ${PLIST}.)
|
||||
# MANPREFIX - The directory prefix for ${MAN<sect>} and ${MLINKS}
|
||||
# (default: ${PREFIX}).
|
||||
# MAN<sect>PREFIX - If manual pages of some sections install in different
|
||||
# locations than others, use these (default: ${MANPREFIX}).
|
||||
# MANCOMPRESSED - This variable can take values "yes", "no" or
|
||||
@ -378,6 +386,12 @@ OPSYS!= uname -s
|
||||
OSREL!= uname -r | sed -e 's/[-(].*//'
|
||||
PLIST_SUB+= OSREL=${OSREL}
|
||||
|
||||
# Get the object format.
|
||||
PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aout
|
||||
CONFIGURE_ENV+= PORTOBJFORMAT=${PORTOBJFORMAT}
|
||||
MAKE_ENV+= PORTOBJFORMAT=${PORTOBJFORMAT}
|
||||
PLIST_SUB+= PORTOBJFORMAT=${PORTOBJFORMAT}
|
||||
|
||||
# If they exist, include Makefile.inc, then architecture/operating
|
||||
# system specific Makefiles, then local Makefile.local.
|
||||
|
||||
@ -501,11 +515,15 @@ PERL_VERSION= 5.00502
|
||||
PERL_VER= 5.005
|
||||
PLIST_SUB+= PERL_VERSION=${PERL_VERSION} \
|
||||
PERL_VER=${PERL_VER}
|
||||
PERL5= ${PREFIX}/bin/perl${PERL_VERSION}
|
||||
|
||||
.if exists(/usr/bin/perl5)
|
||||
# 3.0-current after perl5 import
|
||||
PERL5= /usr/bin/perl5
|
||||
.else
|
||||
PERL5= ${LOCALBASE}/bin/perl${PERL_VERSION}
|
||||
.if defined(USE_PERL5)
|
||||
BUILD_DEPENDS+= perl${PERL_VERSION}:${PORTSDIR}/lang/perl5
|
||||
RUN_DEPENDS+= perl${PERL_VERSION}:${PORTSDIR}/lang/perl5
|
||||
BUILD_DEPENDS+= perl${PERL_VERSION}:${PORTSDIR}/lang/perl5
|
||||
RUN_DEPENDS+= perl${PERL_VERSION}:${PORTSDIR}/lang/perl5
|
||||
.endif
|
||||
.endif
|
||||
|
||||
.if defined(USE_XLIB)
|
||||
@ -872,6 +890,29 @@ MANNPREFIX?= ${MANPREFIX}
|
||||
|
||||
MANLANG?= "" # english only by default
|
||||
|
||||
.if !defined(NOMANCOMPRESS)
|
||||
MANEXT= .gz
|
||||
.endif
|
||||
|
||||
.if defined(MLINKS)
|
||||
__pmlinks!= ${ECHO} '${MLINKS:S/ / /}' | ${AWK} \
|
||||
'{ if (NF % 2 != 0) { print "broken"; exit; } \
|
||||
for (i=1; i<=NF; i++) { \
|
||||
if ($$i ~ /^-$$/ && i != 1 && i % 2 != 0) \
|
||||
{ $$i = $$(i-2); printf " " $$i " "; } \
|
||||
else if ($$i ~ /^[^ ]+\.[1-9ln][^. ]*$$/ || $$i ~ /^\//) \
|
||||
printf " " $$i " "; \
|
||||
else \
|
||||
{ print "broken"; exit; } \
|
||||
} \
|
||||
}' | ${SED} -e 's/ \/[^ ]*/ &x/g' -e 's/ [^/ ][^ ]*\.\(.\)[^. ]*/ &\1/g'
|
||||
.if ${__pmlinks:Mbroken} == "broken"
|
||||
.BEGIN:
|
||||
@${ECHO_MSG} "Error: Unable to parse MLINKS."
|
||||
@${FALSE}
|
||||
.endif
|
||||
.endif
|
||||
|
||||
.for lang in ${MANLANG}
|
||||
|
||||
.for sect in 1 2 3 4 5 6 7 8 9
|
||||
@ -888,7 +929,22 @@ _MANPAGES+= ${MANL:S%^%${MANLPREFIX}/man/${lang}/manl/%}
|
||||
_MANPAGES+= ${MANN:S%^%${MANNPREFIX}/man/${lang}/mann/%}
|
||||
.endif
|
||||
|
||||
.if defined(MLINKS)
|
||||
.for __page in ${__pmlinks}
|
||||
__name= ${__page:S// /:N[1-9lnx]}
|
||||
__sect= ${__page:S// /:M[1-9lnx]}
|
||||
.if ${__name:M/*}x == x
|
||||
_MLINKS+= ${MAN${__sect:S/l/L/:S/n/N/}PREFIX}/man/${lang}/man${__sect}/${__name}${MANEXT}
|
||||
.else
|
||||
_MLINKS+= ${__name}${MANEXT}
|
||||
.endif
|
||||
_MLINKS:= ${_MLINKS}
|
||||
.endfor
|
||||
.endif
|
||||
|
||||
.endfor lang in ${MANLANG}
|
||||
|
||||
_TMLINKS!= ${ECHO} ${_MLINKS} | ${AWK} '{for (i=2; i<=NF; i+=2) print $$i}'
|
||||
|
||||
.if defined(_MANPAGES) && defined(NOMANCOMPRESS)
|
||||
__MANPAGES:= ${_MANPAGES:S^${PREFIX}/^^:S/""//:S^//^/^g}
|
||||
@ -1038,10 +1094,6 @@ checksum: fetch
|
||||
.if defined(NO_EXTRACT) && !target(extract)
|
||||
extract: fetch
|
||||
@${TOUCH} ${TOUCH_FLAGS} ${EXTRACT_COOKIE}
|
||||
checksum: fetch
|
||||
@${DO_NADA}
|
||||
makesum: fetch
|
||||
@${DO_NADA}
|
||||
.endif
|
||||
|
||||
# Disable build
|
||||
@ -1372,7 +1424,7 @@ _PORT_USE: .USE
|
||||
cd ${.CURDIR} && ${SETENV} ${SCRIPTS_ENV} ${SH} \
|
||||
${SCRIPTDIR}/${.TARGET:S/^real-/post-/}; \
|
||||
fi
|
||||
.if make(real-install) && defined(_MANPAGES)
|
||||
.if make(real-install) && (defined(_MANPAGES) || defined(_MLINKS))
|
||||
@cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} compress-man
|
||||
.endif
|
||||
.if make(real-install) && !defined(NO_PKG_REGISTER)
|
||||
@ -1929,14 +1981,32 @@ generate-plist:
|
||||
@>${TMPPLIST}
|
||||
.for man in ${__MANPAGES}
|
||||
@${ECHO} ${man} >> ${TMPPLIST}
|
||||
.endfor
|
||||
.for _PREFIX in ${PREFIX}
|
||||
.if ${_TMLINKS:M${_PREFIX}*}x != x
|
||||
@for i in ${_TMLINKS:M${_PREFIX}*:S,^${_PREFIX}/,,}; do \
|
||||
${ECHO} "$$i" >> ${TMPPLIST}; \
|
||||
done
|
||||
.endif
|
||||
.if ${_TMLINKS:N${_PREFIX}*}x != x
|
||||
@${ECHO} @cwd / >> ${TMPPLIST}
|
||||
@for i in ${_TMLINKS:N${_PREFIX}*:S,^/,,}; do \
|
||||
${ECHO} "$$i" >> ${TMPPLIST}; \
|
||||
done
|
||||
@${ECHO} '@cwd ${PREFIX}' >> ${TMPPLIST}
|
||||
.endif
|
||||
.endfor
|
||||
@${SED} ${_sedsubplist} ${PLIST} >> ${TMPPLIST}
|
||||
.if (${PORTOBJFORMAT} == "aout")
|
||||
@${SED} -e 's,\(/lib.*\.so\.[0-9]*\)$$,\1.0,' ${TMPPLIST} > ${TMPPLIST}.tmp
|
||||
@${MV} -f ${TMPPLIST}.tmp ${TMPPLIST}
|
||||
.endif
|
||||
.endif
|
||||
|
||||
${TMPPLIST}:
|
||||
@cd ${.CURDIR} && ${MAKE} generate-plist
|
||||
|
||||
# Compress (or uncompress) manpages.
|
||||
# Compress (or uncompress) and symlink manpages.
|
||||
.if !target(compress-man)
|
||||
compress-man:
|
||||
.if ${MANCOMPRESSED} == yes && defined(NOMANCOMPRESS)
|
||||
@ -1950,6 +2020,19 @@ compress-man:
|
||||
@${GZIP_CMD} ${manpage}
|
||||
.endfor
|
||||
.endif
|
||||
.if defined(_MLINKS)
|
||||
@set ${_MLINKS:S,"",,g:S,//,/,g}; \
|
||||
while :; do \
|
||||
[ $$# -eq 0 ] && break || ${TRUE}; \
|
||||
${RM} -f $${2%.gz}; ${RM} -f $$2.gz; \
|
||||
${LN} -fs `${ECHO} $$1 $$2 | ${AWK} '{ \
|
||||
z=split($$1, a, /\//); x=split($$2, b, /\//); \
|
||||
while (a[i] == b[i]) i++; \
|
||||
for (q=i; q<x; q++) printf "../"; \
|
||||
for (; i<z; i++) printf a[i] "/"; printf a[z]; }'` $$2; \
|
||||
shift; shift; \
|
||||
done
|
||||
.endif
|
||||
.endif
|
||||
|
||||
# Fake installation of package so that user can pkg_delete it later.
|
||||
@ -1975,7 +2058,7 @@ fake-pkg:
|
||||
${CP} ${PKGDIR}/DEINSTALL ${PKG_DBDIR}/${PKGNAME}/+DEINSTALL; \
|
||||
fi; \
|
||||
if [ -f ${PKGDIR}/REQ ]; then \
|
||||
${CP} ${PKGDIR}/REQ ${PKG_DBDIR}/${PKGNAME}/+REQ; \
|
||||
${CP} ${PKGDIR}/REQ ${PKG_DBDIR}/${PKGNAME}/+REQUIRE; \
|
||||
fi; \
|
||||
if [ -f ${PKGDIR}/MESSAGE ]; then \
|
||||
${CP} ${PKGDIR}/MESSAGE ${PKG_DBDIR}/${PKGNAME}/+DISPLAY; \
|
||||
|
Loading…
Reference in New Issue
Block a user