From 86569a91ef317282348af24819f272d58362a677 Mon Sep 17 00:00:00 2001
From: blundellc <blundellc@edb9625f-4e0d-4859-8d74-9fd3b1da38cb>
Date: Sat, 13 Sep 2008 13:22:51 +0000
Subject: [PATCH] depends: don't fail prematurely on unavailable packages

git-svn-id: svn://svn.r-forge.r-project.org/svnroot/cran2deb@94 edb9625f-4e0d-4859-8d74-9fd3b1da38cb
---
 pkg/trunk/R/debiannaming.R | 11 +++++++----
 pkg/trunk/R/rdep.R         | 17 +++++++++--------
 2 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/pkg/trunk/R/debiannaming.R b/pkg/trunk/R/debiannaming.R
index ab5741b..2af857b 100644
--- a/pkg/trunk/R/debiannaming.R
+++ b/pkg/trunk/R/debiannaming.R
@@ -30,14 +30,17 @@ pkgname_as_debian <- function(name,repopref=NULL,version=NULL,binary=T,build=F)
         #      now.
         if (!(name %in% rownames(available))) {
             bundle <- r_bundle_of(name)
-            if (is.na(bundle)) {
-                fail('package',name,'is not available')
+            if (!is.na(bundle)) {
+                name <- bundle
             }
-            name <- bundle
         }
         debname = tolower(name)
         if (binary) {
-            repopref <- tolower(repourl_as_debian(available[name,'Repository']))
+            if (name %in% rownames(available)) {
+                repopref <- tolower(repourl_as_debian(available[name,'Repository']))
+            } else if (is.null(repopref)) {
+                repopref <- 'unknown'
+            }
             debname = paste('r',repopref,debname,sep='-')
         }
     }
diff --git a/pkg/trunk/R/rdep.R b/pkg/trunk/R/rdep.R
index c29f62c..87ef168 100644
--- a/pkg/trunk/R/rdep.R
+++ b/pkg/trunk/R/rdep.R
@@ -19,13 +19,12 @@ r_requiring <- function(names) {
     for (name in names) {
         if (!(name %in% base_pkgs) && !(name %in% rownames(available))) {
             bundle <- r_bundle_of(name)
-            if (is.na(bundle)) {
-                fail('package',name,'is not available')
+            if (!is.na(bundle)) {
+                name = bundle
+                names <- c(names,bundle)
             }
-            name = bundle
-            names <- c(names,bundle)
         }
-        if (!is.na(available[name,'Contains'])) {
+        if (name %in% rownames(available) && !is.na(available[name,'Contains'])) {
             names <- c(names,r_bundle_contains(name))
         }
     }
@@ -69,10 +68,12 @@ r_dependencies_of <- function(name=NULL,description=NULL) {
     if (is.null(description)) {
         if (!(name %in% rownames(available))) {
             bundle <- r_bundle_of(name)
-            if (is.na(bundle)) {
-                fail('package',name,'is not available')
+            if (!is.na(bundle)) {
+                name <- bundle
+            } else {
+                # unavailable packages don't depend upon anything
+                return(data.frame())
             }
-            name <- bundle
         }
         description <- data.frame()
         # keep only the interesting fields
-- 
2.39.5