From owner-freebsd-ports@FreeBSD.ORG Thu May 17 19:58:59 2012 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9DFB11065672; Thu, 17 May 2012 19:58:59 +0000 (UTC) (envelope-from fernando.apesteguia@gmail.com) Received: from mail-lpp01m010-f54.google.com (mail-lpp01m010-f54.google.com [209.85.215.54]) by mx1.freebsd.org (Postfix) with ESMTP id DF8C38FC17; Thu, 17 May 2012 19:58:58 +0000 (UTC) Received: by laai10 with SMTP id i10so2209654laa.13 for ; Thu, 17 May 2012 12:58:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=+cOOreZ/hRkCd/PPyjiarpanuTP2REKyM4Gh+fOOuF8=; b=B8uK3x7nn1Aecso+0TB9d1Pkunsz8nkh+EKQDRP4n3GXurExFL90zv4g9vWtPX6ZbF KAzrxS3K768Ov9oPtvKJpiJ5VcMcYJ88Fr86FNwIdAEyV1Iuwn3BwxM5VG7VCAyF3DNq V9zfN+L9qnZHBCH+wNFBK6vtJiz/+tf+qvr0Ri8FBvlK6fEcsoGzK9cOPO/bu8pGoUQB ghU6DripNEY2JTWwFUj3BKHy7YWOEPxio07wHT9fgAWWkFsLngEkzUTKrCTY5i3q7Hhx wZrc1EwZdF+ot7+/yuJFwLK06EcRsQ7ijPWCKRL6Jl5gH6F0qYWFP93Oyb+9xT0xMhPf WKjw== MIME-Version: 1.0 Received: by 10.112.84.65 with SMTP id w1mr3763026lby.40.1337284737560; Thu, 17 May 2012 12:58:57 -0700 (PDT) Received: by 10.152.24.131 with HTTP; Thu, 17 May 2012 12:58:57 -0700 (PDT) In-Reply-To: References: Date: Thu, 17 May 2012 21:58:57 +0200 Message-ID: From: =?ISO-8859-1?Q?Fernando_Apestegu=EDa?= To: Chris Rees Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-ports@freebsd.org Subject: Re: On file installation X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 May 2012 19:58:59 -0000 On Tue, May 15, 2012 at 9:11 PM, Fernando Apestegu=EDa wrote: > On Tue, May 15, 2012 at 7:29 PM, Chris Rees wrote: >> On 15 May 2012 18:14, Fernando Apestegu=EDa wrote: >>> On Mon, May 14, 2012 at 7:40 PM, Fernando Apestegu=EDa >>> wrote: >>>> On Mon, May 14, 2012 at 7:31 PM, Chris Rees wrote: >>>>> On 14 May 2012 18:23, Fernando Apestegu=EDa wrote: >>>>>> Hi, >>>>>> >>>>>> I'm working on a port for an application written in Java and I'm >>>>>> having some problems deciding how to install the application. >>>>>> Previous to the installation, the WRKSRC directory contains some .ja= r >>>>>> files and some directories along with some .txt files for >>>>>> licenses, but also some .exe and .bat files _which I don't want to >>>>>> install_. It is basically a package that contains both files for >>>>>> windows and non-windows systems. >>>>>> >>>>>> I was thinking on using COPYTREE_SHARE to install everything and the= n >>>>>> remove the non necessary files, but doesn't look like >>>>>> an elegant solution. Also, I wouldn't like to explicitly specify eve= ry >>>>>> one of the files I want to copy. Is there a way of using something >>>>>> similar to bash's extglob so I can copy !(*.exe|*bat)? If not, how t= o proceed? >>>>>> >>>>>> I already looked at the existent ports to find something similar but >>>>>> it seems hard to find. I also had a look at bsd.port.mk but >>>>>> I couldn't find what I'm looking for. >>>>> >>>>> You can use find primaries with COPYTREE_SHARE such as; >>>>> >>>>> (cd ${WRKSRC}/wherever && ${COPYTREE_SHARE} \* >>>>> ${JAVALIBDIR}/${PORTNAME}/wherever "-not -name \*.exe -and -not -name >>>>> \*.bat" >>>> >>>> Thanks! I think that is what I was looking for :) >>> >>> Sorry guys, but I think I need more help :). I tried with the following= line: >>> >>> ( cd ${WRKSRC}/JDownloader && ${COPYTREE_SHARE} \* >>> ${PREFIX}/${PORTNAME}/ "! -name \*.exe" ) >>> >>> but it doesn't seem to follow primaries and it still installs the .exe >>> files. I just tried with: >>> >>> ( cd ${WRKSRC}/JDownloader && ${COPYTREE_SHARE} \* >>> ${PREFIX}/${PORTNAME}/ "! -name JDownloader.exe" ) >>> >>> and check that effectively the file is not installed so I suppose this >>> has something to do with quoting and escaping special characters (the >>> asterisk). I found the following line in audio/xmp/Makefile: >>> >>> ( cd ${WRKSRC}/docs && ${COPYTREE_SHARE} \* \ >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0${DOCSDIR} '! ( -name Makefile -or -name= xmp.1 \ >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0-or -name *.bak -or -name *.orig )' ) >>> >>> that seems pretty close to what I'm trying to do, so I tried with this: >>> >>> ( cd ${WRKSRC}/JDownloader && ${COPYTREE_SHARE} \* >>> ${PREFIX}/${PORTNAME}/ '! ( -name *.exe )' ) >>> >>> but then, the asterisk is expanded and find fails: >>> >>> find: JDownloader.exe: unknown primary or operator >>> >>> what am I doing wrong? >> >> Escape the *; >> >> (cd ${WRKSRC}/JDownloader && ${COPYTREE_SHARE} \* ${PREFIX}/${PORTNAME}/ >> =A0'! ( -name \*.exe )' ) > > That executes the following: > > (cd /usr/home/fernape/porting/jdownloader/port/work/JDownloader && > /bin/sh -c '(/usr/bin/find -d $0 $2 | /usr/bin/cpio -dumpl $1 >>/dev/null =A02>&1) && =A0/usr/sbin/chown -R root:wheel $1 && > /usr/bin/find -d $0 $2 -type d -exec chmod 755 $1/{} \; && > /usr/bin/find -d $0 $2 -type f -exec chmod 444 $1/{} \;' -- \* > /usr/local/jdownloader/ '! ( -name \*.exe )' ) > > which results in: > > $ ls /usr/local/jdownloader > > JDUpdate.exe =A0 =A0 =A0 =A0 =A0 JDownloaderBETA.exe =A0 =A0jd/ > license.txt =A0 =A0 =A0 =A0 =A0 =A0outdated.dat =A0 =A0 =A0 =A0 =A0 tools= / > windows_restore.bat > JDownloader.exe =A0 =A0 =A0 =A0JDownloaderD3D.exe =A0 =A0 jdupdate.jar > license_german.txt =A0 =A0 plugins/ =A0 =A0 =A0 =A0 =A0 =A0 =A0 version.t= xt > JDownloader.jar =A0 =A0 =A0 =A0java/ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0l= ibs/ > licenses/ =A0 =A0 =A0 =A0 =A0 =A0 =A0tmp/ =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 windows_createlog.bat > > The .exe files are still there. Sorry or my insistence :) This is what I have in my Makefile: ( cd ${WRKSRC}/JDownloader && ${COPYTREE_SHARE} \* \ ${PREFIX}/${PORTNAME} '! ( -name *.exe -or -name *.dll \ -or -name *.bat )' ) what I've observed is that 'make install' fails with this message: find: JDownloader.exe: unknown primary or operator find: JDownloader.exe: unknown primary or operator However, if I replace the expression so I filter with something like *.txt and there is only one file in the directory, it works. I checked this with audio/xmp $cat Makefile ... .if !defined(NOPORTDOCS) ${ECHO_MSG} Installing documentation in ${DOCSDIR} ( cd ${WRKSRC}/docs && ${COPYTREE_SHARE} \* \ ${DOCSDIR} '! ( -name Makefile -or -name xmp.1 \ -or -name *.bak -or -name *.orig )' ) .endif ... $ make $ ls work/xmp-3.5.0/docs/*.bak work/xmp-3.5.0/docs/xmp.1.bak Only one file (make install works fine). $ touch work/xmp-3.5.0/docs/test.bak $make install =3D=3D=3D> Installing for xmp-3.5.0,1 =3D=3D=3D> xmp-3.5.0,1 depends on file: /usr/local/bin/unzip - found =3D=3D=3D> Generating temporary packing list =3D=3D=3D> Checking if audio/xmp already installed Installing xmp in /usr/local/bin Installing xmp.conf in /usr/local/etc/xmp Installing modules.conf in /usr/local/etc/xmp Installing manpages in /usr/local/man/man1 Installation complete. To customize, copy /usr/local/etc/xmp/xmp.conf and /usr/local/etc/xmp/modules.conf to $HOME/.xmp/ Installing documentation in /usr/local/share/doc/xmp find: xmp.1.bak: unknown primary or operator chown: /usr/local/share/doc/xmp: No such file or directory *** Error code 1 Stop in /usr/ports/audio/xmp. *** Error code 1 Stop in /usr/ports/audio/xmp. Why is this? Thanks in advances > >> >> Chris