node('docker') {
    docker.image('gstreamer/build-meson-fedora:latest').inside {
	
	env.CCACHE_DIR = "${env.WORKSPACE}/.ccache"
	env.CCACHE_MAXSIZE = "2G"
	env.CC = "ccache gcc"
	env.CXX = "ccache g++"
	env.MAKEFLAGS = "-j6"
	env.PATH = "${env.WORKSPACE}:${env.PATH}"
	env.HOME="${env.WORKSPACE}"
	env.DISPLAY=":0"

	stage('Checkout') {
	    if (params.wipe) {
		sh 'rm -Rf build/'
	    }
	    checkout([$class: 'GitSCM', branches: [[name: '*/master']],
		      doGenerateSubmoduleConfigurations: false,
		      extensions: [[$class: 'CloneOption',
				    depth: 0,
				    noTags: false,
				    reference: '/gstbuild/gst-build/',
				    shallow: false]],
		      submoduleCfg: [],
		      userRemoteConfigs: [[url: 'git://anongit.freedesktop.org/gstreamer/gst-build']]]
	    )
	    sh 'git checkout master && git reset --hard origin/master'
	    sh 'curl "https://git.arracacha.collabora.co.uk/cgit/gst-manifest.git/plain/default.xml?id=$BUILD_TAG" -k -o manifest.xml'
	}
	
	stage('Setup') {
	    sh './git-update --no-color --manifest=manifest.xml --no-interaction'
	    sh './setup.py -Ddisable_gstreamer_vaapi=true'
	}
	
	stage ('Build') {
	    sh "ninja -C build"
	}

	stage ('Check') {
            sh "./gst-uninstalled.py gst-validate-launcher --check-bugs --no-display --mute -n check --xunit-file $WORKSPACE/xunit.xml -M $WORKSPACE/validate-output --ignore-numfailures"

	    step([$class: 'XUnitBuilder',
		  testTimeMargin: '3000', thresholdMode: 1,
		  thresholds: [[$class: 'FailedThreshold',
				failureNewThreshold: '',
				failureThreshold: '5',
				unstableNewThreshold: '',
				unstableThreshold: '1'],
			       [$class: 'SkippedThreshold',
				failureNewThreshold: '',
				failureThreshold: '',
				unstableNewThreshold: '',
				unstableThreshold: '']],
		  tools: [[$class: 'JUnitType',
			   deleteOutputFiles: true,
			   failIfNotNew: true,
			   pattern: 'xunit.xml',
			   skipNoTestFiles: true,
			   stopProcessingIfError: true]]])
	}

	stage('install') {
	    sh 'mkdir -p dest'
	    sh 'DESTDIR=$PWD/dest ninja -C build install'
	}
	stage('package') {
	    sh 'cd dest && tar caJf gstreamer-$BUILD_TAG.tar.xz usr'
	}
    }
}
