@Library('SHS.Platforms') _
node {
	properties([
		parameters(
			[booleanParam(name: 'RPi_make_sysroot', defaultValue: false, description: 'Rebuild raspbian sysroot, or only execute Dockerfile'), booleanParam(name: 'no_docker_cache', defaultValue: false, description: 'Build dockers without use docker cache')]
		)
	])
	def jobs = 4
	if (env.JOBS_COUNT) {
		jobs = "${env.JOBS_COUNT}"
	}
	def jobs_qt = 2
	if (env.JOBS_QT_COUNT) {
		jobs_qt = "${env.JOBS_QT_COUNT}"
	}
	def docker_cache_arg = ""
	if (Boolean.valueOf(no_docker_cache)) {
	docker_cache_arg = "--no-cache"
	}
	stage("Download SRC") {
		 checkout scm
	}
	
    def pl = new org.SHS.Platforms(this)
    pl.get()

	stage("Debian-base") {
		docker.build("${env.DOCKER_PREFIX}/debian-base", "./debian-base ${docker_cache_arg}")
	}
	
	if (pl.root().platforms.OSX.enabled) {
		stage("OSXcross") {
			docker.build("${env.DOCKER_PREFIX}/osxcross", "./osxcross ${docker_cache_arg} --build-arg XCODE_XIP=172.17.0.1/Xcode_10.3.xip")
		}
	}
	
	if (pl.root().platforms["Raspbian 10"].enabled) {
		stage("Raspbian SYSROOT") {
			if (Boolean.valueOf(RPi_make_sysroot)) {
				echo 'Building Raspbian sysroot ...'
				sh 'cd ./pi && bash ./umount_sysroot.sh && bash ./mount_sysroot.sh'
				sh 'mkdir -p $HOME/rpi_image'
				docker.image('${env.DOCKER_PREFIX}/debian-base').inside('-u root:root -v $HOME/rpi_image:/soft/rpi_image') {
					sh 'cd ./pi && bash make_sysroot.sh'
				}
				sh 'cd ./pi && bash ./umount_sysroot.sh'
			}
			sh 'cp -vf $HOME/rpi_image/sysroot.tar.bz2 ./pi/'
		}
	}

    pl.forEach ({ dist ->
			def args = "./${dist.docker.directory} ${docker_cache_arg}"
			for (arg in dist.docker.build_options) {
				args += " --build-arg ${arg.key}=\"${arg.value}\""
			}
			args += " --build-arg JOBS_COUNT=${jobs}"
			args += " --build-arg JOBS_QT_COUNT=${jobs_qt}"
			def dprefix = "${env.DOCKER_PREFIX}"
			if (dprefix != "" && !dprefix.endsWith("/")) dprefix += "/"
			args += " --build-arg DOCKER_PREFIX=${dprefix}"
			//print "${env.DOCKER_PREFIX}/${dist.docker.image_basename} -> ${args}"
			docker.build("${env.DOCKER_PREFIX}/${dist.docker.image_basename}", args)
		},
		ondemand: true
	)
	
	stage("docker prune") {
		sh 'docker system prune -f'
	}
}
