freebsd-ports/emulators/linux_base-f10/Makefile
Alexander Leidinger affb190b16 The port is intended to become the new default linux_base port (replaces
the current linux_base-8 port).

You should only switch to this port if you know what you are doing.
You may or may not have problems with installing other linux related
ports after switching to it. Success or failure reports welcome.

To switch:
 - echo "OVERRIDE_LINUX_BASE_PORT=fc3" >> /etc/make.conf
 - portupgrade -fo emulators/linux_base-fc3 linux_base-8

News and changes (from submitter with some small changes by me):
 - based on linux_base-8 port;
 - don't use linux rpm binary to install. The whole source tree is
   created at ${WRKDIR} and then installed (using cpio);
 - removes some files and directories (etc/passwd, etc/group,
   usr/local, ...) to ensure using FreeBSD original files;
 - introduces etc/nsswitch.conf.dist and etc/yp.conf.sample files,
   uses correct install/deinstall behaviour with etc/nsswitch.conf
   and etc/yp.conf files;
 - doesn't do [u]mounting while install/deinstall process.
   Thus it is possible to use jails while building packages.
   But since linprocfs is not automounted, special measures should be
   taken at package building for those ports which need a mounted
   linprocfs (i.e. for linux JDK building);
 - uses linux ldconfig in the pkg-install file (as opposed to using in
   the Makefile). It is needed when upgrading (i.e. when other linux
   libraries are present in the system) and when installing by packages.

Submitted by:	Boris Samorodov <bsam@ipt.ru> (some small changes by me)
2006-03-18 19:07:04 +00:00

195 lines
5.8 KiB
Makefile

