Bug 70445 - Circulare dep between "vcdimager" and "libcdio"
Bug#: 70445 Product:  Gentoo Linux Version: unspecified Platform: All
OS/Version: All Status: RESOLVED Severity: enhancement Priority: P2
Resolution: FIXED Assigned To: media-video@gentoo.org Reported By: motaboy@gentoo.org
Component: Ebuilds
URL: 
Summary: Circulare dep between "vcdimager" and "libcdio"
Keywords:  
Status Whiteboard: 
Opened: 2004-11-08 03:13 0000
Description:   Opened: 2004-11-08 03:13 0000
kiso-0.7 needs libcdio-0.70. So I made a new ebuild for this.

The problem that I've encountered is that it wants to link against the already installed libcdio libs. This is wrong and also gives errors becuase, from this version, libcdio is no more compatible with the old ones, (now it's called libcdio.so.2.0 instead of so.1.0).

I've fixed libtool running "elibtoolize --reverse-deps".

For this reason some programs like 'vcdimager' needs to be rebuilt, revdep-rebuild work and all the program I've rebuilt, compiled and worked well with this version too.

I hope this is right, please take a look at the attached ebuild.

------- Comment #1 From Simone Gotti (RETIRED) 2004-11-08 03:14:40 0000 -------
Created an attachment (id=43524) [details]
libcdio-0.70.ebuild

------- Comment #2 From Chris White (RETIRED) 2004-11-11 13:03:55 0000 -------
Helped if I change this bug.  Fixed and in portage :Ps

------- Comment #3 From Lars Wendler (Polynomial-C) 2004-11-12 21:10:13 0000 -------
Hi,

I was only able to install libcdio once. After installation revdep-rebuild claimed to rebuild libcdio due to missing libiso9660.so.0:

  broken /usr/bin/cd-info (requires libiso9660.so.0 libiso9660.so.0)

but rebuilding fails with this:

/bin/sh ../libtool --mode=link i686-pc-linux-gnu-gcc  -march=athlon-xp -mcpu=athlon-xp -O3-pipe -Wall -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -Wunused -Wpointer-arith -Wwrite-strings -Wnested-externs -Wno-sign-compare   -o cd-info  cd-info.o util.o ../lib/libiso9660.la ../lib/libcdio.la -lpopt  -lvcdinfo -lvcd -liso9660 -lcdio -lm   -lm
i686-pc-linux-gnu-gcc -march=athlon-xp -mcpu=athlon-xp -O3 -pipe -Wall -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -Wunused -Wpointer-arith -Wwrite-strings -Wnested-externs -Wno-sign-compare -o .libs/cd-info cd-info.o util.o  /usr/lib/libpopt.so /usr/lib/libvcdinfo.so /usr/lib/libvcd.so ../lib/.libs/libiso9660.so ../lib/.libs/libcdio.so -lm
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/../../../../i686-pc-linux-gnu/bin/ld: warning: libiso9660.so.0, needed by /usr/lib/libvcdinfo.so, not found (try using -rpath or -rpath-link)
/usr/lib/libvcd.so: undefined reference to `iso9660_dir_init_new_su@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_pathtable_l_add_entry@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_dir_calc_record_size@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_pathtable_get_size@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_pathtable_init@ISO9660_0'
/usr/lib/libvcdinfo.so: undefined reference to `iso9660_fs_stat@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_pathtable_m_add_entry@ISO9660_0'
/usr/lib/libvcdinfo.so: undefined reference to `iso9660_find_fs_lsn@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_pathname_valid_p@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_set_evd@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_strncpy_pad@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_set_pvd@ISO9660_0'
/usr/lib/libvcdinfo.so: undefined reference to `iso9660_fs_readdir@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_dirname_valid_p@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_xa_init@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_dir_add_entry_su@ISO9660_0'
/usr/lib/libvcd.so: undefined reference to `iso9660_pathname_isofy@ISO9660_0'
collect2: ld returned 1 exit status
make[2]: *** [cd-info] Error 1
make[2]: Leaving directory `/home/portage/tmp/portage/libcdio-0.70/work/libcdio-0.70/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/portage/tmp/portage/libcdio-0.70/work/libcdio-0.70'
make: *** [all] Error 2

please reopen

Poly

------- Comment #4 From Simone Gotti (RETIRED) 2004-11-13 02:03:30 0000 -------
I think that the problem is a sort of ciclycal deps between "vcdimager" and
"libcdio" as if you look in the configure og libcdio you'll see:

checking for libvcdinfo >= 0.7.20... yes
checking VCDINFO_CFLAGS...
checking VCDINFO_LIBS... -lvcdinfo -lvcd -liso9660 -lcdio -lm

