Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Mar 2006 23:32:43 +0100
From:      Alexander Leidinger <Alexander@Leidinger.net>
To:        Boris Samorodov <bsam@ipt.ru>
Cc:        freebsd-emulation@freebsd.org
Subject:   Re: [patch] for bsd.linux-rpm.mk (add auto sources fetching)
Message-ID:  <20060318233243.52d6c3aa@Magellan.Leidinger.net>
In-Reply-To: <61349928@ho.ipt.ru>
References:  <39907788@serv3.int.kfs.ru> <20060316181625.41102cfd@Magellan.Leidinger.net> <61349928@ho.ipt.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
--MP__Zs=hjt1=aGcwfTSlB._VyF
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Am Thu, 16 Mar 2006 23:23:03 +0300
schrieb Boris Samorodov <bsam@ipt.ru>:

> On Thu, 16 Mar 2006 18:16:25 +0100 Alexander Leidinger wrote:
> > Am Thu, 16 Mar 2006 18:25:23 +0300
> > schrieb Boris Samorodov <bsam@ipt.ru>:
> 
> > > +.  if defined(PACKAGE_BUILDING) && ${AUTO_LINUX_SRC} == "yes"
> > > +DISTFILES+=		${DISTNAME}${SRC_SUFX}
> > > +MASTER_SITE_SUBDIR+=	3/SRPMS
> > > +ALWAYS_KEEP_DISTFILES=	yes
> > >  .  endif
> 
> > You are assuming this will only be used for some specific directory
> > layouts without the possibility to override this. I suggest to
> > introduce an overridable variable... maybe MASTER_SITE_SRC_SUBDIR or
> > whatever which will be added to MASTER_SITE_SUBDIR then. 
> 
> > Maybe you can change the patch to have a look at a SRC_DISTFILES
> > variable and add this content to the DISTFILES in the PACKAGE_BUILDING
> > case instead of hardcoding one file.
> 
> Agreed to both. New patch is attached.
> 
> If auto fetching go well, then variable AUTO_LINUX_SRC may be

I don't think we need it, I documented the behavior and what to do in
case of e.g. a commercial RPM.

> deletted. But for now it may be used if something go wrong with auto
> fetching.

Attached is a diff which I intend to commit. It's a combination of your
patches, and some own stuff (start of docs, a new new-plist target and
some mods to your patches). What do you think about it?

Bye,
Alexander.

-- 
              To boldly go where I surely don't belong.
http://www.Leidinger.net                       Alexander @ Leidinger.net
  GPG fingerprint = C518 BC70 E67F 143F BE91  3365 79E2 9C60 B006 3FE7
WL http://www.amazon.de/exec/obidos/registry/1FZ4DTHQE9PQ8/ref=wl_em_to/

--MP__Zs=hjt1=aGcwfTSlB._VyF
Content-Type: text/x-patch; name=bsd.linux-rpm.mk.diff
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=bsd.linux-rpm.mk.diff

Index: bsd.linux-rpm.mk
===================================================================
RCS file: /big/FreeBSD-CVS/ports/Mk/bsd.linux-rpm.mk,v
retrieving revision 1.2
diff -u -u -r1.2 bsd.linux-rpm.mk
--- bsd.linux-rpm.mk	25 Jan 2006 17:41:34 -0000	1.2
+++ bsd.linux-rpm.mk	18 Mar 2006 22:28:51 -0000
@@ -4,6 +4,30 @@
 # $FreeBSD: ports/Mk/bsd.linux-rpm.mk,v 1.2 2006/01/25 17:41:34 jylefort 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
@@ -33,10 +57,38 @@
 
 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 +97,54 @@
 
 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
 	@${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

--MP__Zs=hjt1=aGcwfTSlB._VyF--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060318233243.52d6c3aa>