From 6964c19449f1e07fc1f4e8e0364c4253a74f7fcf Mon Sep 17 00:00:00 2001
From: Philipp Spilger <philipp.spilger@kip.uni-heidelberg.de>
Date: Tue, 14 Sep 2021 12:24:15 +0200
Subject: [PATCH] Install scripts and files

Change-Id: Ibac6009fec47a74dfe524dae1b31a30bdc5135e5
---
 .ci/Jenkinsfile                               | 40 +++++++++----------
 .ci/Jenkinsfile_asic                          | 34 ++++++++--------
 share/yashchiki/styles/asic/create_recipe.sh  |  4 +-
 .../styles/visionary/create_recipe.sh         |  4 +-
 wscript                                       | 12 +++++-
 5 files changed, 50 insertions(+), 44 deletions(-)

diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile
index 016a8aed..3ed48998 100755
--- a/.ci/Jenkinsfile
+++ b/.ci/Jenkinsfile
@@ -29,6 +29,7 @@ pipeline {
 
 	environment {
 		CONTAINER_STYLE = "visionary"
+		YASHCHIKI_HOST_ENV_PATH = "${WORKSPACE}/host.env"
 	}
 
 	stages {
@@ -37,7 +38,6 @@ pipeline {
 				DOCKER_BASE_IMAGE = "debian:bullseye"
 				DEPENDENCY_PYTHON = "python@3.8.2"
 				YASHCHIKI_INSTALL = "${WORKSPACE}/yashchiki"
-				YASHCHIKI_HOST_ENV_PATH = "${WORKSPACE}/host.env"
 				YASHCHIKI_META_DIR = "${WORKSPACE}/meta"
 				YASHCHIKI_RECIPE_PATH = "${WORKSPACE}/visionary_recipe.def"
 				YASHCHIKI_CACHES_ROOT = "${HOME}"
@@ -73,72 +73,73 @@ pipeline {
 							} else {
 								sh "singularity exec /containers/stable/latest ./symwaf2ic/waf setup --project=yashchiki --clone-depth=2 --gerrit-changes=${GERRIT_CHANGE_NUMBER} --gerrit-url=ssh://hudson@${GERRIT_HOST}:${GERRIT_PORT}"
 							}
+							sh "singularity exec /containers/stable/latest ./symwaf2ic/waf configure install"
 						}
 					}
 				}
 				stage('Validate environment') {
 					steps {
-						sh "yashchiki/lib/yashchiki/validate_environment.sh"
+						sh "bash lib/yashchiki/validate_environment.sh"
 					}
 				}
 				stage('Dump Meta Info') {
 					steps {
-						sh "yashchiki/bin/yashchiki_dump_meta_info.sh"
-						sh "yashchiki/bin/yashchiki_notify_gerrit.sh -m 'Build containing this change started..'"
+						sh "bash bin/yashchiki_dump_meta_info.sh"
+						sh "bash bin/yashchiki_notify_gerrit.sh -m 'Build containing this change started..'"
 					}
 				}
 				stage('Spack Fetch') {
 					steps {
 						script {
 							try {
-								sh "yashchiki/lib/yashchiki/fetch.sh"
+								sh "bash lib/yashchiki/fetch.sh"
 							}
 							catch (Throwable t) {
 								archiveArtifacts "errors_concretization.log"
 								throw t
 							}
-							spec_folder_in_container = sh(script: "yashchiki/lib/yashchiki/get_host_env.sh SPEC_FOLDER_IN_CONTAINER", returnStdout: true).trim()
+							spec_folder_in_container = sh(script: "bash lib/yashchiki/get_host_env.sh SPEC_FOLDER_IN_CONTAINER", returnStdout: true).trim()
 							archiveArtifacts(artifacts: "sandboxes/*/$spec_folder_in_container/*.yaml", allowEmptyArchive: true)
 						}
 					}
 				}
 				stage('Deploy utilities') {
 					steps {
-						sh "yashchiki/bin/yashchiki_deploy_utilities.sh"
+						sh "bash bin/yashchiki_deploy_utilities.sh"
 					}
 				}
 				stage('Create visionary recipe') {
 					steps {
-						sh "yashchiki/share/yashchiki/styles/visionary/create_recipe.sh"
+						sh "bash share/yashchiki/styles/visionary/create_recipe.sh"
 					}
 				}
 				stage('Build sandbox') {
 					steps {
-						sh "yashchiki/lib/yashchiki/build_sandbox.sh"
+						sh "bash lib/yashchiki/build_sandbox.sh"
 					}
 				}
 				stage('Build container image') {
 					steps {
-						sh "yashchiki/lib/yashchiki/build_image.sh"
+						sh "bash lib/yashchiki/build_image.sh"
 					}
 				}
 				stage('Update build cache and export container') {
 					steps {
 						script {
 							// we only want the container name, tail everything else
-							CONTAINER_IMAGE = sh(script: "yashchiki/bin/yashchiki_deploy_container.sh | tail -n 1", returnStdout: true).trim()
+							CONTAINER_IMAGE = sh(script: "bash bin/yashchiki_deploy_container.sh | tail -n 1", returnStdout: true).trim()
 						}
-						sh "yashchiki/lib/yashchiki/update_build_cache.sh -c \"$CONTAINER_IMAGE\""
-						sh "yashchiki/bin/yashchiki_notify_gerrit.sh -t Build -c \"$CONTAINER_IMAGE\""
+						sh "bash lib/yashchiki/update_build_cache.sh -c \"$CONTAINER_IMAGE\""
+						sh "bash bin/yashchiki_notify_gerrit.sh -t Build -c \"$CONTAINER_IMAGE\""
 					}
 				}
 			}
 			post {
 				failure {
 					script {
-						cache_failed = sh(script: "yashchiki/lib/yashchiki/create_temporary_build_cache_after_failure.sh", returnStdout: true).trim()
+						cache_failed = sh(script: "bash lib/yashchiki/create_temporary_build_cache_after_failure.sh", returnStdout: true).trim()
 					}
-					sh "yashchiki/bin/yashchiki_notify_gerrit.sh -v -1 -t Build -m \"Successfully built packages stored in cache. Resume by issuing:\nWITH_CACHE_NAME=${cache_failed}\n\nIn your next gerrit comment, NOT commit message!\""
+					sh "bash bin/yashchiki_notify_gerrit.sh -v -1 -t Build -m \"Successfully built packages stored in cache. Resume by issuing:\nWITH_CACHE_NAME=${cache_failed}\n\nIn your next gerrit comment, NOT commit message!\""
 				}
 				cleanup {
 					archiveArtifacts "host.env"
@@ -206,18 +207,15 @@ pipeline {
 					}
 				}
 			}
