cvs commit: ports/databases/pg_filedump Makefile

Chris Rees crees at FreeBSD.org
Wed May 23 18:05:26 UTC 2012


On 23 May 2012 15:39, Bernhard Froehlich <decke at freebsd.org> wrote:
> On 23.05.2012 15:55, Pav Lucistnik wrote:
>>
>> Pav Lucistnik píše v st 23. 05. 2012 v 15:53 +0200:
>>>
>>> Bernhard Froehlich píše v st 23. 05. 2012 v 15:47 +0200:
>>> > On 23.05.2012 15:39, Pav Lucistnik wrote:
>>> > > Martin Wilke píše v st 23. 05. 2012 v 13:34 +0000:
>>> > >> miwi        2012-05-23 13:34:12 UTC
>>> > >>
>>> > >>   FreeBSD ports repository
>>> > >>
>>> > >>   Modified files:
>>> > >>     databases/pg_filedump Makefile
>>> > >>   Log:
>>> > >>   - Switch to FETCH_DEPENDS to fix fetch during build
>>> > >
>>> > > How is this supposed to work? The log message makes no sense.
>>> >
>>> > The problem that this fixes is when you are building in jails
>>> > and restrict internet access to the "fetch" target like
>>> > pointyhat-west, redports.org and poudriere already do.
>>>
>>> Well, the restriction was put in place for a reason 1*), and now you're
>>> working around that very reason. So just remove the restriction from
>>> pointyhat and problem solved.
>>
>>
>> On a second read, now I see what you're achieving. But still, the chosen
>> solution seems suboptimal.
>
>
> On the list of broken ports there are a handful of ports (including this
> one) that depend on another ports code (aka working directory). Right now
> those ports are written using a dirty hack like that:
>
> from databases/mysql-q4m:
>
> BUILD_DEPENDS=
>  ${NONEXISTENT}:${PORTSDIR}/databases/mysql${MYSQL_VER}-server:build
> CONFIGURE_ARGS= --with-mysql="$$(cd
> ${PORTSDIR}/databases/mysql${MYSQL_VER}-server; ${MAKE} -V WRKSRC)"
>
> We decided to choose the s/BUILD_DEPENDS/FETCH_DEPENDS/ solution because
> it doesn't actually make the hack much worse than it already is. The
> downside is that it builds during fetch which isn't nice but better than
> fetch during build which is a security improvement.
>
> If someone comes up with a better solution without completely rewriting
> all those ports I would be glad to help doing it. Right now it looks like
> there are around 5-10 ports of that kind.

I'm deeply unhappy about adding ad-hoc fixes like this.

Any comments about [1]?  I do think that the fixes already put in
should be reverted in favour of a proper solution.

Alternatively something like (but more hackish):

.for dep in ${PKG_DEPENDS} ${EXTRACT_DEPENDS} ${PATCH_DEPENDS}
${BUILD_DEPENDS} ${LIB_DEPENDS} ${RUN_DEPENDS}
# Check any dependencies with third tuple full, but don't duplicate.
.  if !empty(dep:M*\:*\:*) &&
empty(FETCH_DEPENDS:M*\:${dep:C,[^:]*\:([^:]*)\:[^:]*,\1}:\*)
FETCH_DEPENDS+= ${dep:C,[^:]*$,fetch}
.  endif
.endfor

Which is better?

Chris

====

[1]  http://www.bayofrum.net/~crees/patches/bsd.port.mk-fetch-depends.diff

Index: bsd.port.mk
===================================================================
RCS file: /exports/cvsroot-freebsd/ports/Mk/bsd.port.mk,v
retrieving revision 1.710
diff -u -r1.710 bsd.port.mk
--- bsd.port.mk	23 May 2012 08:17:49 -0000	1.710
+++ bsd.port.mk	23 May 2012 17:44:52 -0000
@@ -4294,7 +4294,7 @@
 _PKG_SEQ=		pkg-depends
 _FETCH_DEP=		pkg
 _FETCH_SEQ=		fetch-depends pre-fetch pre-fetch-script \
-				do-fetch post-fetch post-fetch-script
+				do-fetch fetch-specials post-fetch post-fetch-script
 _EXTRACT_DEP=	fetch
 _EXTRACT_SEQ=	check-build-conflicts extract-message checksum extract-depends \
 				pre-extract pre-extract-script do-extract \
@@ -5164,6 +5164,7 @@

 _UNIFIED_DEPENDS=${PKG_DEPENDS} ${EXTRACT_DEPENDS} ${PATCH_DEPENDS}
${FETCH_DEPENDS} ${BUILD_DEPENDS} ${LIB_DEPENDS} ${RUN_DEPENDS}
 _DEPEND_DIRS=	${_UNIFIED_DEPENDS:C,^[^:]*:([^:]*).*$,\1,}
+_DEPEND_SPECIALS=	${_UNIFIED_DEPENDS:M*\:*\:*:C,^[^:]*:([^:]*).*$,\1,:O:u}

 all-depends-list:
 	@${ALL-DEPENDS-LIST}
@@ -5299,6 +5300,14 @@
 	done
 .endif

+.if !target(fetch-specials)
+fetch-specials:
+	@${ECHO_MSG} "===> Fetching all distfiles required by ${PKGNAME} for building"
+.  for dir in ${_DEPEND_SPECIALS}
+		cd $dir; ${MAKE} fetch
+.  endfor
+.endif
+
 .if !target(fetch-recursive)
 fetch-recursive:
 	@${ECHO_MSG} "===> Fetching all distfiles for ${PKGNAME} and dependencies"


More information about the cvs-ports mailing list