Bug 21512

Summary: cdrdao fails to build with SCGLIB
Product: Base System Reporter: BeSchmidt <BeSchmidt>
Component: miscAssignee: freebsd-ports (Nobody) <ports>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   

Description BeSchmidt 2000-09-24 06:30:01 UTC
/usr/ports/audio/cdrdao 
doesn't compile because of problems with scglib.
When you use "WITHOUT_SCGLIB=yes" it compiles fine but doesn't work.
I get something like CAM_Error: device not find ...
(but afaik it never worked without scglib so I didn't care)

The problem is that  `struct scsi_mode_page_header' is defined in 
/usr/include/cam/scsi/scsi_all.h _and_ 
/usr/ports/audio/cdrdao/work/cdrdao-1.1.3/scsilib/libscg/scg/scsireg.h.
These definitions are not identical.


It fails with the  following messages:
...

        ==> MAKING "all" ON SUBDIRECTORY "SRCROOT/lib"
gmake[2]: Entering directory `/usr/home/src/ports/audio/cdrdao/work/cdrdao-1.1.3/scsilib/
lib'
        ==> MAKING "all" ON SUBCOMPONENT "SRCROOT/lib/libschily.mk"
gmake[3]: Entering directory `/usr/home/src/ports/audio/cdrdao/work/cdrdao-1.1.3/scsilib/
lib'
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/cvmod.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/dat.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/fcons.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/fgetline.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/fileopen.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/fileread.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/filewrite.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/flag.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/flush.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/niread.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/astoi.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/comerr.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/error.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/fconv.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/fillbytes.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/format.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/getfp.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/getdomainname.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/gethostid.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/gethostname.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/getargs.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/getav0.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/geterrno.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/jsprintf.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/jssnprintf.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/jssprintf.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/movebytes.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/printf.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/raisecond.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/saveargs.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/sprintf.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/streql.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/swabbytes.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/usleep.d: No such file or directory
        ==> MAKING DIRECTORY "OBJ/i386-freebsd-cc"
        ==> MAKING DEPENDENCIES "OBJ/i386-freebsd-cc/usleep.d"
        ==> MAKING DEPENDENCIES "OBJ/i386-freebsd-cc/swabbytes.d"
        ==> MAKING DEPENDENCIES "OBJ/i386-freebsd-cc/streql.d"
...
        ==> MAKING "all" ON SUBDIRECTORY "SRCROOT/libscg"
gmake[2]: Entering directory `/usr/home/src/ports/audio/cdrdao/work/cdrdao-1.1.3/scsilib/
libscg'
        ==> MAKING "all" ON SUBCOMPONENT "SRCROOT/libscg/libscg.mk"
gmake[3]: Entering directory `/usr/home/src/ports/audio/cdrdao/work/cdrdao-1.1.3/scsilib/
libscg'
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/scsitransp.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/scsiopen.d: No such file or directory
../RULES/r-gmake.dep:76: OBJ/i386-freebsd-cc/scsierrs.d: No such file or directory
        ==> MAKING DIRECTORY "OBJ/i386-freebsd-cc"
        ==> MAKING DEPENDENCIES "OBJ/i386-freebsd-cc/scsierrs.d"
        ==> MAKING DEPENDENCIES "OBJ/i386-freebsd-cc/scsiopen.d"
        ==> MAKING DEPENDENCIES "OBJ/i386-freebsd-cc/scsitransp.d"
gmake[3]: Leaving directory `/usr/home/src/ports/audio/cdrdao/work/cdrdao-1.1.3/scsilib/l
ibscg'
gmake[3]: Entering directory `/usr/home/src/ports/audio/cdrdao/work/cdrdao-1.1.3/scsilib/
libscg'
        ==> COMPILING "OBJ/i386-freebsd-cc/scsitransp.o"
In file included from /usr/include/cam/cam_ccb.h:41,
                 from scsi-bsd.c:477,
                 from scsihack.c:58,
                 from scsitransp.c:144:
/usr/include/cam/scsi/scsi_all.h:681: redefinition of `struct scsi_mode_page_header'
gmake[3]: *** [OBJ/i386-freebsd-cc/scsitransp.o] Error 1
gmake[3]: Leaving directory `/usr/home/src/ports/audio/cdrdao/work/cdrdao-1.1.3/scsilib/l
ibscg'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/usr/home/src/ports/audio/cdrdao/work/cdrdao-1.1.3/scsilib/l
ibscg'
        ==> MAKING "all" ON SUBDIRECTORY "SRCROOT/export"
gmake[2]: Entering directory `/usr/home/src/ports/audio/cdrdao/work/cdrdao-1.1.3/scsilib/
export'
...
ranlib libdao.a
c++  -o cdrdao main.o -L. -ldao -L../paranoia -lcdda_paranoia -L../trackdb -ltrackdb -L..
/edc_ecc -ledc_ecc -L../scsilib/export -lscg -lschily -lcam
/usr/libexec/elf/ld: cannot find -lscg
gmake[1]: *** [cdrdao] Error 1
gmake[1]: Leaving directory `/usr/home/src/ports/audio/cdrdao/work/cdrdao-1.1.3/dao'
gmake: *** [all] Error 1
*** Error code 2

Stop in /usr/home/src/ports/audio/cdrdao.
*** Error code 1

Stop in /usr/home/src/ports/audio/cdrdao.
*** Error code 1

Stop in /usr/home/src/ports/audio/cdrdao.

Fix: 

I have fixed the problem by commenting out the struct definition for
`struct scsi_mode_page_header' on line 681
in /usr/include/cam/scsi/scsi_all.h before compiling cdrdao and 
restoring this file after the succesfull compilation.
This no real fix just my way to get it to compile. I think libscg 
should be changed so that there are no
How-To-Repeat: cd /usr/ports/audio/cdrdao; make install
Comment 1 Mike Heffner freebsd_committer freebsd_triage 2001-06-29 04:29:20 UTC
State Changed
From-To: open->feedback

Is this still a problem with the upgrade of cdrdao to 1.1.5? 


Comment 2 Mike Heffner freebsd_committer freebsd_triage 2001-06-29 04:29:20 UTC
Responsible Changed
From-To: freebsd-bugs->freebsd-ports

This is more of a ports issue.
Comment 3 Mike Heffner freebsd_committer freebsd_triage 2001-06-30 00:02:25 UTC
State Changed
From-To: feedback->		 closed

Submitter reports problem fixed by ports upgrade.