-			environment {
-				YASHCHIKI_HOST_ENV_PATH = "${WORKSPACE}/host.env"
-			}
 			post {
 				success {
-					jesh "yashchiki/bin/yashchiki_notify_gerrit.sh -v 1 -t Tests -c '${CONTAINER_IMAGE}'"
+					jesh "bash bin/yashchiki_notify_gerrit.sh -v 1 -t Tests -c '${CONTAINER_IMAGE}'"
 				}
 				unstable {
-					jesh "yashchiki/bin/yashchiki_notify_gerrit.sh -v 0 -t Tests -c '${CONTAINER_IMAGE}'"
+					jesh "bash bin/yashchiki_notify_gerrit.sh -v 0 -t Tests -c '${CONTAINER_IMAGE}'"
 				}
 				failure {
-					jesh "yashchiki/bin/yashchiki_notify_gerrit.sh -v -1 -t Tests -c '${CONTAINER_IMAGE}'"
+					jesh "bash bin/yashchiki_notify_gerrit.sh -v -1 -t Tests -c '${CONTAINER_IMAGE}'"
 				}
 			}
 		}
diff --git a/.ci/Jenkinsfile_asic b/.ci/Jenkinsfile_asic
index e5e06dfd..118a6480 100755
--- a/.ci/Jenkinsfile_asic
+++ b/.ci/Jenkinsfile_asic
@@ -29,6 +29,7 @@ pipeline {
 
 	environment {
 		CONTAINER_STYLE = "asic"
+		YASHCHIKI_HOST_ENV_PATH = "${WORKSPACE}/host.env"
 	}
 
 	stages {
@@ -39,7 +40,6 @@ pipeline {
 				// versions from system packages
 				DEPENDENCY_PYTHON = "python@3.8.3"
 				YASHCHIKI_INSTALL = "${WORKSPACE}/yashchiki"
-				YASHCHIKI_HOST_ENV_PATH = "${WORKSPACE}/host.env"
 				YASHCHIKI_META_DIR = "${WORKSPACE}/meta"
 				YASHCHIKI_RECIPE_PATH = "${WORKSPACE}/asic_recipe.def"
 				YASHCHIKI_CACHES_ROOT = "${HOME}"
@@ -75,75 +75,73 @@ pipeline {
 							} else {
 								sh "singularity exec /containers/stable/latest ./symwaf2ic/waf setup --project=yashchiki --clone-depth=2 --gerrit-changes=${GERRIT_CHANGE_NUMBER} --gerrit-url=ssh://hudson@${GERRIT_HOST}:${GERRIT_PORT}"
 							}
+							sh "singularity exec /containers/stable/latest ./symwaf2ic/waf configure install"
 						}
 					}
 				}
 				stage('Validate environment') {
 					steps {
-						sh "yashchiki/lib/yashchiki/validate_environment.sh"
+						sh "bash lib/yashchiki/validate_environment.sh"
 					}
 				}
 				stage('Dump Meta Info') {
 					steps {
-						sh "yashchiki/bin/yashchiki_dump_meta_info.sh"
-						sh "yashchiki/bin/yashchiki_notify_gerrit.sh -m 'Build containing this change started..'"
+						sh "bash bin/yashchiki_dump_meta_info.sh"
+						sh "bash bin/yashchiki_notify_gerrit.sh -m 'Build containing this change started..'"
 					}
 				}
 				stage('Spack Fetch') {
 					steps {
 						script {
 							try {
-								sh "yashchiki/lib/yashchiki/fetch.sh"
+								sh "bash lib/yashchiki/fetch.sh"
 							}
 							catch (Throwable t) {
 								archiveArtifacts "errors_concretization.log"
 								throw t
 							}
-							spec_folder_in_container = sh(script: "yashchiki/lib/yashchiki/get_host_env.sh SPEC_FOLDER_IN_CONTAINER", returnStdout: true).trim()
+							spec_folder_in_container = sh(script: "lib/yashchiki/get_host_env.sh SPEC_FOLDER_IN_CONTAINER", returnStdout: true).trim()
 							archiveArtifacts(artifacts: "sandboxes/*/$spec_folder_in_container/*.yaml", allowEmptyArchive: true)
 						}
 					}
 				}
 				stage('Deploy utilities') {
 					steps {
-						sh "yashchiki/bin/yashchiki_deploy_utilities.sh"
+						sh "bash bin/yashchiki_deploy_utilities.sh"
 					}
 				}
 				stage('Create asic recipe') {
 					steps {
-						sh "yashchiki/share/yashchiki/styles/asic/create_recipe.sh"
+						sh "share/yashchiki/styles/asic/create_recipe.sh"
 					}
 				}
 				stage('Build sandbox') {
 					steps {
-						sh "yashchiki/lib/yashchiki/build_sandbox.sh"
+						sh "bash lib/yashchiki/build_sandbox.sh"
 					}
 				}
 				stage('Build container image') {
 					steps {
-						sh "yashchiki/lib/yashchiki/build_image.sh"
+						sh "bash lib/yashchiki/build_image.sh"
 					}
 				}
 				stage('Update build cache and export container') {
 					steps {
 						script {
 							// we only want the container name, tail everything else
-							CONTAINER_IMAGE = sh(script: "yashchiki/bin/yashchiki_deploy_container.sh | tail -n 1", returnStdout: true).trim()
+							CONTAINER_IMAGE = sh(script: "bin/yashchiki_deploy_container.sh | tail -n 1", returnStdout: true).trim()
 						}
-						sh "yashchiki/lib/yashchiki/update_build_cache.sh -c \"$CONTAINER_IMAGE\""
-						sh "yashchiki/bin/yashchiki_notify_gerrit.sh -t Build -c \"$CONTAINER_IMAGE\""
+						sh "bash lib/yashchiki/update_build_cache.sh -c \"$CONTAINER_IMAGE\""
+						sh "bash bin/yashchiki_notify_gerrit.sh -t Build -c \"$CONTAINER_IMAGE\""
 					}
 				}
 			}
