ansible: Add host for sles15sp5
[lttng-ci.git] / scripts / system-tests / check-build-needs.sh
index 625047e7943b74a4e3b791e6d3852a2b8c3ecba9..363b53553c416f262831ba025866b0d81cfc9cb2 100644 (file)
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# Version compare functions
+vercomp () {
+    set +u
+    if [[ "$1" == "$2" ]]; then
+        return 0
+    fi
+    local IFS=.
+    local i ver1=($1) ver2=($2)
+    # fill empty fields in ver1 with zeros
+    for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do
+        ver1[i]=0
+    done
+    for ((i=0; i<${#ver1[@]}; i++)); do
+        if [[ -z ${ver2[i]} ]]; then
+            # fill empty fields in ver2 with zeros
+            ver2[i]=0
+        fi
+        if ((10#${ver1[i]} > 10#${ver2[i]})); then
+            return 1
+        fi
+        if ((10#${ver1[i]} < 10#${ver2[i]})); then
+            return 2
+        fi
+    done
+    set -u
+    return 0
+}
+
+verlte() {
+    vercomp "$1" "$2"; local res="$?"
+    [ "$res" -eq "0" ] || [ "$res" -eq "2" ]
+}
+
+verlt() {
+    vercomp "$1" "$2"; local res="$?"
+    [ "$res" -eq "2" ]
+}
+
+vergte() {
+    vercomp "$1" "$2"; local res="$?"
+    [ "$res" -eq "0" ] || [ "$res" -eq "1" ]
+}
+
+vergt() {
+    vercomp "$1" "$2"; local res="$?"
+    [ "$res" -eq "1" ]
+}
+
+verne() {
+    vercomp "$1" "$2"; local res="$?"
+    [ "$res" -ne "0" ]
+}
+
 mkdir -p "$DEPLOYDIR"
 
 NEED_MODULES_BUILD=0
@@ -27,31 +80,51 @@ if [ $? -ne 0 ]; then
   NEED_MODULES_BUILD=1
 fi
 
+$S3_COMMAND info "s3://$S3_STORAGE_KERNEL_IMAGE"
+if [ $? -ne 0 ]; then
+  NEED_KERNEL_BUILD=1
+  # We need to build the lttng modules if the kernel has changed.
+  NEED_MODULES_BUILD=1
+fi
+
 $SSH_COMMAND "$STORAGE_USER@$STORAGE_HOST" ls "$STORAGE_LTTNG_MODULES"
 if [ $? -ne 0 ]; then
   NEED_MODULES_BUILD=1
 fi
+
+$S3_COMMAND info "s3://$S3_STORAGE_LTTNG_MODULES"
+if [ $? -ne 0 ]; then
+  NEED_MODULES_BUILD=1
+fi
+
 set -e
 
 # We need to fetch the kernel source and lttng-modules to build either the
 # kernel or modules
 if [ $NEED_MODULES_BUILD -eq 1 ] || [ $NEED_KERNEL_BUILD -eq 1 ] ; then
-
-  git clone "$KGITREPO" "$LINUX_PATH"
+  mkdir -p "$LINUX_PATH"
   pushd "$LINUX_PATH"
-  git checkout "$KERNEL_COMMIT_ID"
-  popd
-  git clone "$LTTNG_MODULES_GIT" "$LTTNG_MODULES_PATH"
-  pushd "$LTTNG_MODULES_PATH"
-  git checkout "$LTTNG_MODULES_COMMIT_ID"
+  git init
+  git remote add origin "$KGITREPO"
+  git fetch --depth 1 origin "$KERNEL_COMMIT_ID"
+  git checkout FETCH_HEAD
+  version=$(make -s kernelversion)
   popd
 
-  git clone https://github.com/lttng/lttng-ci "$LTTNG_CI_PATH"
-  cp "$LTTNG_CI_PATH"/lava/kernel/vanilla/x86_64_server.config "$LINUX_PATH/.config"
+
+  # Prepare version string for comparison.
+  # Strip any '-rc tag'.
+  version=${version%%"-"*}
+
+  cp src/lttng-ci/lava/kernel/vanilla/x86_64_server.config "$LINUX_PATH/.config"
   make --directory="$LINUX_PATH" olddefconfig
 
   if [ $BUILD_DEVICE = 'kvm' ] ; then
-    make --directory="$LINUX_PATH" kvmconfig
+    if vergte "$version" "3.19"; then
+      make --directory="$LINUX_PATH" kvm_guest.config
+    else
+      make --directory="$LINUX_PATH" kvmconfig
+    fi
   fi
 
   make --directory="$LINUX_PATH" modules_prepare
This page took 0.024721 seconds and 4 git commands to generate.