jiri: base profile should report dependent packages of dependent profiles.

The base profile installs both the syncbase and go profiles.  However,
when asking the base profile what packages it requires (jiri profile
os-packages -all v23:base), it does not show the packages that syncbase
and go profiles need.

This CL makes base profile's OSPackages request the dependent packages
of all dependent profiles, and returns them along with its own deps.

Change-Id: If42308dd8774ee7746f0f7812a3e59f6d771359e
diff --git a/jiri-profile-v23/base_profile/base.go b/jiri-profile-v23/base_profile/base.go
index 0c3de5c..6d98391 100644
--- a/jiri-profile-v23/base_profile/base.go
+++ b/jiri-profile-v23/base_profile/base.go
@@ -83,11 +83,28 @@
 }
 
 func (m *Manager) OSPackages(jirix *jiri.X, pdb *profiles.DB, root jiri.RelPath, target profiles.Target) ([]string, error) {
+	if err := m.versionInfo.Lookup(target.Version(), &m.spec); err != nil {
+		return nil, err
+	}
+	var packages []string
 	if !target.CrossCompiling() && target.OS() == "linux" && (target.Version() == "1" || target.Version() == "2" || target.Version() == "3" || target.Version() == "4") {
 		// Version 5 onwards uses go 1.6+, where there is no need for "libssl-dev".
-		return []string{"libssl-dev"}, nil
+		packages = []string{"libssl-dev"}
 	}
-	return nil, nil
+	// Get packages from dependent profiles.
+	for _, profile := range m.spec.dependencies {
+		qname := profiles.QualifiedProfileName(m.profileInstaller, profile.name)
+		depManager := profilesmanager.LookupManager(qname)
+		if depManager == nil {
+			return nil, fmt.Errorf("no manager found for dependent profile %v", profile.name)
+		}
+		depPackages, err := depManager.OSPackages(jirix, pdb, root, target)
+		if err != nil {
+			return nil, err
+		}
+		packages = append(packages, depPackages...)
+	}
+	return packages, nil
 }
 
 func (m *Manager) Install(jirix *jiri.X, pdb *profiles.DB, root jiri.RelPath, target profiles.Target) error {
diff --git a/jiri-profile-v23/go_profile/go.go b/jiri-profile-v23/go_profile/go.go
index 3d70135..9cc20b4 100644
--- a/jiri-profile-v23/go_profile/go.go
+++ b/jiri-profile-v23/go_profile/go.go
@@ -106,9 +106,6 @@
 }
 
 func (m *Manager) OSPackages(jirix *jiri.X, pdb *profiles.DB, root jiri.RelPath, target profiles.Target) ([]string, error) {
-	t := osPackages[xspec{"foo", "bar"}][xspec{"baz", "boo"}]
-	t = osPackages[xspec{runtime.GOARCH, runtime.GOOS}][xspec{"baz", "boo"}]
-	_ = t
 	return osPackages[xspec{runtime.GOARCH, runtime.GOOS}][xspec{target.Arch(), target.OS()}], nil
 }