435ea2a95a
64 bit linuxulator support (not activated by default): - most of the work was done by Alan Jude - all errors are mine - 64bit (may) have rough edges - I validated * that the 32bit part doesn't has deinstall regressions (incl. EXP runs by antoine) * 29 of 72 64bit ports ports don't have deinstall leftovers (more validation later, when I dare to activate the 64bit linuxulator in the kernel) - the infrastructure part looks mature enough to let more test-bunnies get some experience with the new 64 bit parts - to use it you shall have no linux ports installed and have to specify (on your own risk) the following in make.conf before installing the ports: OVERRIDE_LINUX_BASE_PORT=c6_64 OVERRIDE_LINUX_NONBASE_PORTS=c6_64 This is on top of the exiting c6 linux ports. Given that CentOS 7 is 64bits only, we decided to have it as an "overlay" instead of new ports. The 64bit part only installs 64bit executables, the 32bit ports can not be installed at the same time (if needed we can think of letting the 64bit overlay install the 32bit parts too, but given the CentOS 7 comment above...). Differential Revision: https://reviews.freebsd.org/D174 Submitted by: alanjude Sponsored by: Essen FreeBSD Hackathon 2015 Reviewed by: xmj, eadler (earlier versions) Approved by: portmgr (antoine after some EXP-runs)
195 lines
6.1 KiB
Makefile
195 lines
6.1 KiB
Makefile
#-*- tab-width: 4; -*-
|
|
# ex:ts=4
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# Variables:
|
|
# LINUX_DIST - Will be used to set some dist-specific presets.
|
|
# Valid values: fedora
|
|
# LINUX_DIST_VER - Use depends upon the dist-specific presets.
|
|
# Valid values for "fedora": all version numbers
|
|
# e.g. 10 for fedora 10
|
|
# Valid values for "centos": all version numbers
|
|
# e.g. 6.6 for centos 6.6
|
|
# This is used to set MASTER_SITE_{,SRC_}SUBDIR
|
|
# if it isn't already set.
|
|
# MASTER_SITE_SRC_SUBDIR
|
|
# - The subdir for the src RPM's.
|
|
# DISTFILES - For simple cases this will be set automatically
|
|
# based upon the DISTNAME.
|
|
# SRC_DISTFILES - Variable which contains the corresponding src RPM's.
|
|
# If there's no corresponding src RPM, it has to be
|
|
# set to the empty value (SRC_DISTFILES= "").
|
|
# AUTOMATIC_PLIST - Generate a dynamic plist (please have a look at the
|
|
# porters handbook section which talks about plists.
|
|
# This feature is reserved for rare cases).
|
|
# BRANDELF_DIRS - A list of directories with executables to brand
|
|
# as a linux executable. The directories has to not
|
|
# contain libraries.
|
|
# BRANDELF_FILES - A list of files to brand as a linux executable in
|
|
# case BRANDELF_DIRS can't be used.
|
|
|
|
.if !defined(_POSTMKINCLUDED) && !defined(Linux_RPM_Pre_Include)
|
|
|
|
Linux_RPM_Include_MAINTAINER= emulation@FreeBSD.org
|
|
Linux_RPM_Pre_Include= bsd.linux-rpm.mk
|
|
|
|
EXTRACT_SUFX?= .${LINUX_RPM_ARCH}.rpm
|
|
SRC_SUFX?= .src.rpm
|
|
|
|
USE_LINUX?= yes
|
|
USE_LINUX_PREFIX= yes
|
|
|
|
NO_WRKSUBDIR= yes
|
|
NO_BUILD= yes
|
|
|
|
. if ${USE_LINUX} == "c6" || ${USE_LINUX} == "yes" # default to CentOS
|
|
# Do not build CentOS 6 ports if overridden by f10
|
|
. if defined(OVERRIDE_LINUX_BASE_PORT) && ${OVERRIDE_LINUX_NONBASE_PORTS} == "f10"
|
|
IGNORE= This port requires CentOS ${LINUX_DIST_VER}. Please remove OVERRIDE_LINUX_NONBASE_PORTS=f10 in /etc/make.conf.
|
|
. endif
|
|
. endif
|
|
|
|
.endif
|
|
|
|
.if defined(_POSTMKINCLUDED) && !defined(Linux_RPM_Post_Include)
|
|
|
|
Linux_RPM_Post_Include= bsd.linux-rpm.mk
|
|
|
|
.if ${USE_LINUX} == "f10"
|
|
USE_LINUX?= "f10"
|
|
LINUX_DIST= fedora
|
|
LINUX_DIST_VER= 10
|
|
.else # default to CentOS
|
|
LINUX_DIST= centos
|
|
LINUX_DIST_VER= 6.6
|
|
.endif
|
|
|
|
.if defined(LINUX_DIST)
|
|
DIST_SUBDIR?= rpm/${LINUX_RPM_ARCH}/${LINUX_DIST}/${LINUX_DIST_VER}
|
|
|
|
. if ${LINUX_DIST} == "fedora"
|
|
# we do not want to define MASTER_SITES and MASTER_SITE_* if they are already defined
|
|
# ex.: MASTER_SITES=file:///...
|
|
. ifndef MASTER_SITES
|
|
MASTER_SITES= ${MASTER_SITE_FEDORA_LINUX}
|
|
. if ${LINUX_DIST_VER} == 10
|
|
MASTER_SITE_SUBDIR?= ../releases/${LINUX_DIST_VER}/Everything/${LINUX_RPM_ARCH}/os/Packages \
|
|
../updates/${LINUX_DIST_VER}/${LINUX_RPM_ARCH}
|
|
MASTER_SITE_SRC_SUBDIR?= ../releases/${LINUX_DIST_VER}/Everything/source/SRPMS \
|
|
../updates/${LINUX_DIST_VER}/SRPMS
|
|
. else
|
|
MASTER_SITE_SUBDIR?= ${LINUX_DIST_VER}/${LINUX_RPM_ARCH}/os/Fedora/RPMS \
|
|
updates/${LINUX_DIST_VER}/${LINUX_RPM_ARCH}
|
|
MASTER_SITE_SRC_SUBDIR?= ${LINUX_DIST_VER}/SRPMS \
|
|
updates/${LINUX_DIST_VER}/SRPMS
|
|
. endif
|
|
. endif
|
|
. elif ${LINUX_DIST} == "centos"
|
|
MASTER_SITES?= ${MASTER_SITE_CENTOS_LINUX} ${MASTER_SITE_CENTOS_LINUX_UPDATES}
|
|
MASTER_SITE_SUBDIR?= centos/${LINUX_DIST_VER}/os/${LINUX_REPO_ARCH}/Packages/ \
|
|
centos/${LINUX_DIST_VER}/updates/${LINUX_REPO_ARCH}/Packages/
|
|
. if ${LINUX_DIST_VER} == "5" #needed for Qt...
|
|
LINUX_RPM_ARCH= i386
|
|
MASTER_SITE_SUBDIR= centos/5/os/i386/Packages/
|
|
. endif
|
|
. if defined(PACKAGE_BUILDING)
|
|
MASTER_SITES+= http://vault.centos.org/%SUBDIR%/:SOURCE
|
|
MASTER_SITE_SUBDIR+= ${LINUX_DIST_VER}/os/Source/SPackages/:SOURCE
|
|
. endif
|
|
. endif
|
|
.endif
|
|
|
|
PKGNAMEPREFIX?= linux-${USE_LINUX}-
|
|
|
|
# DISTFILES and SRC_DISTFILES assume that there is only one bindist
|
|
# and one src file.
|
|
# Please, define them in the Makefile of the port in case this assumption
|
|
# is not true.
|
|
|
|
DISTVERSION= ${PORTVERSION}-${RPMVERSION}
|
|
DISTNAME?= ${PORTNAME}-${DISTVERSION}
|
|
DISTFILES?= ${DISTNAME}${EXTRACT_SUFX}
|
|
BIN_DISTFILES:= ${DISTFILES}
|
|
SRC_DISTFILES?= ${DISTNAME}${SRC_SUFX}:SOURCE
|
|
EXTRACT_ONLY?= ${BIN_DISTFILES:C/:[^:]+$//}
|
|
|
|
. if defined(PACKAGE_BUILDING)
|
|
DISTFILES+= ${SRC_DISTFILES}
|
|
MASTER_SITE_SUBDIR+= ${MASTER_SITE_SRC_SUBDIR}
|
|
ALWAYS_KEEP_DISTFILES= yes
|
|
. endif
|
|
|
|
.if !defined(USE_LINUX_RPM_BAD_PERMS)
|
|
EXTRACT_CMD?= ${TAR}
|
|
EXTRACT_BEFORE_ARGS?= --no-same-permissions --no-same-owner -xf
|
|
EXTRACT_AFTER_ARGS?=
|
|
.else
|
|
EXTRACT_DEPENDS+= rpm2archive:${PORTSDIR}/archivers/rpm4
|
|
EXTRACT_CMD?= rpm2archive
|
|
EXTRACT_BEFORE_ARGS?= <
|
|
EXTRACT_AFTER_ARGS?= | ${TAR} xf - --no-same-permissions --no-same-owner
|
|
.endif
|
|
|
|
DISTINFO_FILE?= ${MASTERDIR}/distinfo.${LINUX_RPM_ARCH}
|
|
|
|
BRANDELF_DIRS?=
|
|
BRANDELF_FILES?=
|
|
|
|
# For ports that define PORTDOCS, be sure not to install
|
|
# documentation if NOPORTDOCS is defined
|
|
. if defined(PORTDOCS) && defined(NOPORTDOCS)
|
|
pre-patch: linux-rpm-clean-portdocs
|
|
|
|
. if !target(linux-rpm-clean-portdocs)
|
|
linux-rpm-clean-portdocs:
|
|
. for x in ${PORTDOCS}
|
|
@${RM} -f ${WRKDIR}/${DOCSDIR_REL}/${x}
|
|
. endfor
|
|
@${RMDIR} ${WRKDIR}/${DOCSDIR_REL}
|
|
. endif
|
|
. endif
|
|
|
|
. if ${USE_LINUX} != "f10"
|
|
PLIST?= ${MASTERDIR}/pkg-plist.${LINUX_RPM_ARCH}
|
|
. endif
|
|
|
|
. if defined(AUTOMATIC_PLIST)
|
|
|
|
. if ${USE_LINUX} == "f10"
|
|
_LINUX_BASE_SUFFIX= f10
|
|
. elif ${USE_LINUX} == "c6" || ${USE_LINUX} == "yes"
|
|
_LINUX_BASE_SUFFIX= c6
|
|
. elif ${USE_LINUX} == "c6_64
|
|
_LINUX_BASE_SUFFIX= c6
|
|
. else
|
|
# other linux_base ports do not provide a pkg-plist file
|
|
IGNORE= uses AUTOMATIC_PLIST with an unsupported USE_LINUX, \"${USE_LINUX}\". Supported values are \"yes\", \"f10\", \"c6\", and \"c6_64\"
|
|
. endif
|
|
|
|
PLIST?= ${WRKDIR}/.PLIST.linux-rpm
|
|
|
|
pre-install: linux-rpm-generate-plist
|
|
|
|
. if !target(linux-rpm-generate-plist)
|
|
linux-rpm-generate-plist:
|
|
cd ${WRKSRC} && \
|
|
${FIND} * ! -path "stage/*" ! -type d | ${SORT} > ${PLIST}
|
|
. endif
|
|
. endif
|
|
|
|
. if !target(do-install)
|
|
do-install:
|
|
. if ${BRANDELF_DIRS}
|
|
@cd ${WRKSRC} && ${FIND} ${BRANDELF_DIRS} -type f -print0 \
|
|
| ${XARGS} -0 ${FILE} | ${GREP} ELF | ${CUT} -d : -f 1 \
|
|
| ${XARGS} ${BRANDELF} -t Linux
|
|
. endif
|
|
. if ${BRANDELF_FILES}
|
|
@cd ${WRKSRC} && ${BRANDELF} -t Linux ${BRANDELF_FILES}
|
|
. endif
|
|
cd ${WRKSRC} && ${FIND} * ! -path "stage*" -type d -exec ${MKDIR} "${STAGEDIR}${PREFIX}/{}" \;
|
|
cd ${WRKSRC} && ${FIND} * ! -path "stage/*" ! -type d | ${CPIO} -pm -R root:wheel ${STAGEDIR}${PREFIX}
|
|
. endif
|
|
.endif
|