While prcs 1.3.3 builds fine (apparently) on my Fedora
2 Opteron machine (Linux dgk5.chem.utoronto.ca
2.6.5-1.358smp #1 SMP Sat May 8 09:28:14 EDT 2004
x86_64 x86_64 x86_64 GNU/Linux), it doesn't work.
It does not respond at all to commands other than the
--help. Even trying things like "prcs config" does not
get any output. I tried to read an existing
repository, but it doesn't do anything. It did manage
to create an empty new .prj file for a new project, and
to populate it with the set of files in the directory.
However, when I try to checkin the new project, it
apparently proceeds, creating files in the repository,
but it hangs and never updates the .prj file.
I have tried it on local files and on nfs-mounted file
systems, with the same results.
Dr. Daniel Gruner
dgruner@tikva.chem.utoronto.ca
Dept. of Chemistry
daniel.gruner@utoronto.ca
University of Toronto phone:
(416)-978-8689
80 St. George Street fax:
(416)-978-5325
Toronto, ON M5S 3H6, Canada finger for PGP
public key
Logged In: NO
Here are some warnings from the build:
source='hash.cc' object='hash.o' libtool=no \ depfile='.deps/hash.Po' tmpdepfile='.deps/hash.TPo' \ depmode=gcc3 /bin/sh ../depcomp \ g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./include -g -Wall -c
-o hash.o `test -f 'hash.cc' || echo './'`hash.cc
hash.cc: In function `int hash(FileEntry* const&, int)':
hash.cc:147: warning: cast from pointer to integer of
different size
hash.cc: At top level:
hash.cc:126: warning: `int hash(const long long int&, int)'
defined but not
used
hash.cc:131: warning: `int hash(const long long unsigned
int&, int)' defined
but not used
source='md5c.c' object='md5c.o' libtool=no \ depfile='.deps/md5c.Po' tmpdepfile='.deps/md5c.TPo' \ depmode=gcc3 /bin/sh ../depcomp \ gcc -DHAVE_CONFIG_H -I. -I. -I.. -I./include -g -c `test
-f 'md5c.c' || echo './'`md5c.c
md5c.c: In function `MD5Update':
md5c.c:145: warning: passing arg 2 of `MD5Transform'
discards qualifiers from pointer target type
Also, configure says:
checking build system type... x86_64-unknown-linux
checking host system type... x86_64-unknown-linux
Logged In: NO
Here are some warnings from the build:
source='hash.cc' object='hash.o' libtool=no \ depfile='.deps/hash.Po' tmpdepfile='.deps/hash.TPo' \ depmode=gcc3 /bin/sh ../depcomp \ g++ -DHAVE_CONFIG_H -I. -I. -I.. -I./include -g -Wall -c
-o hash.o `test -f 'hash.cc' || echo './'`hash.cc
hash.cc: In function `int hash(FileEntry* const&, int)':
hash.cc:147: warning: cast from pointer to integer of
different size
hash.cc: At top level:
hash.cc:126: warning: `int hash(const long long int&, int)'
defined but not
used
hash.cc:131: warning: `int hash(const long long unsigned
int&, int)' defined
but not used
source='md5c.c' object='md5c.o' libtool=no \ depfile='.deps/md5c.Po' tmpdepfile='.deps/md5c.TPo' \ depmode=gcc3 /bin/sh ../depcomp \ gcc -DHAVE_CONFIG_H -I. -I. -I.. -I./include -g -c `test
-f 'md5c.c' || echo './'`md5c.c
md5c.c: In function `MD5Update':
md5c.c:145: warning: passing arg 2 of `MD5Transform'
discards qualifiers from pointer target type
Also, configure says:
checking build system type... x86_64-unknown-linux
checking host system type... x86_64-unknown-linux
Logged In: NO
Further to my comments and bug report, prcs 1.3.3 builds
properly and works on the x86_64 machine if it is done in
32-bit mode (i.e. compiling with -m32).
In other words, prcs does not seem to be 64-bit clean.
I can confirm that this problem happens for the old Debian prcs_1.3.3-8_amd64.deb and Ubuntu prcs_1.3.3-9_amd64.deb packages when installed on a recent Debian testing system. I'm guessing most people stopped using prcs before amd64 architectures were widespread, so maybe these never worked and no-one noticed.
I've done a fair bit of work updating the Debian package, but even recompiled binaries for amd64 have the same problem. I've not yet had success trying to compile it for 32bit mode.
Most commands have no output, even "prcs -v". Only "prcs help" gives output. Looking at the code I can see that most output uses "prcsoutput << ...", but the help output uses the more normal "cout << ...". The prcsoutput stream is an instance of PrettyOstream, which is a subclass of ostream. In an attempt to understand this code I Googled around a bit and found plenty of ominous warnings about trying to subclass ostream.
At that point I remembered how ugly C++ is and gave up.