Bug 170087

Summary: [Patch] ports-mgmt/poudriere: fix quoting for poudriere
Product: Ports & Packages Reporter: Vincent Hoffman-Kazlauskas <vince>
Component: Individual Port(s)Assignee: Baptiste Daroussin <bapt>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff
none
src::poudriere.d::common.sh.patch none

Description Vincent Hoffman-Kazlauskas 2012-07-23 15:20:11 UTC
I was finding that net-p2p/rtorrent wouldnt build in a jail using poudriere, the error in the output being
====>> Cleaning the build queue
[: /usr/local/poudriere_data/packages/83amd64-default/All/libsigc++-2.2.10: unexpected operator
====>> Cleaning up wrkdir

the attached patch quotes this so + (and presumable other special characters) will not break the build.

Fix: apply the attached patch (quote the list so + characters aren't treated as operators)

Patch attached with submission follows:
How-To-Repeat: use a standard poudriere setup to build libtorrent (or rtorrent which requires libtorrent) C
devel/libsigc++20 will build fine but isnt listed correctly as existing in the package list
Comment 1 gd 2012-07-23 15:32:49 UTC
On Mon, 23 Jul 2012 14:15:33 GMT
Vincent Hoffman-Kazlauskas <vince@unsane.co.uk> wrote:

> 
> >Number:         170087
> >Category:       ports
> >Synopsis:       [Patch] [poudriere] fix quoting for poudriere
> >Confidential:   no
> >Severity:       non-critical
> >Priority:       low
> >Responsible:    freebsd-ports-bugs
> >State:          open
> >Quarter:        
> >Keywords:       
> >Date-Required:
> >Class:          sw-bug
> >Submitter-Id:   current-users
> >Arrival-Date:   Mon Jul 23 14:20:11 UTC 2012
> >Closed-Date:
> >Last-Modified:
> >Originator:     Vincent Hoffman-Kazlauskas
> >Release:        9.0-RELEASE-p3
> >Organization:
> >Environment:
> FreeBSD fbsd9vm 9.0-RELEASE-p3 FreeBSD 9.0-RELEASE-p3 #0: Tue Jun 12 02:52:29 UTC 2012     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
> 
> >Description:
> I was finding that net-p2p/rtorrent wouldnt build in a jail using poudriere, the error in the output being
> ====>> Cleaning the build queue
> [: /usr/local/poudriere_data/packages/83amd64-default/All/libsigc++-2.2.10: unexpected operator
> ====>> Cleaning up wrkdir
> 
> the attached patch quotes this so + (and presumable other special characters) will not break the build.
> >How-To-Repeat:
> use a standard poudriere setup to build libtorrent (or rtorrent which requires libtorrent) C
> devel/libsigc++20 will build fine but isnt listed correctly as existing in the package list
> >Fix:
> apply the attached patch (quote the list so + characters aren't treated as operators)
> 
> > 
> --- common.sh.orig      2012-07-23 14:28:12.000000000 +0100
> +++ common.sh   2012-07-23 14:28:59.000000000 +0100
> @@ -635,7 +635,7 @@
>         export LOCALBASE=${MYBASE:-/usr/local}
>         while read p; do
>                 pn=$(awk -v o=${p} ' { if ($1 == o) {print $2} }' ${cache})
> -               [ ! -f ${PKGDIR}/All/${pn}.${EXT} ] && queue="${queue} $p"
> +               [ ! -f "${PKGDIR}/All/${pn}.${EXT}" ] && queue="${queue} $p"
>         done < ${tmplist2}
>  
>         rm -f ${tmplist2} ${deplist} ${tmplist}
> 

It's wrong patch I think.
Because ${cache} already contain broken data in this moment.
See attachment for correct patch.

> 
> >Release-Note:
> >Audit-Trail:
> >Unformatted:
> _______________________________________________
> freebsd-ports-bugs@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-ports-bugs
> To unsubscribe, send any mail to "freebsd-ports-bugs-unsubscribe@freebsd.org"


-- 
Denis Generalov <gd@powernet.ru>
Comment 2 Vincent Hoffman-Kazlauskas 2012-07-23 16:29:54 UTC
On 23/07/2012 15:32, Denis Generalov wrote:
> --- src/poudriere.d/common.sh.orig	2012-07-23 17:48:32.000000000 +0400
> +++ src/poudriere.d/common.sh	2012-07-23 17:49:00.000000000 +0400
> @@ -610,7 +610,7 @@
>  	local pn
>  	msg "Caching missing port versions"
>  	while read port; do
> -		if ! egrep -q "^${port} " ${cache}; then
> +		if ! grep -q "^${port} " ${cache}; then
>  			pn=$(injail make -C /usr/ports/${port} -VPKGNAME)
>  			echo "${port} ${pn}" >> ${cache}
>  		fi
This does not fix it for me.
Using this patch I get the following

Building new INDEX files... done.
====>> Mounting devfs
====>> Mounting /proc
====>> Mounting linuxfs
/etc/resolv.conf -> /usr/local/poudriere/jails/90andtest/etc/resolv.conf
====>> Starting jail 90andtest
====>> Populating LOCALBASE
====>> Calculating ports order and dependencies
====>> Caching missing port versions
====>> Sanity checking the repository
====>> Deleting stale symlinks
====>> Cleaning the build queue
[:
/usr/local/poudriere_data/packages/90andtest-default/All/libsigc++-2.2.10:
unexpected operator
====>> Cleaning up wrkdir
====>> Building lang/perl5.14
===>  Cleaning for perl-5.14.2_2

Please note that
/usr/local/poudriere_data/packages/90andtest-default/All/libsigc++-2.2.10
doesnt currently exist.

root@fbsd9vm ~/portlist]# ls
/usr/local/poudriere_data/packages/90andtest-default/All/
[root@fbsd9vm ~/portlist]#


Vince

Comment 3 Edwin Groothuis freebsd_committer freebsd_triage 2012-07-23 17:45:40 UTC
Responsible Changed
From-To: freebsd-ports-bugs->bapt

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 4 dfilter service freebsd_committer freebsd_triage 2012-07-24 10:04:27 UTC
Author: bapt
Date: Tue Jul 24 09:04:13 2012
New Revision: 301447
URL: http://svn.freebsd.org/changeset/ports/301447

Log:
  Fix some missing quoting
  
  PR:		ports/170087
  Submitted by:	Vincent Hoffman-Kazlauskas <vince@unsane.co.uk>, Denis Generalov <gd@powernet.ru>

Added:
  head/ports-mgmt/poudriere/files/
  head/ports-mgmt/poudriere/files/patch-src__poudriere.d__common.sh   (contents, props changed)
Modified:
  head/ports-mgmt/poudriere/Makefile   (contents, props changed)

Modified: head/ports-mgmt/poudriere/Makefile
==============================================================================
--- head/ports-mgmt/poudriere/Makefile	Tue Jul 24 08:50:17 2012	(r301446)
+++ head/ports-mgmt/poudriere/Makefile	Tue Jul 24 09:04:13 2012	(r301447)
@@ -7,6 +7,7 @@
 
 PORTNAME=	poudriere
 PORTVERSION=	1.5.4
+PORTREVISION=	1
 CATEGORIES=	ports-mgmt
 MASTER_SITES=	http://files.etoilebsd.net/poudriere/
 

Added: head/ports-mgmt/poudriere/files/patch-src__poudriere.d__common.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/ports-mgmt/poudriere/files/patch-src__poudriere.d__common.sh	Tue Jul 24 09:04:13 2012	(r301447)
@@ -0,0 +1,20 @@
+--- ./src/poudriere.d/common.sh.orig	2012-07-04 12:38:06.000000000 +0200
++++ ./src/poudriere.d/common.sh	2012-07-24 10:58:57.289711665 +0200
+@@ -610,7 +610,7 @@
+ 	local pn
+ 	msg "Caching missing port versions"
+ 	while read port; do
+-		if ! egrep -q "^${port} " ${cache}; then
++		if ! grep -q "^${port} " ${cache}; then
+ 			pn=$(injail make -C /usr/ports/${port} -VPKGNAME)
+ 			echo "${port} ${pn}" >> ${cache}
+ 		fi
+@@ -635,7 +635,7 @@
+ 	export LOCALBASE=${MYBASE:-/usr/local}
+ 	while read p; do
+ 		pn=$(awk -v o=${p} ' { if ($1 == o) {print $2} }' ${cache})
+-		[ ! -f ${PKGDIR}/All/${pn}.${EXT} ] && queue="${queue} $p"
++		[ ! -f "${PKGDIR}/All/${pn}.${EXT}" ] && queue="${queue} $p"
+ 	done < ${tmplist2}
+ 
+ 	rm -f ${tmplist2} ${deplist} ${tmplist}
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 5 Baptiste Daroussin freebsd_committer freebsd_triage 2012-07-24 10:05:03 UTC
State Changed
From-To: open->closed

committed thanks!