so looks like libcdio searches for vcdimager, and at the same time we have to
vcdimager needs libiso9660 that is provided by libcdio.

So there are 2 problems:

1) libcdio ebuild doesn't have vcdimager in DEPEND. 
2) this is a cyclical dep and the unique solution I can see to avoid it is to
disable the vcdimager needs in libcdio with the configure flags:
--disable-vcd-info 

media-video herd: any thoughts?

Lars: Thanks for reporting this.
If you want to fix it now you can try removing (emerge -C) libcdio and
vcdimager and them reemerging them.

------- Comment #5 From Lars Wendler (Polynomial-C) 2004-11-13 13:14:11 0000 -------
Hi,

Simone removing licdio and vcdimager and remerge helped. revdep only complained about xine-lib but I'm gonna rebuild this right now.

Poly

------- Comment #6 From butters@opengames.net 2004-11-18 10:25:19 0000 -------
I had this problem just now.  After looking at this bug I remerged vcdimager
then libcdio and it merged cleanly.

------- Comment #7 From William Pearson 2004-11-22 18:43:02 0000 -------
Also having trouble building libcdio after emerge -C libcdio vcdimager.
Following error occurs, I tuned down my cflags and the build is still crapping
out in the same place. 

creating cd-drive
if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../lib/
-I../include/       -march=athlon-xp -O2 -Wall -Wchar-subscripts
-Wmissing-prototypes -Wmissing-declarations -Wunused -Wpointer-arith
-Wwrite-strings -Wnested-externs -Wno-sign-compare -MT cd-info.o -MD -MP -MF
".deps/cd-info.Tpo" -c -o cd-info.o cd-info.c; \
then mv -f ".deps/cd-info.Tpo" ".deps/cd-info.Po"; else rm -f
".deps/cd-info.Tpo"; exit 1; fi
cd-info.c: In function `init':
cd-info.c:808: warning: passing arg 1 of `cddb_log_set_handler' from
incompatible pointer type
/bin/sh ../libtool --mode=link i686-pc-linux-gnu-gcc  -march=athlon-xp -O2
-Wall -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -Wunused
-Wpointer-arith -Wwrite-strings -Wnested-externs -Wno-sign-compare  -Wl,-O1
-Wl,--enable-new-dtags -Wl,--sort-common -s -o cd-info  cd-info.o util.o
../lib/libiso9660.la ../lib/libcdio.la -lpopt -lcddb    -lm
i686-pc-linux-gnu-gcc -march=athlon-xp -O2 -Wall -Wchar-subscripts
-Wmissing-prototypes -Wmissing-declarations -Wunused -Wpointer-arith
-Wwrite-strings -Wnested-externs -Wno-sign-compare -Wl,-O1
-Wl,--enable-new-dtags -Wl,--sort-common -s -o .libs/cd-info cd-info.o util.o 
../lib/.libs/libiso9660.so ../lib/.libs/libcdio.so /usr/lib/libpopt.so
/usr/lib/libcddb.so -lm
i686-pc-linux-gnu-gcc: /usr/lib/libcddb.so: No such file or directory
make[2]: *** [cd-info] Error 1
make[2]: Leaving directory
`/var/tmp/portage/libcdio-0.70/work/libcdio-0.70/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/libcdio-0.70/work/libcdio-0.70'
make: *** [all] Error 2

!!! ERROR: dev-libs/libcdio-0.70 failed.
!!! Function src_compile, Line 25, Exitcode 2
!!! (no error message)
!!! If you need support, post the topmost build error, NOT this status message.

Not sure if I should have opened a new bug or not, I hope it fits here.

------- Comment #8 From William Pearson 2004-11-22 20:00:39 0000 -------
I figured out the problem, for some reason I had to rebuild libcddb in order to
build libcdio. I had libcddb installed but for some reason some of the
necessary libraries were missing.

------- Comment #9 From Jan Brinkmann (RETIRED) 2005-01-27 13:07:55 0000 -------
since your problems are fixed i'm closing this one, feel free to reopen if i'm
taking things wrong.

------- Comment #10 From Simone Gotti (RETIRED) 2005-01-28 17:05:31 0000 -------
The bug is in comment #4 and it's not fixed as it's a circular dep. Changing
the bug's title.

------- Comment #11 From Jan Brinkmann (RETIRED) 2005-01-28 17:23:51 0000 -------
i'm sorry, actually it seems that i had taken things wrong. ;) ok, i think your
suggestion if proberbly the best possibility. i've removed the circular dep
with --disable-vcd-info .