aboutsummaryrefslogtreecommitdiff
path: root/Mk/bsd.linux-rpm.mk
diff options
context:
space:
mode:
authorAlexander Leidinger <netchild@FreeBSD.org>2006-04-30 22:00:43 +0000
committerAlexander Leidinger <netchild@FreeBSD.org>2006-04-30 22:00:43 +0000
commite830277d415976085a02273db2a5f3005b1dfc4a (patch)
tree43bee88a5f939236234ad27547e9572e0efa2d1e /Mk/bsd.linux-rpm.mk
parentddb4285dd2a5b2f0add91622eff2f4de5672badf (diff)
downloadports-e830277d415976085a02273db2a5f3005b1dfc4a.tar.gz
ports-e830277d415976085a02273db2a5f3005b1dfc4a.zip
bsd.linux-rpm.mk:
- document some variables - set some variables based upon presets [1] - automatically guess the src RPM (needs to be overidden for multi-RPM ports) [1] - allow to specify complete directories or a set of files for automatic brandelf handling (BRANDELF_DIRS/BRANDELF_FILES) [1] - add fc3 to the automatic plist handling [1] - allow to override the linux-rpm-generate-plist target - also detect @dirrmtry in the automatic plist handling [1] - adopt the new-plist target to the new world order [1] ports: [1,2] - edit WRKSRC (add rpm/i386/${LINUX_DIST}/${LINUX_DIST_VER}) - add source distfiles to distinfo to allow auto fetching sources with defined PACKAGE_BUILDING; - remove some variables already defined at linux-rpm (i.e. MASTRE_SITE_SUBDIR); - add LINUX_DIST_VER to every port (in case default linux_base changes); - bump PORTREVISION (so that the ports build cluster puts the src and binary RPM's to the new location) - update linux-openal to the newest FC3 port All errors are mine because of cut&paste patch merging. Aproved by: maintainer [2] Reviewed on: multimedia [1] Submitted by: Boris Samorodov <bsam@ipt.ru> [1]
Notes
Notes: svn path=/head/; revision=160975
Diffstat (limited to 'Mk/bsd.linux-rpm.mk')
-rw-r--r--Mk/bsd.linux-rpm.mk86
1 files changed, 75 insertions, 11 deletions
diff --git a/Mk/bsd.linux-rpm.mk b/Mk/bsd.linux-rpm.mk
index 79bd555b1bb7..cdd118c3d4b0 100644
--- a/Mk/bsd.linux-rpm.mk
+++ b/Mk/bsd.linux-rpm.mk
@@ -1,9 +1,33 @@
#-*- mode: Makefile; tab-width: 4; -*-
# ex:ts=4
#
-# $FreeBSD: /tmp/pcvs/ports/Mk/bsd.linux-rpm.mk,v 1.2 2006-01-25 17:41:34 jylefort Exp $
+# $FreeBSD: /tmp/pcvs/ports/Mk/bsd.linux-rpm.mk,v 1.3 2006-04-30 22:00:42 netchild Exp $
#
+# 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. 3 for fedora core 3, 4 for fedora core 4
+# 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
@@ -12,6 +36,7 @@ Linux_RPM_Pre_Include= bsd.linux-rpm.mk
RPM2CPIO?= ${LOCALBASE}/bin/rpm2cpio
EXTRACT_SUFX?= .${LINUX_RPM_ARCH}.rpm
+SRC_SUFX?= .src.rpm
USE_LINUX?= yes
USE_LINUX_PREFIX= yes
@@ -33,10 +58,38 @@ LINUX_RPM_ARCH?= ${ARCH}
Linux_RPM_Post_Include= bsd.linux-rpm.mk
+LINUX_DIST?= fedora
+LINUX_DIST_VER?= 3
+
+. if defined(LINUX_DIST)
+DIST_SUBDIR?= rpm/${LINUX_RPM_ARCH}/${LINUX_DIST}/${LINUX_DIST_VER}
+
+. if ${LINUX_DIST} == "fedora"
MASTER_SITES?= ${MASTER_SITE_FEDORA_LINUX}
-MASTER_SITE_SUBDIR?= 3/${LINUX_RPM_ARCH}/os/Fedora/RPMS/
+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
+. else
+IGNORE= unknown LINUX_DIST in port Makefile
+. endif
+. endif
PKGNAMEPREFIX?= linux-
+# DISTFILES and SRC_DISTFILES assume that there is only one bindist
+# and one src file.
+# Please, define them n the Makefile of the port in case this assumption
+# is not true.
+
+DISTFILES?= ${DISTNAME}${EXTRACT_SUFX}
+SRC_DISTFILES?= ${DISTNAME}${SRC_SUFX}
+
+. if defined(PACKAGE_BUILDING)
+DISTFILES+= ${SRC_DISTFILES}
+MASTER_SITE_SUBDIR+= ${MASTER_SITE_SRC_SUBDIR}
+ALWAYS_KEEP_DISTFILES= yes
+. endif
+
EXTRACT_DEPENDS+= ${RPM2CPIO}:${PORTSDIR}/archivers/rpm
EXTRACT_CMD?= ${RPM2CPIO}
@@ -45,43 +98,54 @@ EXTRACT_AFTER_ARGS?= | ${CPIO} -id --quiet
MD5_FILE?= ${MASTERDIR}/distinfo.${LINUX_RPM_ARCH}
+BRANDELF_DIRS?=
+BRANDELF_FILES?=
+
. if defined(AUTOMATIC_PLIST)
. if ${USE_LINUX} == "8" || ${USE_LINUX:L} == "yes"
_LINUX_BASE_SUFFIX= 8
. elif ${USE_LINUX} == "debian"
_LINUX_BASE_SUFFIX= debian
+. elif ${USE_LINUX} == "fc3"
+_LINUX_BASE_SUFFIX= fc3
. 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\", \"8\" and \"debian\"
+IGNORE= uses AUTOMATIC_PLIST with an unsupported USE_LINUX, \"${USE_LINUX}\". Supported values are \"yes\", \"8\", \"debian\" and \"fc3\"
. 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} * ! -type d | ${SORT} > ${PLIST} && \
${FIND} * -type d | ${SORT} | ${SED} -e 's|^|@dirrm |' > ${PLIST}.dirs
- @${GREP} '^@dirrm ' ${PORTSDIR}/emulators/linux_base-${_LINUX_BASE_SUFFIX}/pkg-plist | ${SORT} > ${PLIST}.shared-dirs
+ @${GREP} '^@dirrm' ${PORTSDIR}/emulators/linux_base-${_LINUX_BASE_SUFFIX}/pkg-plist | ${SORT} > ${PLIST}.shared-dirs
@${COMM} -1 -3 ${PLIST}.shared-dirs ${PLIST}.dirs | ${SORT} -r >> ${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} * -type d -exec ${MKDIR} "${PREFIX}/{}" \;
cd ${WRKSRC} && ${FIND} * ! -type d | ${CPIO} -pm -R root:wheel ${PREFIX}
. endif
. if !target(new-plist)
-new-plist:
- @${RM} -rf ${WRKDIR}/.new-plist
- @${MKDIR} ${WRKDIR}/.new-plist
- @cd ${WRKDIR}/.new-plist && \
- for f in ${DISTFILES}; do \
- ${RPM2CPIO} ${_DISTDIR}/$$f | ${CPIO} -id --quiet; \
+new-plist: build
+ @${RM} -f ${PLIST}.new
+ @cd ${WRKSRC} && \
${FIND} * ! type d | ${SORT} > ${PLIST}.new; \
${FIND} -d * -type d | ${SED} -e 's|^|@dirrm |' >> ${PLIST}.new; \
done