From owner-freebsd-ports@FreeBSD.ORG Tue Apr 23 16:49:23 2013 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 434AAD44; Tue, 23 Apr 2013 16:49:23 +0000 (UTC) (envelope-from utisoft@gmail.com) Received: from mail-ia0-x22d.google.com (mail-ia0-x22d.google.com [IPv6:2607:f8b0:4001:c02::22d]) by mx1.freebsd.org (Postfix) with ESMTP id 0DECF1062; Tue, 23 Apr 2013 16:49:23 +0000 (UTC) Received: by mail-ia0-f173.google.com with SMTP id j5so754750iaf.32 for ; Tue, 23 Apr 2013 09:49:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:mime-version:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=xFuZEfEABNAtEnuSBCZmiW3cjJgbMwsOaCHRxFAJOSs=; b=t0Bxi81HwOVT21hdJvQZw5AofRtGxn78NIJC03gWdnv+cYGZBWIs3mI9/+vEMnetp8 VaCRFBOoahsw751Lu4jF+0tbtS2e9SW+nfGF8xJ3MvPrIeFzoj9CIVdfSqRtd1T0lWIC Lt/qKuNAZ5GndldCfcoS0kITVYg2ZXP821Q6yAm18ZXh3KV+Pu4n58EVtdN+DG2LNBhy t+vkmSP1r0txPIhxYXCde6Pxhngvos+WAWGduDuNZGimfG8pmviDxvJ9qYC9lvS3RbDr dpsCOskpVS8EPgWM6M/LGyKfs2oJIV8USm80TMTEqkT6Svhuom7HKKMf/thXhX3UnR83 aLPg== X-Received: by 10.50.132.33 with SMTP id or1mr4958841igb.62.1366735762733; Tue, 23 Apr 2013 09:49:22 -0700 (PDT) MIME-Version: 1.0 Received: by 10.64.58.52 with HTTP; Tue, 23 Apr 2013 09:48:52 -0700 (PDT) In-Reply-To: <20130413220152.51ef2cb3@bsd64.grem.de> References: <20130330034028.0f8cefc8@bsd64.grem.de> <5156C0D9.50909@FreeBSD.org> <20130330142320.38010126@bsd64.grem.de> <20130408103118.67ea695a@bsd64.grem.de> <20130409205950.677a6812@bsd64.grem.de> <20130410061331.GA74304@ithaqua.etoilebsd.net> <20130410135632.0971caef@bsd64.grem.de> <20130413220152.51ef2cb3@bsd64.grem.de> From: Chris Rees Date: Tue, 23 Apr 2013 17:48:52 +0100 Message-ID: Subject: Re: www/nginx pkg-plist + pkgng (detectable?) To: Michael Gmelin Content-Type: text/plain; charset=ISO-8859-1 Cc: Baptiste Daroussin , FreeBSD Mailing List X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Apr 2013 16:49:23 -0000 On 13 April 2013 21:01, Michael Gmelin wrote: > On Wed, 10 Apr 2013 13:56:32 +0200 > Michael Gmelin wrote: > >> On Wed, 10 Apr 2013 09:02:29 +0100 >> Chris Rees wrote: >> >> > On 10 April 2013 07:13, Baptiste Daroussin wrote: >> > > On Tue, Apr 09, 2013 at 08:59:50PM +0200, Michael Gmelin wrote: >> > >> On Tue, 9 Apr 2013 19:43:15 +0100 >> > >> Chris Rees wrote: >> > >> >> > >> >> > >> > >> > >> > No, it's a bug in pkgng; it should respect @cwd. >> > >> > >> > > >> > > No it is not. >> > > >> > > While i agree with pkgng that should repect @cwd (it surely does) >> > > >> > > There is nothing written anywhere that will waranty you that the >> > > @exec line will be parsed in order ro prepend @cwd path to a path >> > > you provide. the only thing doing that is %D. >> > > >> > > A user MUST add %D and have complete path in @exec lines >> > > >> > > In fact in that case it works by chance becauce of how pkg_install >> > > treat plist. >> > >> > Am I misunderstanding the meaning of "current working directory"? >> > >> > When mkdir is called, it should create the directory in @cwd. >> > pkg_install's behaviour is correct here, and pkgng's is not. >> > >> > Chris >> >> pkg_create(1) says: >> >> @cwd [directory] >> Set the internal directory pointer to point to directory. >> All subsequent *filenames* will be assumed relative to >> this directory. If no directory argument is given, it will set >> the internal directory pointer to the first prefix value. >> Note: @cd is also an alias for this command. >> >> but as far as the package manager is concerned, www/nginx-dist is an >> argument to mkdir in the exec call (@exec mkdir -p -m 755 >> www/nginx-dist) and not a filename. >> >> Also the porters handbook uses %D in all its examples, but offers no >> explicit explanation. >> >> That said, the way pkg_add is implemented, it changes to directories >> as a side effect of using its PUSHOUT macro in >> usr.sbin/pkg_install/add/extract.c (I only glanced at that, but that >> seems to be the reason why this is happening). So commands get >> executed within `pwd` == @cwd. >> >> So there is definitely a backwards compatibility problem for the sheer >> reason of that "it worked before". I don't thing pkg should adopt this >> behavior (it seems like a bad idea long term), but it should detect it >> somehow. A simple approach to detect this could be chdiring >> to /var/empty in pkg before executing the call so it will fail in case >> the path used within @exec is relative. >> >> Cheers, >> Michael >> > > So what now? Is anybody looking into this? Should I open a PR for nginx > and supply a patch that fixes this (theoretically it should be applied > despite the port freeze, since it's a build problem). Please do open a PR if you haven't already. > Regarding pkgng: Will anybody consider implementing automatic checks to > prevent something like this from happening (e.g. the simplistic > approach I suggested). Even if the files wouldn't be left behind, the > fact that something gets touched in pwd is really bad - as an admin it > should be safe to assume that I can start pkg from any directory > without altering it state (and be it temporarily). I think a patch to portlint wouldn't go amiss. Feel up to the challenge? Chris