Trolltech Home | Qt-interest Home | Recent Threads | All Threads | Author | Date
All threads index page 1

Qt-interest Archive, July 2007
Re: qmake and cp command


Message 1 in thread

On 6/30/07, Tommy Nordgren <tommy.nordgren@xxxxxxxxx> wrote:
>
> On 30 jun 2007, at 20.28, Michael Rice wrote:
>
> > If you look in the qmake source code, you'll see the unix makefile
> > generator inserts:
> >
> > "$(COPY_FILE) --parents"
> >
> > However, this shouldn't be a problem on a Mac platform. Make sure
> > your QMAKESPEC is set to either macx-g++ or macx-xcode.
> >
> > Michael
>         This don't work.
>         macx-xcode generates a xcode project, which lacks a dist target.
>         macx-g++ generates a makefile that used the parameter --parents in
> the cp command in make dist.

Seconded. I just compiled fresh versions of 4.2.3 and 4.3.0 on my Mac
(10.4.10) today, and the Makefiles they generate contain "cp
--parents". Definitely looks like a Qt bug.

--
 [ signature omitted ] 

Message 2 in thread

Hi,

> Anyway, qmake only uses this option when generating unix makefile's, so
> this shouldn't happen on MacOSX when using the proper mkspecs.

I think qmake is considered as Unix in this context. Besides most Unix "cp" 
commands don't know about "--parents" since this seems to be specific to GNU's 
"cp". Now this "--parents" option seems to have been present for a very long 
time in qmake, I'm surprised the problem surfaces only now.

How to reproduce the problem? In which context is "cp --parents" called?

--
 [ signature omitted ] 

Message 3 in thread

On 7/1/07, Dimitri <dimitri@xxxxxxxxxxxxx> wrote:
> Hi,
>
> > Anyway, qmake only uses this option when generating unix makefile's, so
> > this shouldn't happen on MacOSX when using the proper mkspecs.
>
> I think qmake is considered as Unix in this context. Besides most Unix "cp"
> commands don't know about "--parents" since this seems to be specific to GNU's
> "cp". Now this "--parents" option seems to have been present for a very long
> time in qmake, I'm surprised the problem surfaces only now.
>
> How to reproduce the problem? In which context is "cp --parents" called?

"cp --parents" is called in the "dist" target of the Makefile.

To reproduce:

$ uname -a
Darwin localhost 8.10.1 Darwin Kernel Version 8.10.1: Wed May 23
16:33:00 PDT 2007; root:xnu-792.22.5~1/RELEASE_I386 i386 i386
$ qmake -version
QMake version 2.01a
Using Qt version 4.3.0 in /usr/local/Trolltech/Qt-4.3.0/lib
$ mkdir test
$ cd test
$ touch main.cpp
$ qmake -project
$ qmake
$ grep parents Makefile
   $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/test1.0.0/ &&
$(COPY_FILE) --parents main.cpp .tmp/test1.0.0/ && (cd `dirname
.tmp/test1.0.0` && $(TAR) test1.0.0.tar test1.0.0 && $(COMPRESS)
test1.0.0.tar) && $(MOVE) `dirname .tmp/test1.0.0`/test1.0.0.tar.gz .
&& $(DEL_FILE) -r .tmp/test1.0.0

-- 
 [ signature omitted ] 

Message 4 in thread

Hi,

> "cp --parents" is called in the "dist" target of the Makefile.

OK, so you're running "make dist". It looks like "dist" has been written for 
or tested on Linux only. I suggest reporting this issue here since I don't 
know what the "dist" target was designed for:
	http://trolltech.com/bugreport-form

--
 [ signature omitted ] 

Message 5 in thread

On Sunday 01 July 2007 18:31:22 Dimitri wrote:
> > "cp --parents" is called in the "dist" target of the Makefile.
>
> OK, so you're running "make dist". It looks like "dist" has been written
> for or tested on Linux only. I suggest reporting this issue here since I
> don't know what the "dist" target was designed for:

make dist is supposed to make a tarball, suitable for distribution. I havn't 
seen one of these for a long time, but maybe they are still common in the 
MacOS world. Or maybe I just don't see them because I mainly move in the KDE 
world. Anyone, I believe that the target is automatically available in 
Automake, but not in e.g. in cmake. 

Not really my area of expertise though. 

-- 
 [ signature omitted ] 

Message 6 in thread

On 1 jul 2007, at 18.31, Dimitri wrote:

> Hi,
>
>> "cp --parents" is called in the "dist" target of the Makefile.
>
> OK, so you're running "make dist". It looks like "dist" has been  
> written for or tested on Linux only. I suggest reporting this issue  
> here since I don't know what the "dist" target was designed for:
> 	http://trolltech.com/bugreport-form
>
> --
> Dimitri
>
	The make dist target is a standard target for generating a source  
code archive for distribution. It is not possible to just remove
the --parents option to fix this problem. Two users on the Mac OS X  
Unix porting list, were able to tell me what the --parents option
does.
	given the command : cp --parents a/long/file/name adirectory
The option will copy the file to the path name adirectory/a/long/file/ 
name
Creating any directories that don't appear in the path.
I'm including with this message a perl script to do this for unixes  
whose cp don't have the --parents option

Attachment: bin.tar.gz
Description: GNU Zip compressed data

The script can be used as follows:
DISTFILES += bin/copyfile

MyHome = $$system(pwd)

QMAKE_COPY_FILE = $$MyHome/bin/copyfile -f


------
What is a woman that you forsake her, and the hearth fire and the  
home acre,
to go with the old grey Widow Maker.  --Kipling, harp song of the  
Dane women
Tommy Nordgren
tommy.nordgren@xxxxxxxxx




Message 7 in thread

Hi,

>     The make dist target is a standard target for generating a source 
> code archive for distribution. It is not possible to just remove
> the --parents option to fix this problem. Two users on the Mac OS X Unix 
> porting list, were able to tell me what the --parents option
> does.

I don't follow you. If "--parents" is not available on some platform it *will* 
be removed, won't it?

--
 [ signature omitted ]