Date: Sat, 24 Jan 2004 18:03:25 +0100 From: Heiner <h.eichmann@gmx.de> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/61840: Port sysutils/cdrdao might corrupt package database Message-ID: <200401241803.25218.h.eichmann@gmx.de> Resent-Message-ID: <200401241710.i0OHAHMs005863@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 61840 >Category: ports >Synopsis: Port sysutils/cdrdao might corrupt package database >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sat Jan 24 09:10:17 PST 2004 >Closed-Date: >Last-Modified: >Originator: Heiner Eichmann <h.eichmann@gmx.de> >Release: FreeBSD 4.9-STABLE i386 >Organization: Sirius Cybernetics Corp. >Environment: =46reeBSD 7of9.unimatrix-zero.borg 4.9-STABLE FreeBSD 4.9-STABLE #0: Tue De= c 30=20 09:19:53 CET 2003 =A0 =A0=20 root@7of9.unimatrix-zero.borg:/usr/obj/usr/src/sys/MYKERNEL =A0i386 >Description: The port cdrdao might corrupt the package database. See How-To-Repeat secti= on.=20 The reason is the dynamic calculation of the dependencies. If gnomelibs is= =20 not installed during installation of cdrdao but installed lateron, all port= s=20 depending on cdrdao also depend on gnome--, which is not necessarily=20 installed! >How-To-Repeat: 1. Make sure, that pkgdb -F reports no error. 2. pkg_deinstall -f the ports gnomelibs, cdrdao, gnome-- and k3b, if they a= re=20 installed. 3. portinstall gnomelibs, cdrdao and k3b in this order. Note that gnome-- i= s=20 installed automatically by cdrdao. 4. pkgdb -F reports no error. Everything is fine. 5. repeat step 2 6. portinstall cdrdao, gnomelibs and k3b in this order. Note that gnome-- i= s=20 NOT installed automatically by cdrdao 7. pkgdb -F reports a missing dependency (k3b -> gnome--). The package=20 database is corrupt! >Fix: There are two obvious fixes: 1. Follow the instructions in http://www.freebsd.org/gnome/docs/porting.htm= l.=20 Note, that the example of dynamic dependencies =2Eif ${HAVE_GNOME:Mgnomepanel}!=3D"" USE_GNOME+=3D gnomeprefix gnomepanel CONFIGURE_ARGS+=3D --with-gnome PKGNAMESUFFIX=3D -gnome PLIST_SUB=3D DATADIR=3D"share/gnome" =2Eelse CONFIGURE_ARGS+=3D --without-gnome PLIST_SUB=3D DATADIR=3D"share" =2Eendif does NOT contain any LIB_DEPENDS!! The current Makefile of cdrdao contains = two=20 of them: =2Eif ${HAVE_GNOME:Mgnomelibs} !=3D "" USE_GNOME=3D gnomelibs LIB_DEPENDS+=3D gtkmm.2:${PORTSDIR}/x11-toolkits/gtk-- LIB_DEPENDS+=3D gnomemm-1.2.10:${PORTSDIR}/x11-toolkits/gnome-- CONFIGURE_ARGS=3D --with-gtkmm-prefix=3D${X11BASE} PKGNAMESUFFIX?=3D -gnome PLIST_SUB=3D GNOME=3D"" MAN1+=3D gcdmaster.1 =2Eelse CONFIGURE_ARGS=3D --with-gtkmm-prefix=3D${NONEXISTENT} PLIST_SUB=3D GNOME=3D"@comment " _WITHOUT_GNOME=3D yes =2Eendif They cause the problem. Converting them into USE_GNOME requires a change of= =20 bsd.gnome.mk as well but fixes the problem 2. A better fix is to follow the cvsup example. Here two ports exist (cvsup= =20 and cvsup-withoutgui), where the second points to the first. On cdrdao I=20 recommend to create a port cdrdao, which depends on the gnome stuff only, i= f=20 the environment variable WITH_GNOME is set. A second port cdrdao-gnome sets= =20 it and points to cdrdao. Then all dependending ports, which do not need gui= =20 stuff, point to cdrdao and the user can decide, which one he needs. >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200401241803.25218.h.eichmann>