ports/61840: Port sysutils/cdrdao might corrupt package database

Heiner h.eichmann at gmx.de
Sat Jan 24 17:10:20 UTC 2004


>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 at 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 at 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:



More information about the freebsd-ports-bugs mailing list