Browse code

Move get_packages() to functions.

This is a prerequisite to fixing the tools/build_uec* scripts to properly
install prereq packages.

Change-Id: I1c60f7b9a9d07076841d9aff524c0833dc987c66

Dean Troyer authored on 2012/06/15 05:23:24
Showing 2 changed files
... ...
@@ -73,6 +73,91 @@ function get_field() {
73 73
 }
74 74
 
75 75
 
76
+# get_packages() collects a list of package names of any type from the
77
+# prerequisite files in ``files/{apts|pips}``.  The list is intended
78
+# to be passed to a package installer such as apt or pip.
79
+#
80
+# Only packages required for the services in ENABLED_SERVICES will be
81
+# included.  Two bits of metadata are recognized in the prerequisite files:
82
+# - ``# NOPRIME`` defers installation to be performed later in stack.sh
83
+# - ``# dist:DISTRO`` or ``dist:DISTRO1,DISTRO2`` limits the selection
84
+#   of the package to the distros listed.  The distro names are case insensitive.
85
+#
86
+# get_packages dir
87
+function get_packages() {
88
+    local package_dir=$1
89
+    local file_to_parse
90
+    local service
91
+
92
+    if [[ -z "$package_dir" ]]; then
93
+        echo "No package directory supplied"
94
+        return 1
95
+    fi
96
+    if [[ -z "$DISTRO" ]]; then
97
+        echo "No distro set in DISTRO"
98
+        return 1
99
+    fi
100
+    for service in general ${ENABLED_SERVICES//,/ }; do
101
+        # Allow individual services to specify dependencies
102
+        if [[ -e ${package_dir}/${service} ]]; then
103
+            file_to_parse="${file_to_parse} $service"
104
+        fi
105
+        # NOTE(sdague) n-api needs glance for now because that's where
106
+        # glance client is
107
+        if [[ $service == n-api ]]; then
108
+            if [[ ! $file_to_parse =~ nova ]]; then
109
+                file_to_parse="${file_to_parse} nova"
110
+            fi
111
+            if [[ ! $file_to_parse =~ glance ]]; then
112
+                file_to_parse="${file_to_parse} glance"
113
+            fi
114
+        elif [[ $service == c-* ]]; then
115
+            if [[ ! $file_to_parse =~ cinder ]]; then
116
+                file_to_parse="${file_to_parse} cinder"
117
+            fi
118
+        elif [[ $service == n-* ]]; then
119
+            if [[ ! $file_to_parse =~ nova ]]; then
120
+                file_to_parse="${file_to_parse} nova"
121
+            fi
122
+        elif [[ $service == g-* ]]; then
123
+            if [[ ! $file_to_parse =~ glance ]]; then
124
+                file_to_parse="${file_to_parse} glance"
125
+            fi
126
+        elif [[ $service == key* ]]; then
127
+            if [[ ! $file_to_parse =~ keystone ]]; then
128
+                file_to_parse="${file_to_parse} keystone"
129
+            fi
130
+        fi
131
+    done
132
+
133
+    for file in ${file_to_parse}; do
134
+        local fname=${package_dir}/${file}
135
+        local OIFS line package distros distro
136
+        [[ -e $fname ]] || continue
137
+
138
+        OIFS=$IFS
139
+        IFS=$'\n'
140
+        for line in $(<${fname}); do
141
+            if [[ $line =~ "NOPRIME" ]]; then
142
+                continue
143
+            fi
144
+
145
+            if [[ $line =~ (.*)#.*dist:([^ ]*) ]]; then
146
+                # We are using BASH regexp matching feature.
147
+                package=${BASH_REMATCH[1]}
148
+                distros=${BASH_REMATCH[2]}
149
+                # In bash ${VAR,,} will lowecase VAR
150
+                [[ ${distros,,} =~ ${DISTRO,,} ]] && echo $package
151
+                continue
152
+            fi
153
+
154
+            echo ${line%#*}
155
+        done
156
+        IFS=$OIFS
157
+    done
158
+}
159
+
160
+
76 161
 # Determine OS Vendor, Release and Update
77 162
 # Tested with OS/X, Ubuntu, RedHat, CentOS, Fedora
78 163
 # Returns results in global variables:
... ...
@@ -614,86 +614,6 @@ fi
614 614
 #
615 615
 # Openstack uses a fair number of other projects.
616 616
 
617
-# get_packages() collects a list of package names of any type from the
618
-# prerequisite files in ``files/{apts|pips}``.  The list is intended
619
-# to be passed to a package installer such as apt or pip.
620
-#
621
-# Only packages required for the services in ENABLED_SERVICES will be
622
-# included.  Two bits of metadata are recognized in the prerequisite files:
623
-# - ``# NOPRIME`` defers installation to be performed later in stack.sh
624
-# - ``# dist:DISTRO`` or ``dist:DISTRO1,DISTRO2`` limits the selection
625
-#   of the package to the distros listed.  The distro names are case insensitive.
626
-#
627
-# get_packages dir
628
-function get_packages() {
629
-    local package_dir=$1
630
-    local file_to_parse
631
-    local service
632
-
633
-    if [[ -z "$package_dir" ]]; then
634
-        echo "No package directory supplied"
635
-        return 1
636
-    fi
637
-    for service in general ${ENABLED_SERVICES//,/ }; do
638
-        # Allow individual services to specify dependencies
639
-        if [[ -e ${package_dir}/${service} ]]; then
640
-            file_to_parse="${file_to_parse} $service"
641
-        fi
642
-        # NOTE(sdague) n-api needs glance for now because that's where
643
-        # glance client is
644
-        if [[ $service == n-api ]]; then
645
-            if [[ ! $file_to_parse =~ nova ]]; then
646
-                file_to_parse="${file_to_parse} nova"
647
-            fi
648
-            if [[ ! $file_to_parse =~ glance ]]; then
649
-                file_to_parse="${file_to_parse} glance"
650
-            fi
651
-        elif [[ $service == c-* ]]; then
652
-            if [[ ! $file_to_parse =~ cinder ]]; then
653
-                file_to_parse="${file_to_parse} cinder"
654
-            fi
655
-        elif [[ $service == n-* ]]; then
656
-            if [[ ! $file_to_parse =~ nova ]]; then
657
-                file_to_parse="${file_to_parse} nova"
658
-            fi
659
-        elif [[ $service == g-* ]]; then
660
-            if [[ ! $file_to_parse =~ glance ]]; then
661
-                file_to_parse="${file_to_parse} glance"
662
-            fi
663
-        elif [[ $service == key* ]]; then
664
-            if [[ ! $file_to_parse =~ keystone ]]; then
665
-                file_to_parse="${file_to_parse} keystone"
666
-            fi
667
-        fi
668
-    done
669
-
670
-    for file in ${file_to_parse}; do
671
-        local fname=${package_dir}/${file}
672
-        local OIFS line package distros distro
673
-        [[ -e $fname ]] || continue
674
-
675
-        OIFS=$IFS
676
-        IFS=$'\n'
677
-        for line in $(<${fname}); do
678
-            if [[ $line =~ "NOPRIME" ]]; then
679
-                continue
680
-            fi
681
-
682
-            if [[ $line =~ (.*)#.*dist:([^ ]*) ]]; then
683
-                # We are using BASH regexp matching feature.
684
-                package=${BASH_REMATCH[1]}
685
-                distros=${BASH_REMATCH[2]}
686
-                # In bash ${VAR,,} will lowecase VAR
687
-                [[ ${distros,,} =~ ${DISTRO,,} ]] && echo $package
688
-                continue
689
-            fi
690
-
691
-            echo ${line%#*}
692
-        done
693
-        IFS=$OIFS
694
-    done
695
-}
696
-
697 617
 # install package requirements
698 618
 if [[ "$os_PACKAGE" = "deb" ]]; then
699 619
     apt_get update