-			environment {
-				YASHCHIKI_HOST_ENV_PATH = "${WORKSPACE}/host.env"
-			}
 			post {
 				failure {
 					script {
-						cache_failed = sh(script: "yashchiki/lib/yashchiki/create_temporary_build_cache_after_failure.sh", returnStdout: true).trim()
+						cache_failed = sh(script: "lib/yashchiki/create_temporary_build_cache_after_failure.sh", returnStdout: true).trim()
 					}
-					sh "yashchiki/bin/yashchiki_notify_gerrit.sh -v -1 -t Build -m \"Successfully built packages stored in cache. Resume by issuing:\nWITH_CACHE_NAME=${cache_failed}\n\nIn your next gerrit comment, NOT commit message!\""
+					sh "bash bin/yashchiki_notify_gerrit.sh -v -1 -t Build -m \"Successfully built packages stored in cache. Resume by issuing:\nWITH_CACHE_NAME=${cache_failed}\n\nIn your next gerrit comment, NOT commit message!\""
 				}
 				cleanup {
 					archiveArtifacts "host.env"
diff --git a/share/yashchiki/styles/asic/create_recipe.sh b/share/yashchiki/styles/asic/create_recipe.sh
index 70e4140a..b080e55c 100755
--- a/share/yashchiki/styles/asic/create_recipe.sh
+++ b/share/yashchiki/styles/asic/create_recipe.sh
@@ -31,8 +31,8 @@ From: ${DOCKER_BASE_IMAGE}
     mount --no-mtab --bind "${JOB_TMP_SPACK}" "\${SINGULARITY_ROOTFS}/tmp/spack"
     # copy install scripts
     mkdir "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
-    rsync -av "${ROOT_DIR}"/share/yashchiki/styles/asic/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
-    rsync -av "${ROOT_DIR}"/lib/yashchiki/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av --chmod 0755 "${ROOT_DIR}"/share/yashchiki/styles/asic/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av --chmod 0755 "${ROOT_DIR}"/lib/yashchiki/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
     rsync -av "${ROOT_DIR}"/lib/yashchiki/*.awk "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
     rsync -av "${ROOT_DIR}"/share/yashchiki/patches "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
     mkdir -p "\${SINGULARITY_ROOTFS}/${META_DIR_INSIDE}"
diff --git a/share/yashchiki/styles/visionary/create_recipe.sh b/share/yashchiki/styles/visionary/create_recipe.sh
index b0664d25..d078fdf5 100755
--- a/share/yashchiki/styles/visionary/create_recipe.sh
+++ b/share/yashchiki/styles/visionary/create_recipe.sh
@@ -36,8 +36,8 @@ From: ${DOCKER_BASE_IMAGE}
     mount --no-mtab --bind "${JOB_TMP_SPACK}" "\${SINGULARITY_ROOTFS}/tmp/spack"
     # copy install scripts
     mkdir "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
-    rsync -av "${ROOT_DIR}"/share/yashchiki/styles/visionary/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
-    rsync -av "${ROOT_DIR}"/lib/yashchiki/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av --chmod 0755 "${ROOT_DIR}"/share/yashchiki/styles/visionary/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
+    rsync -av --chmod 0755 "${ROOT_DIR}"/lib/yashchiki/*.sh "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
     rsync -av "${ROOT_DIR}"/lib/yashchiki/*.awk "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
     rsync -av "${ROOT_DIR}"/share/yashchiki/patches "\${SINGULARITY_ROOTFS}/${SPACK_INSTALL_SCRIPTS}"
     mkdir -p "\${SINGULARITY_ROOTFS}/${META_DIR_INSIDE}"
diff --git a/wscript b/wscript
index 9f57073d..7db8e31e 100755
--- a/wscript
+++ b/wscript
@@ -8,4 +8,14 @@ def configure(cfg):
     pass
 
 def build(bld):
-    pass
+    # install /bin
+    for bin in bld.path.ant_glob('bin/**/*'):
+        bld.install_as('${PREFIX}/%s' % bin.path_from(bld.path), bin)
+
+    # install /lib
+    for lib in bld.path.ant_glob('lib/**/*'):
+        bld.install_as('${PREFIX}/%s' % lib.path_from(bld.path), lib)
+
+    # install /share
+    for share in bld.path.ant_glob('share/**/*'):
+        bld.install_as('${PREFIX}/%s' % share.path_from(bld.path), share)
-- 
GitLab