--- gendepends.awk.orig 2004-04-05 22:19:02.000000000 +0100 +++ gendepends.awk 2004-04-05 22:18:46.000000000 +0100 @@ -82,17 +82,27 @@ if (check_provide(provide)) { # We cannot have more than one service Providing a virtual ... - ewarn(" Service '" get_provide(provide) "' already provide '" provide "'!;") - ewarn(" Not adding service '" service "'...") - # Do not fail here as we do have a service that resolves the virtual - } else { - # Sanity check - if (check_service(service)) { - PROVIDE_LIST[provide] = service - } else { - eerror(" Cannot add provide '" provide "', as service '" service "' do not exist!") - return 0 + # However we can let the user choose by setting RC_VIRTUAL_PREFERENCE + if ( VIRTPREFAR[provide] == "" ) { + ewarn(" Service '" get_provide(provide) "' already provide '" provide "'!;") + ewarn(" Not adding service '" service "'...") + ewarn(" To set which service you would prefer to provide '" provide "' please set") + ewarn(" RC_VIRTUAL_PREFERENCE in /etc/conf.d/rc") + # Do not fail here as we do have a service that resolves the virtual + return 1 + } else if ( VIRTPREFAR[provide] != service ) { + # return without changing provide + return 1 } + # Looks like this is the users preference so fall through and change + # the provide + } + # Sanity check + if (check_service(service)) { + PROVIDE_LIST[provide] = service + } else { + eerror(" Cannot add provide '" provide "', as service '" service "' do not exist!") + return 0 } return 1 @@ -334,6 +344,18 @@ DEPTYPES = ENVIRON["DEPTYPES"] ORDTYPES = ENVIRON["ORDTYPES"] + # Preferences for conflicting virtual provides + VIRTPREF = ENVIRON["VIRTPREF"] + if (VIRTPREF != "") { + split(VIRTPREF, vpsplit) + for (vp in vpsplit) { + split(vpsplit[vp], vps, ":") + if (vps[1] != "" && vps[2] != ""){ + VIRTPREFAR[vps[1]]=vps[2] + } + } + } + CACHEDTREE = SVCDIR "/deptree" assert(dosystem("rm -f " CACHEDTREE ), "system(rm -f " CACHEDTREE ")")