From owner-p4-projects@FreeBSD.ORG Sun May 30 04:00:06 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 17515106567B; Sun, 30 May 2010 04:00:06 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CF390106566C; Sun, 30 May 2010 04:00:05 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-gy0-f182.google.com (mail-gy0-f182.google.com [209.85.160.182]) by mx1.freebsd.org (Postfix) with ESMTP id 5D3C78FC19; Sun, 30 May 2010 04:00:05 +0000 (UTC) Received: by gyh20 with SMTP id 20so2579459gyh.13 for ; Sat, 29 May 2010 21:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=b1ioW60iaC2pariK8Z/1kpWqit/zz3AzpidWNV+ZO8U=; b=X1gXTp3N6rpNGzIE5THQ6S8+9pa5ci0RyBbRUuwf6WqucCZqGpY3O4jKRZqpcTd9X1 Vh0F2fZ7/Sr8CRqLGc77Ek5gtAj0EH9xY4+4zvcJSWQ3qqBJiCR7Vl4NSiKdE/tXEjdl md8YmO9zgjlx7pZ1t3kqMUg9iqHdnIm/PKDhM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=jwfX6CPTAonWfd3Ut+xS1zT4hDl3xlypSH1vbeWUodJr0po8iww3OjWLAshjjf+kkH /eNPHN7tjKqODsf9ZyIKwZP6rG07H0GHtIT8UeyGfg603/p9Onetk6+cyKyjQpWnw0GJ ze+Rfbl857EQFiwfqCfVkvu6auARv/tmzqLoY= MIME-Version: 1.0 Received: by 10.231.146.140 with SMTP id h12mr3332592ibv.58.1275192004020; Sat, 29 May 2010 21:00:04 -0700 (PDT) Sender: yanegomi@gmail.com Received: by 10.231.70.16 with HTTP; Sat, 29 May 2010 21:00:03 -0700 (PDT) In-Reply-To: References: <201005300157.o4U1vbnm051835@repoman.freebsd.org> Date: Sat, 29 May 2010 21:00:03 -0700 X-Google-Sender-Auth: hy6zsyGE6-0oV_VjEPaBtIsmaFQ Message-ID: From: Garrett Cooper To: Garrett Cooper Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Perforce Change Reviews , Julien Laffaye Subject: Re: PERFORCE change 178963 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 May 2010 04:00:06 -0000 On Sat, May 29, 2010 at 8:55 PM, Garrett Cooper wrote= : > On Sat, May 29, 2010 at 6:57 PM, Julien Laffaye wr= ote: >> http://p4web.freebsd.org/@@178963?ac=3D10 >> >> Change 178963 by jlaffaye@gsoc on 2010/05/30 01:57:14 >> >> =A0 =A0 =A0 =A0Plans and thoughts for complete packages support. >> >> Affected files ... >> >> .. //depot/projects/soc2010/pkg_complete/Milestones#2 edit >> >> Differences ... >> >> =3D=3D=3D=3D //depot/projects/soc2010/pkg_complete/Milestones#2 (text+ko= ) =3D=3D=3D=3D >> >> @@ -1,0 +1,26 @@ >> +pkg_create: >> + =A0 =A0 =A0 The options of pkg_create are useless for creating a compl= ete package. >> +Should we add support for complete package in pkg_create or into a new = tool? >> +The tool for creating a complete package would take for first argument = the meta >> +(traditionnal) package. Then the tool read the plist to look for @pkgde= p and >> +repeat the operation for each dependency. >> +After ordering the dependencies, the tool tar'up all the traditionnal p= ackages >> +(without compression as the packages are already bz'ed). >> +This step would require factorisation of the code in pkg_info into a li= bpkg >> +function, with libarchive support for efficiency. Sorry... some more thoughts. >From a design perspective, what you're referring to (by some) is a package bundle where you have a means of specifying the metadata in the bundle of packages, and you have the payloads themselves. Some things to think about: a. What happens if one of the packages fails to install out of the bundles, but some packages have already been installed? b. What happens if one of the packages is already installed on the system: i. with the same version? ii. with a different version? >> +ports tree: >> + =A0 =A0 =A0 Add a "complete-package" target which depends on package-r= ecursive and >> +call the tool of step 1. > > Check with portmgr (at least flz), but it would probably be better to > stick with the package- prefixed target status quo. > > FWIW though this will require rewriting bits of package-noinstall, or > similar targets, as ports currently doesn't use pkg_install except to > register the install of all of the bits from ${WRKDIR} > (/usr/ports/.../work if not specified otherwise) into ${PREFIX}. > >> +pkg_add: >> + =A0 =A0 =A0 Add simple routine to test if the package is a traditionna= l or complete package. >> +If the package is complete, loop over the traditionnal packages in it, >> +call the function to install a traditionnal package (this function may = work >> +with streams). If the package is tradionnal, pass directly the stream t= o the >> +function. >> + >> +As a side effect, remove playpen and embrace libarchive. > > Yes... this will be a good thing, as several people have agreed, but > requires a ton of tests (including negative ones), and there's some > forethought that needs to be done and potential rewriting that's > required as whether or not the installed bits exist in the right > spots, and the permissions are sane will need to be properly evaluated > beforehand. > > You can't completely remove libarchive unless you properly use the > mktemp(3) family of functions though because there are some files > (like +CONTENTS) which need to be generated on the fly. > >> +pkg_info: >> + =A0 =A0 =A0 Show if the package is complete (list of contained package= s) or the >> +info of the traditionnal package. > > s/traditionnal/traditional/ Thanks! -Garrett