# New ports collection makefile for: linux_base-fc3
# Date created: $Date$
# Whom: bsam@ipt.ru
# based on ports/emulators/linux_base by trevor, netchild and others
#
# $FreeBSD$
#
PORTNAME= fc
PORTVERSION= 3
CATEGORIES= emulators linux
MASTER_SITES= ${MASTER_SITE_FEDORA_LINUX}
MASTER_SITE_SUBDIR= ${PORTVERSION}/${LINUX_RPM_ARCH}/os/Fedora/RPMS \
${PORTVERSION}/SRPMS
PKGNAMEPREFIX= linux_base-
DISTFILES= ${BIN_DISTFILES} ${SRC_DISTFILES}
DIST_SUBDIR= rpm/${LINUX_RPM_ARCH}/Fedora/${PORTVERSION}
EXTRACT_ONLY= ${BIN_DISTFILES}
MAINTAINER= freebsd-emulation@FreeBSD.org
COMMENT= Base set of packages needed in Linux mode (for i386/amd64)
BIN_DISTFILES= basesystem-8.0-4.noarch.rpm \
bash-3.0-17.${LINUX_RPM_ARCH}.rpm \
bzip2-1.0.2-13.${LINUX_RPM_ARCH}.rpm \
bzip2-libs-1.0.2-13.${LINUX_RPM_ARCH}.rpm \
compat-db-4.1.25-6.${LINUX_RPM_ARCH}.rpm \
compat-libstdc++-8-3.3.4.2.${LINUX_RPM_ARCH}.rpm \
coreutils-5.2.1-31.${LINUX_RPM_ARCH}.rpm \
db4-4.2.52-6.${LINUX_RPM_ARCH}.rpm \
elfutils-libelf-0.96-1.${LINUX_RPM_ARCH}.rpm \
fedora-release-3-8.${LINUX_RPM_ARCH}.rpm \
filesystem-2.3.0-1.${LINUX_RPM_ARCH}.rpm \
freetype-2.1.9-1.${LINUX_RPM_ARCH}.rpm \
gdbm-1.8.0-24.${LINUX_RPM_ARCH}.rpm \
glib-1.2.10-15.${LINUX_RPM_ARCH}.rpm \
glibc-2.3.3-74.${LINUX_RPM_ARCH}.rpm \
glibc-common-2.3.3-74.${LINUX_RPM_ARCH}.rpm \
grep-2.5.1-31.${LINUX_RPM_ARCH}.rpm \
info-4.7-5.${LINUX_RPM_ARCH}.rpm \
libacl-2.2.23-5.${LINUX_RPM_ARCH}.rpm \
libattr-2.4.16-3.${LINUX_RPM_ARCH}.rpm \
libgcc-3.4.2-6.fc3.${LINUX_RPM_ARCH}.rpm \
libstdc++-3.4.2-6.fc3.${LINUX_RPM_ARCH}.rpm \
libtermcap-2.0.8-39.${LINUX_RPM_ARCH}.rpm \
ncurses-5.4-13.${LINUX_RPM_ARCH}.rpm \
popt-1.9.1-21.${LINUX_RPM_ARCH}.rpm \
readline-4.3-13.${LINUX_RPM_ARCH}.rpm \
rpm-4.3.2-21.${LINUX_RPM_ARCH}.rpm \
setserial-2.17-17.${LINUX_RPM_ARCH}.rpm \
setup-2.5.36-1.noarch.rpm \
slang-1.4.9-6.${LINUX_RPM_ARCH}.rpm \
termcap-5.4-3.noarch.rpm \
zlib-1.2.1.2-1.${LINUX_RPM_ARCH}.rpm
.if defined(PACKAGE_BUILDING)
SRC_DISTFILES+= basesystem-8.0-4.src.rpm \
bash-3.0-17.src.rpm \
bzip2-1.0.2-13.src.rpm \
compat-db-4.1.25-6.src.rpm \
coreutils-5.2.1-31.src.rpm \
db4-4.2.52-6.src.rpm \
elfutils-0.96-1.src.rpm \
fedora-release-3-8.src.rpm \
filesystem-2.3.0-1.src.rpm \
freetype-2.1.9-1.src.rpm \
gdbm-1.8.0-24.src.rpm \
glib-1.2.10-15.src.rpm \
glibc-2.3.3-74.src.rpm \
grep-2.5.1-31.src.rpm \
libtermcap-2.0.8-39.src.rpm \
ncurses-5.4-13.src.rpm \
readline-4.3-13.src.rpm \
rpm-4.3.2-21.src.rpm \
setserial-2.17-17.src.rpm \
setup-2.5.36-1.src.rpm \
slang-1.4.9-6.src.rpm \
termcap-5.4-3.src.rpm \
zlib-1.2.1.2-1.src.rpm
ALWAYS_KEEP_DISTFILES= yes
.endif
CONFLICTS= linux_base-7* linux_base-deb* linux_base-gentoo* \
linux_base-rh-9* linux_base-suse-9* linux_base-8*
ONLY_FOR_ARCHS= i386 amd64
LINUX_RPM_ARCH= i386
PREFIX?= ${LINUXBASE}
NO_BUILD= yes
NO_FILTER_SHLIBS= yes
NO_MTREE= yes
NO_WRKSUBDIR= yes
MD5_FILE?= ${MASTERDIR}/distinfo.${LINUX_RPM_ARCH}
RPM2CPIO?= ${LOCALBASE}/bin/rpm2cpio
EXTRACT_DEPENDS+= ${RPM2CPIO}:${PORTSDIR}/archivers/rpm
EXTRACT_CMD?= ${RPM2CPIO}
EXTRACT_BEFORE_ARGS?=
EXTRACT_AFTER_ARGS?= | ${CPIO} -id --quiet
PLIST= pkg-plist
.include <bsd.port.pre.mk>
REMOVE_DIRS= boot dev home initrd root tmp var/run var/tmp usr/tmp \
usr/local
REMOVE_FILES= bin/df bin/su etc/exports etc/group etc/localtime \
etc/motd etc/passwd etc/printcap etc/services \
etc/protocols
ADD_FILES= var/lib/rpm/packages.rpm \
var/lib/rpm/nameindex.rpm \
var/lib/rpm/fileindex.rpm \
var/lib/rpm/providesindex.rpm \
var/lib/rpm/requiredby.rpm \
var/lib/rpm/conflictsindex.rpm \
var/lib/rpm/groupindex.rpm \
var/lib/rpm/triggerindex.rpm
.if (${MACHINE_ARCH} == "amd64")
FALLBACK_ELF_MIB= kern.elf32.fallback_brand
.else
FALLBACK_ELF_MIB= kern.fallback_elf_brand
.endif
.if (${ARCH} == "amd64")
LATEST_LINK:= ${LATEST_LINK:C/linux/linux32/}
ARCH= i386
.endif
post-extract:
@for D in ${REMOVE_DIRS}; do \
${RM} -rf ${WRKSRC}/$$D; \
done
@for F in ${REMOVE_FILES}; do \
${RM} -f ${WRKSRC}/$$F; \
done
@for F in ${ADD_FILES}; do \
${TOUCH} ${WRKSRC}/$$F; \
done
#
# Create a good ld.so.conf and touch ld.so.cache
#
@${ECHO_CMD} -e '/lib\n/usr/lib\n${X11BASE}/lib' >> \
${WRKSRC}/etc/ld.so.conf
@${TOUCH} ${WRKSRC}/etc/ld.so.cache
#
# Create yp.conf as a hint to NIS users and make sure there's a
# mtab in etc, albeit an empty one. This is needed in a couple of
# cases. Most notably staroffice6. If yp.conf exists install only
# yp.conf.sample
#
@${INSTALL} ${COPY} -m 644 ${FILESDIR}/yp.conf.sample ${WRKSRC}/etc
@${TOUCH} ${WRKSRC}/etc/mtab
#
# If ${PREFIX}/etc/nsswitch.conf exists, don't touch it,
# install only ${PREFIX}/etc/nsswitch.conf.dist
#
@${MV} ${WRKSRC}/etc/nsswitch.conf ${WRKSRC}/etc/nsswitch.conf.dist
do-install:
#
# Handle the loading of the linux loadable kernel module if required.
#
@${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
#
# Do install without using linux rpm system
#
@cd ${WRKSRC} && ${FIND} * -type d -exec ${MKDIR} "${PREFIX}/{}" \;
@cd ${WRKSRC} && ${FIND} * ! -type d \
| ${CPIO} -pm -R root:wheel ${PREFIX}
@${FIND} ${PREFIX}/bin ${PREFIX}/sbin/ ${PREFIX}/usr/bin \
${PREFIX}/usr/sbin -type f -print0 | ${XARGS} -0 ${FILE} \
| ${GREP} ELF | ${CUT} -d : -f 1 \
| ${XARGS} ${BRANDELF} -t Linux
@${LN} -sf /var/tmp ${PREFIX}/usr/tmp
@${CHOWN} root:wheel ${PREFIX}/var/lock ${PREFIX}/var/spool/mail
@${CHMOD} 755 ${PREFIX}/var/lock ${PREFIX}/var/spool/mail
post-install:
#
# Handle mounting linux procfs if exists at /etc/fstab and
# installing etc/nsswitch.conf, etc/yp.conf if so far they don't exist
#
@PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
#
# And finally show the pkg-message
#
@${ECHO} ''
@${CAT} ${PKGMESSAGE}
@${ECHO} ''
.include <bsd.port.post.mk>