- job-template:
name: babeltrace_{version}_scan-build
defaults: babeltrace
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
- job-template:
name: babeltrace_{version}_coverity
defaults: babeltrace
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
- job-template:
name: babeltrace_{version}_pylint
defaults: babeltrace
- node: 'x86-64'
+ node: 'amd64'
scm: []
builders:
- copyartifact:
- project: babeltrace_{version}_build/arch=x86-64,build=std,conf=python-bindings
+ project: babeltrace_{version}_build/arch=amd64,build=std,conf=python-bindings
which-build: last-successful
stable: false
filter: 'build/**'
- babeltrace_version_glib-2-22-5_anchor: &babeltrace_version_glib-2-22-5_anchor
name: 'babeltrace_version_glib_anchor'
defaults: babeltrace
- node: 'x86-64'
+ node: 'amd64'
builders:
- inject:
properties-content: |
LD_LIBRARY_PATH=$WORKSPACE/glib-2.22.5/BUILD_RESULT/lib
PKG_CONFIG_PATH=$WORKSPACE/glib-2.22.5/BUILD_RESULT/lib/pkgconfig
- arch=x86-64
+ arch=amd64
conf=std
build=std
- shell: |
jobs:
- 'babeltrace_{version}_{buildtype}':
buildtype: build
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, static, python-bindings]
- 'babeltrace_{version}_{buildtype}':
buildtype: clangbuild
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [clang]
conf: !!python/tuple [std, static]
- 'babeltrace_{version}_{buildtype}':
buildtype: portbuild
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, static, python-bindings]
- 'babeltrace_{version}_{buildtype}':
- master-staging
- 'dev_{user}_babeltrace_{version}_{buildtype}':
buildtype: build
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, static, python-bindings]
- 'dev_{user}_babeltrace_{version}_{buildtype}':
- job-template:
name: barectf_{version}_pylint
defaults: barectf
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
- master
jobs:
- 'barectf_{version}_build':
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [i386, amd64]
- 'barectf_{version}_pylint'
+++ /dev/null
----
-- defaults:
- name: latency-tracker
- description: |
-
- <p>Job is managed by Jenkins Job Builder.</p>
-
- project-type: freestyle
-
- wrappers:
- - workspace-cleanup
- - timestamps
- - ansicolor
-
- scm:
- - git:
- url: git://github.com/{github_user}/{github_name}.git
- browser: githubweb
- browser-url: https://github.com/{github_user}/{github_name}
- branches:
- - "{mversion}"
- shallow-clone: true
- skip-tag: true
- fastpoll: true
- basedir: src/latency-tracker
-
- triggers:
- - pollscm:
- cron: "@hourly"
-
- properties:
- - build-discarder:
- num-to-keep: 2
- - github:
- url: https://github.com/{github_user}/{github_name}
-
-
-## Templates
-- job-template:
- name: latency-tracker_{mversion}_{kversion}_{buildtype}
- defaults: latency-tracker
-
- project-type: matrix
- node: 'master' # Applies only to matrix flyweight task
- axes:
- - axis:
- type: slave
- name: arch
- values: '{obj:arch}'
-
- builders:
- - copyartifact:
- project: kernel_{kversion}_{buildtype}/arch=$arch
- which-build: last-successful
- stable: false
- filter: 'build/**'
- target: 'deps/linux'
- do-not-fingerprint: true
- - shell: |
- git clone --depth=1 -b "v{kversion}" --reference $HOME/gitcache/linux-stable.git/ git://git-mirror.internal.efficios.com/git/linux-all.git src/linux
- - shell:
- !include-raw-escape: scripts/latency-tracker/build.sh
-
- publishers:
- - archive:
- artifacts: 'build/**'
- allow-empty: false
- - workspace-cleanup
- - email-ext:
- recipients: '{obj:email_to}'
- reply-to: ci-notification@lists.lttng.org
- always: false
- unstable: false
- first-failure: true
- first-unstable: true
- not-built: false
- aborted: false
- regression: false
- failure: false
- second-failure: false
- improvement: false
- still-failing: false
- success: false
- fixed: false
- fixed-unhealthy: true
- still-unstable: false
- pre-build: false
- matrix-trigger: only-parent
- send-to:
- - recipients
-
-
-- job-template:
- name: latency-tracker_{mversion}_{buildtype}-vanilla
- defaults: latency-tracker
- description: |
- The LTTng modules provide Linux kernel tracing capability to the LTTng
- 2.0 tracer toolset.
-
- This job will build the {mversion} branch against all stable vanilla
- kernel tags.
-
- <p>Job is managed by Jenkins Job Builder.</p>
-
- node: 'master'
-
- parameters:
- - string:
- name: 'mversion'
- default: '{mversion}'
- description: 'The latency-tracker branch to build.'
- - string:
- name: 'maxConcurrentBuild'
- default: '20'
- description: 'The maximum number of concurrent child build to run.'
- - string:
- name: 'kverfloor'
- default: 'v3.12'
- description: 'The lowest kernel version to build.'
- - string:
- name: 'kverceil'
- default: ''
- description: 'The highest kernel version to build. (excluded)'
- - string:
- name: 'kverfilter'
- default: 'stable-head'
- description: 'Kernel versions list filtering strategy.'
- - string:
- name: 'kgitrepo'
- default: 'git://git-mirror.internal.efficios.com/git/linux-all.git'
- description: 'The linux kernel git repository url.'
- - string:
- name: 'kbuildjob'
- default: 'latency-tracker_VERSION_param-{buildtype}'
- description: 'The parametrized job to use for child builds.'
-
- builders:
- - system-groovy:
- command:
- !include-raw-escape: scripts/latency-tracker/master.groovy
-
- publishers:
- - workspace-cleanup
- - email-ext:
- recipients: '{obj:email_to}'
- reply-to: ci-notification@lists.lttng.org
- always: false
- unstable: false
- first-failure: true
- first-unstable: true
- not-built: false
- aborted: false
- regression: false
- failure: false
- second-failure: false
- improvement: false
- still-failing: false
- success: false
- fixed: false
- fixed-unhealthy: true
- still-unstable: false
- pre-build: false
- matrix-trigger: only-parent
- send-to:
- - recipients
-
-- job-template:
- name: latency-tracker_{mversion}_build-{uversion}
- defaults: latency-tracker
- description: |
- The LTTng modules provide Linux kernel tracing capability to the LTTng
- 2.0 tracer toolset.
-
- This job will build the {mversion} branch against all Ubuntu {uversion}
- released kernels, including the LTS backport kernels.
-
- <p>Job is managed by Jenkins Job Builder.</p>
-
- node: 'master'
-
- parameters:
- - string:
- name: 'mversion'
- default: '{mversion}'
- description: 'The latency-tracker branch to build.'
- - string:
- name: 'maxConcurrentBuild'
- default: '20'
- description: 'The maximum number of concurrent child build to run.'
- - string:
- name: 'kverfloor'
- default: ''
- description: 'The lowest kernel version to build.'
- - string:
- name: 'kverceil'
- default: ''
- description: 'The highest kernel version to build. (excluded)'
- - string:
- name: 'kverfilter'
- default: 'stable-head'
- description: 'Kernel versions list filtering strategy.'
- - string:
- name: 'kgitrepo'
- default: 'git://git-mirror.internal.efficios.com/git/ubuntu-{uversion}.git'
- description: 'The linux kernel git repository url.'
- - string:
- name: 'kbuildjob'
- default: 'latency-tracker_VERSION_param-build'
- description: 'The parametrized job to use for child builds.'
- - string:
- name: 'uversion'
- default: '{uversion}'
- description: 'The lowest kernel version to build.'
-
- builders:
- - system-groovy:
- command:
- !include-raw-escape: scripts/latency-tracker/master.groovy
-
- publishers:
- - workspace-cleanup
- - email-ext:
- recipients: '{obj:email_to}'
- reply-to: ci-notification@lists.lttng.org
- always: false
- unstable: false
- first-failure: true
- first-unstable: true
- not-built: false
- aborted: false
- regression: false
- failure: false
- second-failure: false
- improvement: false
- still-failing: false
- success: false
- fixed: false
- fixed-unhealthy: true
- still-unstable: false
- pre-build: false
- matrix-trigger: only-parent
- send-to:
- - recipients
-
-
-- job-template:
- name: latency-tracker_{mversion}_build-rt
- defaults: latency-tracker
- description: |
- The LTTng modules provide Linux kernel tracing capability to the LTTng
- 2.0 tracer toolset.
-
- This job will build the {mversion} branch against all Linutronix RT
- kernels.
-
- <p>Job is managed by Jenkins Job Builder.</p>
-
- node: 'master'
-
- parameters:
- - string:
- name: 'mversion'
- default: '{mversion}'
- description: 'The latency-tracker branch to build.'
- - string:
- name: 'maxConcurrentBuild'
- default: '20'
- description: 'The maximum number of concurrent child build to run.'
- - string:
- name: 'kverfloor'
- default: 'v2.6.36-rt0-rebase'
- description: 'The lowest kernel version to build.'
- - string:
- name: 'kverceil'
- default: ''
- description: 'The highest kernel version to build. (excluded)'
- - string:
- name: 'kverfilter'
- default: 'stable-head'
- description: 'Kernel versions list filtering strategy.'
- - string:
- name: 'kgitrepo'
- default: 'git://git-mirror.internal.efficios.com/kernel/rt/linux-rt-devel.git'
- description: 'The linux kernel git repository url.'
- - string:
- name: 'kbuildjob'
- default: 'latency-tracker_VERSION_param-build'
- description: 'The parametrized job to use for child builds.'
-
- builders:
- - system-groovy:
- command:
- !include-raw-escape: scripts/latency-tracker/master-rt.groovy
-
- publishers:
- - workspace-cleanup
- - email-ext:
- recipients: '{obj:email_to}'
- reply-to: ci-notification@lists.lttng.org
- always: false
- unstable: false
- first-failure: true
- first-unstable: true
- not-built: false
- aborted: false
- regression: false
- failure: false
- second-failure: false
- improvement: false
- still-failing: false
- success: false
- fixed: false
- fixed-unhealthy: true
- still-unstable: false
- pre-build: false
- matrix-trigger: only-parent
- send-to:
- - recipients
-
-- job-template:
- name: latency-tracker_VERSION_param-build
- defaults: latency-tracker
- description: |
- This is a parametrized job used by 'master' jobs to build any combinations
- of latency-tracker and linux kernel versions.
-
- <p>Job is managed by Jenkins Job Builder.</p>
-
- project-type: matrix
- node: 'master' # Applies only to matrix flyweight task
- axes:
- - axis:
- type: slave
- name: arch
- values: '{obj:arch}'
-
- properties:
- - build-discarder:
- days-to-keep: 2
-
- parameters:
- - string:
- name: 'mversion'
- default: 'master'
- description: 'The latency-tracker branch to build.'
- - string:
- name: 'ktag'
- default: ''
- description: 'The linux kernel git tag to build against.'
- - string:
- name: 'kgitrepo'
- default: 'git://git-mirror.internal.efficios.com/git/linux-all.git'
- description: 'The linux kernel git repository url.'
-
- concurrent: true
-
- scm:
- - git:
- url: git://github.com/efficios/latency-tracker.git
- browser: githubweb
- browser-url: https://github.com/efficios/latency-tracker
- branches:
- - "${{mversion}}"
- skip-tag: true
- basedir: src/latency-tracker
-
- triggers:
-
- builders:
- - shell: |
- git clone --depth=1 -b "$ktag" --reference $HOME/gitcache/linux-stable.git/ "$kgitrepo" src/linux
- - shell:
- !include-raw-escape: scripts/latency-tracker/param-build.sh
-
- publishers:
- - workspace-cleanup
-
-- job-template:
- name: latency-tracker_VERSION_param-crossbuild
- defaults: latency-tracker
- description: |
- This is a parametrized job used by 'master' jobs to build any combinations
- of latency-tracker and linux kernel versions.
-
- <p>Job is managed by Jenkins Job Builder.</p>
-
- project-type: matrix
- node: 'master' # Applies only to matrix flyweight task
- axes:
- - axis:
- type: user-defined
- name: cross_arch
- values: '{obj:cross_arch}'
-
- properties:
- - build-discarder:
- days-to-keep: 2
-
- parameters:
- - string:
- name: 'mversion'
- default: 'master'
- description: 'The latency-tracker branch to build.'
- - string:
- name: 'ktag'
- default: ''
- description: 'The linux kernel git tag to build against.'
- - string:
- name: 'kgitrepo'
- default: 'git://git-mirror.internal.efficios.com/git/linux-all.git'
- description: 'The linux kernel git repository url.'
-
- concurrent: true
-
- scm:
- - git:
- url: git://github.com/efficios/latency-tracker.git
- browser: githubweb
- browser-url: https://github.com/efficios/latency-tracker
- branches:
- - "${{mversion}}"
- skip-tag: true
- basedir: src/latency-tracker
-
- triggers:
-
- builders:
- - shell: |
- git clone --depth=1 -b "$ktag" --reference $HOME/gitcache/linux-stable.git/ "$kgitrepo" src/linux
- - shell:
- !include-raw-escape: scripts/latency-tracker/param-build.sh
-
- publishers:
- - workspace-cleanup
-
-- job-template:
- name: latency-tracker_{mversion}_coverity
- defaults: latency-tracker
- node: 'x86-64'
-
- triggers:
- - pollscm:
- cron: "@daily"
-
- wrappers:
- - workspace-cleanup
- - timestamps
- - ansicolor:
- colormap: xterm
- - credentials-binding:
- - username-password-separated:
- credential-id: latency-tracker_coverity_token
- username: COVERITY_SCAN_PROJECT_NAME
- password: COVERITY_SCAN_TOKEN
-
- builders:
- - shell: |
- git clone --depth=1 -b v4.9 --reference $HOME/gitcache/linux-stable.git/ git://git-mirror.internal.efficios.com/kernel/stable/linux-stable.git src/linux
- cd src/linux
- make defconfig
- sed -i "s/# CONFIG_KALLSYMS_ALL is not set/CONFIG_KALLSYMS_ALL=y/g" .config
- make modules_prepare
- - shell:
- !include-raw-escape: scripts/common/coverity.sh
-
- publishers:
- - workspace-cleanup
-
-- job-template:
- name: latency-tracker_{mversion}_cppcheck
- defaults: latency-tracker
-
- triggers:
- - pollscm:
- cron: "@daily"
-
- builders:
- - shell: |
- rm -f cppcheck-result.xml
- cppcheck --enable=all --xml --xml-version=2 $WORKSPACE/src/latency-tracker 2> cppcheck-result.xml
-
- publishers:
- - archive:
- artifacts: 'cppcheck-result.xml'
- allow-empty: false
- - cppcheck:
- pattern: 'cppcheck-result.xml'
- - email-ext:
- recipients: '{obj:email_to}'
- reply-to: ci-notification@lists.lttng.org
- always: false
- unstable: false
- first-failure: true
- first-unstable: true
- not-built: false
- aborted: false
- regression: false
- failure: false
- second-failure: false
- improvement: false
- still-failing: false
- success: false
- fixed: false
- fixed-unhealthy: true
- still-unstable: false
- pre-build: false
- matrix-trigger: only-parent
- send-to:
- - recipients
-
-- job-template:
- name: latency-tracker_{mversion}_sloccount
- defaults: latency-tracker
- description: |
- The LTTng modules provide Linux kernel tracing capability to the LTTng
- 2.0 tracer toolset.
-
- This job runs the sloccount utility and generates a trend report.
-
- <p>Job is managed by Jenkins Job Builder.</p>
-
- triggers:
- - pollscm:
- cron: "@daily"
-
- builders:
- - shell: |
- cloc --by-file --xml --out=cloc.xml src/latency-tracker/
-
- publishers:
- - archive:
- artifacts: 'cloc.xml'
- allow-empty: false
- - sloccount:
- report-files: 'cloc.xml'
-
-
-## Project
-- project:
- name: latency-tracker
- github_user: efficios
- github_name: latency-tracker
- email_to: 'ci-notification@lists.lttng.org, cc:jdesfossez@efficios.com'
- mversion:
- - master
- jobs:
- - 'latency-tracker_{mversion}_{buildtype}-vanilla':
- buildtype: build
- - 'latency-tracker_{mversion}_build-rt':
- - 'latency-tracker_{mversion}_build-{uversion}':
- uversion:
- - xenial
- - 'latency-tracker_{mversion}_{buildtype}-vanilla':
- buildtype: crossbuild
- - 'latency-tracker_VERSION_param-build':
- arch: !!python/tuple [x86-32, x86-64]
- - 'latency-tracker_VERSION_param-crossbuild':
- cross_arch: !!python/tuple [armhf, arm64]
- - 'latency-tracker_{mversion}_cppcheck'
- - 'latency-tracker_{mversion}_sloccount':
- mversion: master
- - 'latency-tracker_{mversion}_coverity':
- mversion: master
- job-template:
name: liburcu_{version}_scan-build
defaults: liburcu
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
- job-template:
name: liburcu_{version}_coverity
defaults: liburcu
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
jobs:
- 'liburcu_{version}_{buildtype}':
buildtype: build
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, static, tls_fallback, debug-rcu]
- 'liburcu_{version}_{buildtype}':
buildtype: portbuild
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, static, tls_fallback, debug-rcu]
- 'liburcu_{version}_{buildtype}':
- job-template:
name: linux-rseq_master_coverity
defaults: linux-rseq
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
- job-template:
name: lttng-analyses_{version}_pylint
defaults: lttng-analyses
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
builders:
- copyartifact:
- project: babeltrace_{babeltrace_version}_build/arch=x86-64,build=std,conf=python-bindings
+ project: babeltrace_{babeltrace_version}_build/arch=amd64,build=std,conf=python-bindings
which-build: last-successful
stable: false
filter: 'build/**'
- master
jobs:
- 'lttng-analyses_{version}_build':
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
babeltrace_version: !!python/tuple [stable-1.5, stable-2.0, master]
- 'lttng-analyses_{version}_pylint':
babeltrace_version: stable-1.5
jobs:
- 'lttng-ivc-{version}':
version: master
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
liburcu_version: !!python/tuple [master]
- 'lttng-ivc-{version}':
# Send only to maintainer
email_to: "joraj@efficios.com"
version: staging
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
liburcu_version: !!python/tuple [master]
- 'lttng-ivc-{version}-modules':
# Send only to maintainer
email_to: "joraj@efficios.com"
version: master
- arch: !!python/tuple [x86-64]
- slave: !!python/tuple [x86-64-standalone]
+ arch: !!python/tuple [amd64]
+ slave: !!python/tuple [amd64-standalone]
liburcu_version: !!python/tuple [master]
- job-template:
name: lttng-modules_{mversion}_coverity
defaults: lttng-modules
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
# Parametrized kernel and modules build jobs
- 'lttng-modules_PARAM_build':
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
- 'lttng-modules_PARAM_crossbuild':
cross_arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
properties:
- build-discarder:
- num-to-keep: 7
+ num-to-keep: 2
## Templates
- job-template:
name: lttng-scope_{version}_coverity
defaults: lttng-scope
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
- master
jobs:
- 'lttng-scope_{version}_build':
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [i386, amd64]
- 'lttng-scope_{version}_winbuild':
arch: !!python/tuple [win64]
- 'lttng-scope_{version}_macosxbuild':
wrappers:
- ansicolor
- timeout:
+ timeout: 10
fail: true
type: likely-stuck
- timestamps
- job-template:
name: lttng-tools_{version}_scan-build
defaults: lttng-tools
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
builders:
- copyartifact:
- project: liburcu_{urcuversion}_build/arch=x86-64,conf=std,build=std
+ project: liburcu_{urcuversion}_build/arch=amd64,conf=std,build=std
which-build: last-successful
stable: false
filter: 'build/**'
target: 'deps/liburcu'
do-not-fingerprint: true
- copyartifact:
- project: lttng-ust_{ustversion}_build/liburcu_version={urcuversion},arch=x86-64,conf=std,build=std
+ project: lttng-ust_{ustversion}_build/liburcu_version={urcuversion},arch=amd64,conf=std,build=std
which-build: last-successful
stable: false
filter: 'build/**'
- job-template:
name: lttng-tools_{version}_coverity
defaults: lttng-tools
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
builders:
- copyartifact:
- project: liburcu_{urcuversion}_build/arch=x86-64,conf=std,build=std
+ project: liburcu_{urcuversion}_build/arch=amd64,conf=std,build=std
which-build: last-successful
stable: false
filter: 'build/**'
target: 'deps/liburcu'
do-not-fingerprint: true
- copyartifact:
- project: lttng-ust_{ustversion}_build/liburcu_version={urcuversion},arch=x86-64,conf=std,build=std
+ project: lttng-ust_{ustversion}_build/liburcu_version={urcuversion},arch=amd64,conf=std,build=std
which-build: last-successful
stable: false
filter: 'build/**'
- job-template:
name: lttng-tools_{version}_pylint
defaults: lttng-tools
- node: 'x86-64'
+ node: 'amd64'
scm: []
builders:
- copyartifact:
- project: lttng-tools-{version}/arch=x86-64,build=std,conf=agents
+ project: lttng-tools-{version}/arch=amd64,build=std,conf=agents
which-build: last-successful
stable: false
filter: 'build/**'
buildtype: build
version: master
ustversion: master
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents, debug-rcu]
urcuversion: !!python/tuple [master]
buildtype: portbuild
version: master
ustversion: master
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [master]
- 'lttng-tools_{version}_long_regression':
buildtype: build
ustversion: master
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std]
conf: !!python/tuple [std]
urcuversion: !!python/tuple [master]
buildtype: build
version: stable-2.11
ustversion: stable-2.11
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents, debug-rcu]
urcuversion: !!python/tuple [stable-0.10]
buildtype: portbuild
version: stable-2.11
ustversion: stable-2.11
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.10]
buildtype: build
version: stable-2.10
ustversion: stable-2.10
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents, debug-rcu]
urcuversion: !!python/tuple [stable-0.9]
buildtype: portbuild
version: stable-2.10
ustversion: stable-2.10
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
buildtype: build
version: stable-2.9
ustversion: stable-2.9
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents, debug-rcu]
urcuversion: !!python/tuple [stable-0.9]
buildtype: portbuild
version: stable-2.9
ustversion: stable-2.9
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
buildtype: build
version: stable-2.8
ustversion: stable-2.8
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents, debug-rcu]
urcuversion: !!python/tuple [stable-0.9]
buildtype: portbuild
version: stable-2.8
ustversion: stable-2.8
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
buildtype: build
version: stable-2.7
ustversion: stable-2.7
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents, debug-rcu]
urcuversion: !!python/tuple [stable-0.9]
buildtype: build
version: master-staging
ustversion: master
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [master]
buildtype: build
version: stable-2.11-staging
ustversion: stable-2.11
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.10]
buildtype: build
version: stable-2.10-staging
ustversion: stable-2.10
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
buildtype: build
version: stable-2.9-staging
ustversion: stable-2.9
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
buildtype: build
version: stable-2.8-staging
ustversion: stable-2.8
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
buildtype: build
version: stable-2.7-staging
ustversion: stable-2.7
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, oot, dist]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
buildtype: portbuild
version: master-staging
ustversion: master
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [master]
buildtype: portbuild
version: stable-2.11-staging
ustversion: stable-2.11
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.10]
buildtype: portbuild
version: stable-2.10-staging
ustversion: stable-2.10
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
buildtype: portbuild
version: stable-2.9-staging
ustversion: stable-2.9
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
buildtype: portbuild
version: stable-2.8-staging
ustversion: stable-2.8
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
buildtype: portbuild
version: stable-2.7-staging
ustversion: stable-2.7
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, no-ust, agents]
urcuversion: !!python/tuple [stable-0.9]
defaults: lttng-ust-benchmarks
project-type: freestyle
- node: x86-64
+ node: amd64
builders:
- copyartifact:
- project: liburcu_master_build/arch=x86-64,build=std,conf=std
+ project: liburcu_master_build/arch=amd64,build=std,conf=std
which-build: last-successful
stable: false
filter: 'build/**'
target: 'deps/liburcu'
do-not-fingerprint: true
- copyartifact:
- project: babeltrace_{babeltrace_version}_build/arch=x86-64,build=std,conf=std
+ project: babeltrace_{babeltrace_version}_build/arch=amd64,build=std,conf=std
which-build: last-successful
stable: false
filter: 'build/**'
target: 'deps/babeltrace'
do-not-fingerprint: true
- copyartifact:
- project: lttng-tools_master_build/arch=x86-64,babeltrace_version={babeltrace_version},build=std,conf=agents,liburcu_version=master
+ project: lttng-tools_master_build/arch=amd64,babeltrace_version={babeltrace_version},build=std,conf=agents,liburcu_version=master,test_type=base
which-build: last-successful
stable: false
filter: 'build/**'
target: 'deps/lttng-tools'
do-not-fingerprint: true
- copyartifact:
- project: lttng-ust_master_build/arch=x86-64,build=std,conf=std,liburcu_version=master/
+ project: lttng-ust_master_build/arch=amd64,build=std,conf=std,liburcu_version=master/
which-build: last-successful
stable: false
filter: 'build/**'
type: user-defined
name: java_version
values:
- - 'java-8-openjdk'
+ - 'java-11-openjdk'
- axis:
type: user-defined
name: liburcu_version
- ansicolor
- inject:
properties-content: |
+ JAVA_HOME=/usr/lib/jvm/${{java_version}}-${{arch}}
LD_LIBRARY_PATH=${{WORKSPACE}}/deps/build/lib
PATH=${{WORKSPACE}}/deps/build/bin:${{PATH}}
LTTNG_UST_DEBUG=1
LTTNG_CONSUMERD32_BIN=${{WORKSPACE}}/deps/build/lib/lttng/libexec/lttng-consumerd
LTTNG_CONSUMERD64_BIN=${{WORKSPACE}}/deps/build/lib/lttng/libexec/lttng-consumerd
- - env-script:
- script-content:
- !include-raw-escape: scripts/lttng-ust-java-tests/set-java-home.sh
+ LTTNG_SESSION_CONFIG_XSD_PATH=${{WORKSPACE}}/deps/build/share/xml/lttng
builders:
- copyartifact:
target: 'deps'
do-not-fingerprint: true
- copyartifact:
- project: lttng-tools_${{lttng_tools_version}}_build/babeltrace_version={babeltrace_version},liburcu_version=${{liburcu_version}},arch=${{arch}},conf=agents,build=std
+ project: lttng-tools_${{lttng_tools_version}}_build/babeltrace_version={babeltrace_version},liburcu_version=${{liburcu_version}},arch=${{arch}},conf=agents,build=std,test_type=base
which-build: last-successful
stable: false
filter: 'build/**'
babeltrace_version: stable-1.5
jobs:
- 'lttng-ust-java-tests_{version}_build':
- arch: !!python/tuple [x86-32, x86-64]
- java_version: !!python/tuple [java-8-openjdk]
+ arch: !!python/tuple [amd64]
+ java_version: !!python/tuple [java-11-openjdk]
- job-template:
name: lttng-ust_{version}_scan-build
defaults: lttng-ust
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
builders:
- copyartifact:
- project: liburcu_master_build/arch=x86-64,conf=std,build=std
+ project: liburcu_master_build/arch=amd64,conf=std,build=std
which-build: last-successful
stable: false
filter: 'build/**'
- job-template:
name: lttng-ust_{version}_coverity
defaults: lttng-ust
- node: 'x86-64'
+ node: 'amd64'
triggers:
- pollscm:
builders:
- copyartifact:
- project: liburcu_master_build/arch=x86-64,conf=std,build=std
+ project: liburcu_master_build/arch=amd64,conf=std,build=std
which-build: last-successful
stable: false
filter: 'build/**'
- job-template:
name: lttng-ust_{version}_pylint
defaults: lttng-ust
- node: 'x86-64'
+ node: 'amd64'
scm: []
builders:
- copyartifact:
- project: lttng-ust-{version}/arch=x86-64,build=std,conf=agents
+ project: lttng-ust-{version}/arch=amd64,build=std,conf=agents
which-build: last-successful
stable: false
filter: 'build/**'
jobs:
- 'lttng-ust_{version}_{buildtype}':
buildtype: build
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, dist, oot, oot-dist]
conf: !!python/tuple [std, agents, debug-rcu]
liburcu_version: !!python/tuple [stable-0.8, stable-0.9, stable-0.10, master]
- 'lttng-ust_{version}_{buildtype}':
buildtype: portbuild
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, agents]
liburcu_version: !!python/tuple [stable-0.8, stable-0.9, stable-0.10, master]
- 'lttng-ust_{version}_{buildtype}':
buildtype: build
version: master
- arch: !!python/tuple [x86-32, x86-64]
+ arch: !!python/tuple [amd64]
build: !!python/tuple [std, dist, oot, oot-dist]
conf: !!python/tuple [std, agents, debug-rcu]
liburcu_version: !!python/tuple [master]
- 'lttng-ust_{version}_{buildtype}':
buildtype: portbuild
version: master
- arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+ arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, i386]
build: !!python/tuple [std]
conf: !!python/tuple [std, agents]
liburcu_version: !!python/tuple [master]
description: |
Runs baremetal kernel benchmarks over different combination of kernel and lttng configurations.
project-type: freestyle
- node: 'x86-64'
+ node: 'amd64'
<<: *system_tests_parameters_defaults
description: |
Runs root_regression and root_destructive_tests on a virtual machine over different combinations of kernel and lttng configurations.
project-type: freestyle
- node: 'x86-64'
+ node: 'amd64'
<<: *system_tests_parameters_defaults
properties:
description: |
Runs virtual machine fuzzing tests over different combination of kernel and lttng configurations.
project-type: freestyle
- node: 'x86-64'
+ node: 'amd64'
<<: *system_tests_parameters_defaults
properties:
description: |
Runs perf_regression tests on a baremetal machine over different combinations of kernel and lttng configurations.
project-type: freestyle
- node: 'x86-64'
+ node: 'amd64'
<<: *system_tests_parameters_defaults
description: |
Builds a Linux Kernel and LTTng Modules if necessary
concurrent: true
- node: 'x86-64'
+ node: 'amd64'
parameters:
- string:
+++ /dev/null
-#!/bin/sh -exu
-#
-# Copyright (C) 2015 - Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
-# Michael Jeanson <mjeanson@efficios.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# Kernel version compare functions
-verlte() {
- [ "$1" = "`printf '%s\n%s' $1 $2 | sort -V | head -n1`" ]
-}
-
-verlt() {
- [ "$1" = "$2" ] && return 1 || verlte $1 $2
-}
-
-vergte() {
- [ "$1" = "`printf '%s\n%s' $1 $2 | sort -V | tail -n1`" ]
-}
-
-vergt() {
- [ "$1" = "$2" ] && return 1 || vergte $1 $2
-}
-
-
-# Use all CPU cores
-NPROC=$(nproc)
-
-SRCDIR="${WORKSPACE}/src/latency-tracker"
-BUILDDIR="${WORKSPACE}/build"
-LNXSRCDIR="${WORKSPACE}/src/linux"
-LNXBINDIR="${WORKSPACE}/deps/linux/build"
-
-# Create build directory
-rm -rf "${BUILDDIR}"
-mkdir -p "${BUILDDIR}"
-
-# Enter source dir
-cd "${SRCDIR}"
-
-# Fix path to linux src in builddir Makefile
-sed -i "s#MAKEARGS := -C .*#MAKEARGS := -C ${LNXSRCDIR}#" "${LNXBINDIR}"/Makefile
-
-# Get kernel version from source tree
-cd "${LNXBINDIR}"
-KVERSION=$(make kernelversion)
-cd -
-
-# kernels 3.10 to 3.10.13 and 3.11 to 3.11.2 introduce a deadlock in the
-# timekeeping subsystem. We want those build to fail.
-if { vergte "$KVERSION" "3.10" && verlte "$KVERSION" "3.10.13"; } || \
- { vergte "$KVERSION" "3.11" && verlte "$KVERSION" "3.11.2"; }; then
-
- set +e
-
- # Build modules
- KERNELDIR="${LNXBINDIR}" make -j"${NPROC}" V=1
-
- # We expect this build to fail, if it doesn't, fail the job.
- if [ "$?" -eq 0 ]; then
- exit 1
- fi
-
- # We have to publish at least one file or the build will fail
- echo "This kernel is broken, there is a deadlock in the timekeeping subsystem." > "${BUILDDIR}/BROKEN.txt"
-
- set -e
-
-else # Regular build
-
- # Build modules
- KERNELDIR="${LNXBINDIR}" make -j"${NPROC}" V=1
-
- # Install modules to build dir
- KERNELDIR="${LNXBINDIR}" make INSTALL_MOD_PATH="${BUILDDIR}" modules_install
-fi
-
-# EOF
+++ /dev/null
-/**
- * Copyright (C) 2016-2017 - Michael Jeanson <mjeanson@efficios.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-import hudson.model.*
-import hudson.AbortException
-import hudson.console.HyperlinkNote
-import java.util.concurrent.CancellationException
-import org.eclipse.jgit.api.Git
-import org.eclipse.jgit.lib.Ref
-
-
-class InvalidKVersionException extends Exception {
- public InvalidKVersionException(String message) {
- super(message)
- }
-}
-
-class EmptyKVersionException extends Exception {
- public EmptyKVersionException(String message) {
- super(message)
- }
-}
-
-class RTKVersion implements Comparable<RTKVersion> {
-
- Integer major = 0
- Integer majorB = 0
- Integer minor = 0
- Integer patch = 0
- Integer rt = 0
-
- RTKVersion() {}
-
- RTKVersion(version) {
- this.parse(version)
- }
-
- static RTKVersion minKVersion() {
- return new RTKVersion("v0.0.0-rt0-rebase")
- }
-
- static RTKVersion maxKVersion() {
- return new RTKVersion("v" + Integer.MAX_VALUE + ".0.0-rt0-rebase")
- }
-
- static RTKVersion factory(version) {
- return new RTKVersion(version)
- }
-
- def parse(version) {
- this.major = 0
- this.majorB = 0
- this.minor = 0
- this.patch = 0
- this.rt = 0
-
- if (!version) {
- throw new EmptyKVersionException("Empty kernel version")
- }
-
- def match = version =~ /^v(\d+)\.(\d+)(\.(\d+))?(\.(\d+))?(-rt(\d+)-rebase)$/
- if (!match) {
- throw new InvalidKVersionException("Invalid kernel version: ${version}")
- }
-
- Integer offset = 0;
-
- // Major
- this.major = Integer.parseInt(match.group(1))
- if (this.major <= 2) {
- offset = 2
- this.majorB = Integer.parseInt(match.group(2))
- }
-
- // Minor
- if (match.group(2 + offset) != null) {
- this.minor = Integer.parseInt(match.group(2 + offset))
- }
-
- // Patch level
- if (match.group(4 + offset) != null) {
- this.patch = Integer.parseInt(match.group(4 + offset))
- }
-
- // RT
- this.rt = Integer.parseInt(match.group(8))
- }
-
- // Return true if both version are of the same stable branch
- Boolean isSameStable(RTKVersion o) {
- if (this.major != o.major) {
- return false
- }
- if (this.majorB != o.majorB) {
- return false
- }
- if (this.minor != o.minor) {
- return false
- }
-
- return true
- }
-
- @Override int compareTo(RTKVersion o) {
- if (this.major != o.major) {
- return Integer.compare(this.major, o.major)
- }
- if (this.majorB != o.majorB) {
- return Integer.compare(this.majorB, o.majorB)
- }
- if (this.minor != o.minor) {
- return Integer.compare(this.minor, o.minor)
- }
- if (this.patch != o.patch) {
- return Integer.compare(this.patch, o.patch)
- }
- if (this.rt != o.rt) {
- return Integer.compare(this.rt, o.rt)
- }
-
- // Same version
- return 0;
- }
-
- String toString() {
- String vString = "v${this.major}"
-
- if (this.majorB > 0) {
- vString = vString.concat(".${this.majorB}")
- }
-
- vString = vString.concat(".${this.minor}")
-
- if (this.patch > 0) {
- vString = vString.concat(".${this.patch}")
- }
-
- if (this.rt > 0) {
- vString = vString.concat("-rt${this.rt}-rebase")
- }
- return vString
- }
-}
-
-
-// Retrieve parameters of the current build
-def mversion = build.buildVariableResolver.resolve('mversion')
-def maxConcurrentBuild = build.buildVariableResolver.resolve('maxConcurrentBuild')
-def kgitrepo = build.buildVariableResolver.resolve('kgitrepo')
-def kverfloor_raw = build.buildVariableResolver.resolve('kverfloor')
-def kverceil_raw = build.buildVariableResolver.resolve('kverceil')
-def kverfilter = build.buildVariableResolver.resolve('kverfilter')
-def job = Hudson.instance.getJob(build.buildVariableResolver.resolve('kbuildjob'))
-def currentJobName = build.project.getFullDisplayName()
-
-
-// Get the out variable
-def config = new HashMap()
-def bindings = getBinding()
-config.putAll(bindings.getVariables())
-def out = config['out']
-
-
-// Get tags from git repository
-def refs = Git.lsRemoteRepository().setTags(true).setRemote(kgitrepo).call();
-
-// Get kernel versions to build
-def kversions = []
-def matchStrs = [
- ~/^refs\/tags\/(v[\d\.]+(-rt(\d+)-rebase))$/,
-]
-def blacklist = [
- 'v4.11.8-rt5-rebase',
- 'v4.11.9-rt6-rebase',
- 'v4.11.9-rt7-rebase',
- 'v4.11.12-rt8-rebase',
- 'v4.11.12-rt9-rebase',
- 'v4.11.12-rt10-rebase',
- 'v4.11.12-rt11-rebase',
- 'v4.11.12-rt12-rebase',
- 'v4.11.12-rt13-rebase',
-]
-
-def kversionFactory = new RTKVersion()
-
-// Parse kernel versions
-def kverfloor = ""
-try {
- kverfloor = kversionFactory.factory(kverfloor_raw)
-} catch (EmptyKVersionException e) {
- kverfloor = kversionFactory.minKVersion()
-}
-
-def kverceil = ""
-try {
- kverceil = kversionFactory.factory(kverceil_raw)
-} catch (EmptyKVersionException e) {
- kverceil = kversionFactory.maxKVersion()
-}
-
-// Build a sorted list of versions to build
-for (ref in refs) {
- for (matchStr in matchStrs) {
- def match = ref.getName() =~ matchStr
- if (match && !blacklist.contains(match.group(1))) {
- def v = kversionFactory.factory(match.group(1))
-
- if ((v >= kverfloor) && (v < kverceil)) {
- kversions.add(v)
- }
- }
- }
-}
-
-kversions.sort()
-
-switch (kverfilter) {
- case 'stable-head':
- // Keep only the head of each stable branch
- println('Filter kernel versions to keep only the latest point release of each stable branch.')
-
- for (i = 0; i < kversions.size(); i++) {
- def curr = kversions[i]
- def next = i < kversions.size() - 1 ? kversions[i + 1] : null
-
- if (next != null) {
- if (curr.isSameStable(next)) {
- kversions.remove(i)
- i--
- }
- }
- }
- break
-
- default:
- // No filtering of kernel versions
- println('No kernel versions filtering selected.')
- break
-}
-
-
-println "Building the following kernel versions:"
-for (k in kversions) {
- println k
-}
-
-// Debug: Stop build here
-//throw new InterruptedException()
-
-def joburl = HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName)
-
-def allBuilds = []
-def ongoingBuild = []
-def failedRuns = []
-def isFailed = false
-def similarJobQueued = 0;
-
-// Loop while we have kernel versions remaining or jobs running
-while ( kversions.size() != 0 || ongoingBuild.size() != 0 ) {
-
- if(ongoingBuild.size() < maxConcurrentBuild.toInteger() && kversions.size() != 0) {
- def kversion = kversions.pop()
- def job_params = [
- new StringParameterValue('mversion', mversion),
- new StringParameterValue('ktag', kversion.toString()),
- new StringParameterValue('kgitrepo', kgitrepo),
- ]
-
- // Launch the parametrized build
- def param_build = job.scheduleBuild2(0, new Cause.UpstreamCause(build), new ParametersAction(job_params))
- println "triggering ${joburl} for the ${mversion} branch on kernel ${kversion}"
-
- // Add it to the ongoing build queue
- ongoingBuild.push(param_build)
-
- } else {
-
- println "Waiting... Queued: " + kversions.size() + " Running: " + ongoingBuild.size()
- try {
- Thread.sleep(10000)
- } catch(e) {
- if (e in InterruptedException) {
- build.setResult(hudson.model.Result.ABORTED)
- throw new InterruptedException()
- } else {
- throw(e)
- }
- }
-
- // Abort job if a newer instance is queued
- similarJobQueued = Hudson.instance.queue.items.count{it.task.getFullDisplayName() == currentJobName}
- if ( similarJobQueued > 0 ) {
- build.setResult(hudson.model.Result.ABORTED)
- throw new InterruptedException()
- }
-
- def i = ongoingBuild.iterator()
- while ( i.hasNext() ) {
- currentBuild = i.next()
- if ( currentBuild.isCancelled() || currentBuild.isDone() ) {
- // Remove from queue
- i.remove()
-
- // Print results
- def matrixParent = currentBuild.get()
- allBuilds.add(matrixParent)
- def kernelStr = matrixParent.buildVariableResolver.resolve("ktag")
- println "${matrixParent.fullDisplayName} (${kernelStr}) completed with status ${matrixParent.result}"
-
- // Process child runs of matrixBuild
- def childRuns = matrixParent.getRuns()
- for ( childRun in childRuns ) {
- println "\t${childRun.fullDisplayName} (${kernelStr}) completed with status ${childRun.result}"
- if (childRun.result != Result.SUCCESS) {
- failedRuns.add(childRun)
- isFailed = true
- }
- }
- }
- }
- }
-}
-
-// Get log of failed runs
-for (failedRun in failedRuns) {
- println "---START---"
- failedRun.writeWholeLogTo(out)
- println "---END---"
-}
-
-println "---Build report---"
-for (b in allBuilds) {
- def kernelStr = b.buildVariableResolver.resolve("ktag")
- println "${b.fullDisplayName} (${kernelStr}) completed with status ${b.result}"
- // Cleanup builds
- try {
- b.delete()
- } catch (all) {}
-}
-
-// Mark this build failed if any child build has failed
-if (isFailed) {
- build.setResult(hudson.model.Result.FAILURE)
-}
-
-// EOF
+++ /dev/null
-/**
- * Copyright (C) 2016-2017 - Michael Jeanson <mjeanson@efficios.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-import hudson.model.*
-import hudson.AbortException
-import hudson.console.HyperlinkNote
-import java.util.concurrent.CancellationException
-import org.eclipse.jgit.api.Git
-import org.eclipse.jgit.lib.Ref
-
-
-class InvalidKVersionException extends Exception {
- public InvalidKVersionException(String message) {
- super(message)
- }
-}
-
-class EmptyKVersionException extends Exception {
- public EmptyKVersionException(String message) {
- super(message)
- }
-}
-
-class VanillaKVersion implements Comparable<VanillaKVersion> {
-
- Integer major = 0
- Integer majorB = 0
- Integer minor = 0
- Integer patch = 0
- Integer rc = Integer.MAX_VALUE
-
- VanillaKVersion() {}
-
- VanillaKVersion(version) {
- this.parse(version)
- }
-
- static VanillaKVersion minKVersion() {
- return new VanillaKVersion("v0.0.0")
- }
-
- static VanillaKVersion maxKVersion() {
- return new VanillaKVersion("v" + Integer.MAX_VALUE + ".0.0")
- }
-
- static VanillaKVersion factory(version) {
- return new VanillaKVersion(version)
- }
-
- def parse(version) {
- this.major = 0
- this.majorB = 0
- this.minor = 0
- this.patch = 0
- this.rc = Integer.MAX_VALUE
-
- if (!version) {
- throw new EmptyKVersionException("Empty kernel version")
- }
-
- def match = version =~ /^v(\d+)\.(\d+)(\.(\d+))?(\.(\d+))?(-rc(\d+))?$/
- if (!match) {
- throw new InvalidKVersionException("Invalid kernel version: ${version}")
- }
-
- Integer offset = 0;
-
- // Major
- this.major = Integer.parseInt(match.group(1))
- if (this.major <= 2) {
- offset = 2
- this.majorB = Integer.parseInt(match.group(2))
- }
-
- // Minor
- if (match.group(2 + offset) != null) {
- this.minor = Integer.parseInt(match.group(2 + offset))
- }
-
- // Patch level
- if (match.group(4 + offset) != null) {
- this.patch = Integer.parseInt(match.group(4 + offset))
- }
-
- // RC
- if (match.group(8) != null) {
- this.rc = Integer.parseInt(match.group(8))
- }
- }
-
- // Return true if this version is a release candidate
- Boolean isRC() {
- return this.rc != Integer.MAX_VALUE
- }
-
- // Return true if both version are of the same stable branch
- Boolean isSameStable(VanillaKVersion o) {
- if (this.major != o.major) {
- return false
- }
- if (this.majorB != o.majorB) {
- return false
- }
- if (this.minor != o.minor) {
- return false
- }
-
- return true
- }
-
- @Override int compareTo(VanillaKVersion o) {
- if (this.major != o.major) {
- return Integer.compare(this.major, o.major)
- }
- if (this.majorB != o.majorB) {
- return Integer.compare(this.majorB, o.majorB)
- }
- if (this.minor != o.minor) {
- return Integer.compare(this.minor, o.minor)
- }
- if (this.patch != o.patch) {
- return Integer.compare(this.patch, o.patch)
- }
- if (this.rc != o.rc) {
- return Integer.compare(this.rc, o.rc)
- }
-
- // Same version
- return 0;
- }
-
- String toString() {
- String vString = "v${this.major}"
-
- if (this.majorB > 0) {
- vString = vString.concat(".${this.majorB}")
- }
-
- vString = vString.concat(".${this.minor}")
-
- if (this.patch > 0) {
- vString = vString.concat(".${this.patch}")
- }
-
- if (this.rc > 0 && this.rc < Integer.MAX_VALUE) {
- vString = vString.concat("-rc${this.rc}")
- }
- return vString
- }
-}
-
-class UbuntuKVersion implements Comparable<UbuntuKVersion> {
-
- Integer major = 0
- Integer minor = 0
- Integer patch = 0
- Integer umajor = 0
- Integer uminor = 0
- String suffix = ""
- Boolean isLTS = false
-
- UbuntuKVersion() {}
-
- UbuntuKVersion(version) {
- this.parse(version)
- }
-
- static UbuntuKVersion minKVersion() {
- return new UbuntuKVersion("Ubuntu-lts-0.0.0-0.0")
- }
-
- static UbuntuKVersion maxKVersion() {
- return new UbuntuKVersion("Ubuntu-" + Integer.MAX_VALUE + ".0.0-0.0")
- }
-
- static UbuntuKVersion factory(version) {
- return new UbuntuKVersion(version)
- }
-
- def parse(version) {
- this.major = 0
- this.minor = 0
- this.patch = 0
- this.umajor = 0
- this.uminor = 0
- this.suffix = "";
- this.isLTS = false
-
- if (!version) {
- throw new EmptyKVersionException("Empty kernel version")
- }
-
- //'Ubuntu-lts-4.8.0-27.29_16.04.1',
- //'Ubuntu-4.4.0-70.91',
- def match = version =~ /^Ubuntu-(lts-)??(\d+)\.(\d+)\.(\d+)-(\d+)\.(\d+)(.*)??$/
- if (!match) {
- throw new InvalidKVersionException("Invalid kernel version: ${version}")
- }
-
- this.isLTS = match.group(1) != null
-
- // Major
- this.major = Integer.parseInt(match.group(2))
-
- // Minor
- this.minor = Integer.parseInt(match.group(3))
-
- // Patch level
- this.patch = Integer.parseInt(match.group(4))
-
- // Ubuntu major
- this.umajor = Integer.parseInt(match.group(5))
-
- // Ubuntu minor
- this.uminor = Integer.parseInt(match.group(6))
-
- if (match.group(7) != null) {
- this.suffix = match.group(7)
- }
- }
-
- // Return true if this version is a release candidate
- Boolean isRC() {
- return false
- }
-
- // Return true if both version are of the same stable branch
- Boolean isSameStable(UbuntuKVersion o) {
- if (this.isLTS != o.isLTS) {
- return false
- }
- if (this.major != o.major) {
- return false
- }
- if (this.minor != o.minor) {
- return false
- }
- if (this.patch != o.patch) {
- return false
- }
-
- return true
- }
-
- @Override int compareTo(UbuntuKVersion o) {
- if (this.major != o.major) {
- return Integer.compare(this.major, o.major)
- }
- if (this.minor != o.minor) {
- return Integer.compare(this.minor, o.minor)
- }
- if (this.patch != o.patch) {
- return Integer.compare(this.patch, o.patch)
- }
- if (this.umajor != o.umajor) {
- return Integer.compare(this.umajor, o.umajor)
- }
- if (this.uminor != o.uminor) {
- return Integer.compare(this.uminor, o.uminor)
- }
- if (this.isLTS != o.isLTS) {
- if (o.isLTS) {
- return 1
- } else {
- return -1
- }
- }
-
- // Same version
- return 0;
- }
-
- String toString() {
- String vString = "Ubuntu-"
-
- if (this.isLTS) {
- vString = vString.concat("lts-")
- }
-
- vString = vString.concat("${this.major}.${this.minor}.${this.patch}-${this.umajor}.${this.uminor}${this.suffix}")
-
- return vString
- }
-}
-
-
-// Retrieve parameters of the current build
-def mversion = build.buildVariableResolver.resolve('mversion')
-def maxConcurrentBuild = build.buildVariableResolver.resolve('maxConcurrentBuild')
-def kgitrepo = build.buildVariableResolver.resolve('kgitrepo')
-def kverfloor_raw = build.buildVariableResolver.resolve('kverfloor')
-def kverceil_raw = build.buildVariableResolver.resolve('kverceil')
-def kverfilter = build.buildVariableResolver.resolve('kverfilter')
-def uversion = build.buildVariableResolver.resolve('uversion')
-def job = Hudson.instance.getJob(build.buildVariableResolver.resolve('kbuildjob'))
-def currentJobName = build.project.getFullDisplayName()
-
-
-// Get the out variable
-def config = new HashMap()
-def bindings = getBinding()
-config.putAll(bindings.getVariables())
-def out = config['out']
-
-
-// Get tags from git repository
-def refs = Git.lsRemoteRepository().setTags(true).setRemote(kgitrepo).call();
-
-// Get kernel versions to build
-def kversions = []
-def kversionsRC = []
-def matchStrs = []
-def blacklist = []
-def kversionFactory = ""
-
-if (uversion != null) {
- kversionFactory = new UbuntuKVersion()
- switch (uversion) {
- case 'xenial':
- matchStrs = [
- ~/^refs\/tags\/(Ubuntu-4\.4\.0-\d{1,3}?\.[\d]+)$/,
- ~/^refs\/tags\/(Ubuntu-lts-4\.8\.0-.*_16\.04\.\d+)$/,
- ~/^refs\/tags\/(Ubuntu-lts-4\.10\.0-.*_16\.04\.\d+)$/,
- ]
-
- blacklist = [
- 'Ubuntu-lts-4.10.0-7.9_16.04.1',
- ]
- break
-
- case 'trusty':
- matchStrs = [
- ~/^refs\/tags\/(Ubuntu-3\.13\.0-[\d\.]+)$/,
- ~/^refs\/tags\/(Ubuntu-lts-.*_14\.04\.\d+)$/,
- ]
- break
-
- default:
- println 'Unsupported Ubuntu version: ${uversion}'
- throw new InterruptedException()
- break
- }
-} else {
- // Vanilla
- kversionFactory = new VanillaKVersion()
- matchStrs = [
- ~/^refs\/tags\/(v[\d\.]+(-rc(\d+))?)$/,
- ]
-}
-
-// Parse kernel versions
-def kverfloor = ""
-try {
- kverfloor = kversionFactory.factory(kverfloor_raw)
-} catch (EmptyKVersionException e) {
- kverfloor = kversionFactory.minKVersion()
-}
-
-def kverceil = ""
-try {
- kverceil = kversionFactory.factory(kverceil_raw)
-} catch (EmptyKVersionException e) {
- kverceil = kversionFactory.maxKVersion()
-}
-
-// Build a sorted list of versions to build
-for (ref in refs) {
- for (matchStr in matchStrs) {
- def match = ref.getName() =~ matchStr
- if (match && !blacklist.contains(match.group(1))) {
- def v = kversionFactory.factory(match.group(1))
-
- if ((v >= kverfloor) && (v < kverceil)) {
- if (v.isRC()) {
- kversionsRC.add(v)
- } else {
- kversions.add(v)
- }
- }
- }
- }
-}
-
-kversions.sort()
-kversionsRC.sort()
-
-switch (kverfilter) {
- case 'stable-head':
- // Keep only the head of each stable branch
- println('Filter kernel versions to keep only the latest point release of each stable branch.')
-
- for (i = 0; i < kversions.size(); i++) {
- def curr = kversions[i]
- def next = i < kversions.size() - 1 ? kversions[i + 1] : null
-
- if (next != null) {
- if (curr.isSameStable(next)) {
- kversions.remove(i)
- i--
- }
- }
- }
- break
-
- default:
- // No filtering of kernel versions
- println('No kernel versions filtering selected.')
- break
-}
-
-// If the last RC version is newer than the last stable, add it to the build list
-if (kversionsRC.size() > 0 && kversionsRC.last() > kversions.last()) {
- kversions.add(kversionsRC.last())
-}
-
-println "Building the following kernel versions:"
-for (k in kversions) {
- println k
-}
-
-// Debug: Stop build here
-//throw new InterruptedException()
-
-def joburl = HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName)
-
-def allBuilds = []
-def ongoingBuild = []
-def failedRuns = []
-def isFailed = false
-def similarJobQueued = 0;
-
-// Loop while we have kernel versions remaining or jobs running
-while ( kversions.size() != 0 || ongoingBuild.size() != 0 ) {
-
- if(ongoingBuild.size() < maxConcurrentBuild.toInteger() && kversions.size() != 0) {
- def kversion = kversions.pop()
- def job_params = [
- new StringParameterValue('mversion', mversion),
- new StringParameterValue('ktag', kversion.toString()),
- new StringParameterValue('kgitrepo', kgitrepo),
- ]
-
- // Launch the parametrized build
- def param_build = job.scheduleBuild2(0, new Cause.UpstreamCause(build), new ParametersAction(job_params))
- println "triggering ${joburl} for the ${mversion} branch on kernel ${kversion}"
-
- // Add it to the ongoing build queue
- ongoingBuild.push(param_build)
-
- } else {
-
- println "Waiting... Queued: " + kversions.size() + " Running: " + ongoingBuild.size()
- try {
- Thread.sleep(10000)
- } catch(e) {
- if (e in InterruptedException) {
- build.setResult(hudson.model.Result.ABORTED)
- throw new InterruptedException()
- } else {
- throw(e)
- }
- }
-
- // Abort job if a newer instance is queued
- similarJobQueued = Hudson.instance.queue.items.count{it.task.getFullDisplayName() == currentJobName}
- if ( similarJobQueued > 0 ) {
- build.setResult(hudson.model.Result.ABORTED)
- throw new InterruptedException()
- }
-
- def i = ongoingBuild.iterator()
- while ( i.hasNext() ) {
- currentBuild = i.next()
- if ( currentBuild.isCancelled() || currentBuild.isDone() ) {
- // Remove from queue
- i.remove()
-
- // Print results
- def matrixParent = currentBuild.get()
- allBuilds.add(matrixParent)
- def kernelStr = matrixParent.buildVariableResolver.resolve("ktag")
- println "${matrixParent.fullDisplayName} (${kernelStr}) completed with status ${matrixParent.result}"
-
- // Process child runs of matrixBuild
- def childRuns = matrixParent.getRuns()
- for ( childRun in childRuns ) {
- println "\t${childRun.fullDisplayName} (${kernelStr}) completed with status ${childRun.result}"
- if (childRun.result != Result.SUCCESS) {
- failedRuns.add(childRun)
- isFailed = true
- }
- }
- }
- }
- }
-}
-
-// Get log of failed runs
-for (failedRun in failedRuns) {
- println "---START---"
- failedRun.writeWholeLogTo(out)
- println "---END---"
-}
-
-println "---Build report---"
-for (b in allBuilds) {
- def kernelStr = b.buildVariableResolver.resolve("ktag")
- println "${b.fullDisplayName} (${kernelStr}) completed with status ${b.result}"
- // Cleanup builds
- try {
- b.delete()
- } catch (all) {}
-}
-
-// Mark this build failed if any child build has failed
-if (isFailed) {
- build.setResult(hudson.model.Result.FAILURE)
-}
-
-// EOF
+++ /dev/null
-#!/bin/sh -exu
-#
-# Copyright (C) 2016 - Michael Jeanson <mjeanson@efficios.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# Parameters
-arch=${arch:-}
-cross_arch=${cross_arch:-}
-ktag=${ktag:-}
-
-
-## FUNCTIONS ##
-
-# Kernel version compare functions
-verlte() {
- [ "$1" = "$(printf '%s\n%s' "$1" "$2" | sort -V | head -n1)" ]
-}
-
-verlt() {
- [ "$1" = "$2" ] && return 1 || verlte "$1" "$2"
-}
-
-vergte() {
- [ "$1" = "$(printf '%s\n%s' "$1" "$2" | sort -V | tail -n1)" ]
-}
-
-vergt() {
- [ "$1" = "$2" ] && return 1 || vergte "$1" "$2"
-}
-
-
-prepare_lnx_sources() {
-
- outdir=$1
-
- if [ "$outdir" = "." ]; then
- koutput=""
- else
- koutput="O=${outdir}"
- fi
-
- # Generate kernel configuration
- case "$ktag" in
- Ubuntu*)
- if [ "${cross_arch}" = "powerpc" ]; then
- if vergte "$KVERSION" "4.10"; then
- echo "Ubuntu removed big endian powerpc configuration from kernel >= 4.10. Don't try to build it."
- exit 0
- fi
- fi
- fakeroot debian/rules clean
- fakeroot debian/rules genconfigs
- cp CONFIGS/"${ubuntu_config}" "${outdir}"/.config
- ;;
- *)
- # Que sera sera
- make "${vanilla_config}" CC="$CC" ${koutput}
- ;;
- esac
-
- # GCC 4.8
- sed -i "s/CONFIG_CC_STACKPROTECTOR_STRONG=y/# CONFIG_CC_STACKPROTECTOR_STRONG is not set/g" "${outdir}"/.config
-
- # Don't try to sign modules
- sed -i "s/CONFIG_MODULE_SIG=y/# CONFIG_MODULE_SIG is not set/g" "${outdir}"/.config
-
- # Disable kernel stack frame correctness validation, introduced in 4.6.0 and currently fails
- sed -i "s/CONFIG_STACK_VALIDATION=y/# CONFIG_STACK_VALIDATION is not set/g" "${outdir}"/.config
-
- # Set required options
- {
- echo "CONFIG_KPROBES=y";
- echo "CONFIG_FTRACE=y";
- echo "CONFIG_BLK_DEV_IO_TRACE=y";
- echo "CONFIG_TRACEPOINTS=y";
- echo "CONFIG_KALLSYMS_ALL=y";
- } >> "${outdir}"/.config
-
-
- make "$oldconf_target" CC="$CC" ${koutput}
- make modules_prepare CC="$CC" ${koutput}
-
- # Debug
- #cat "${outdir}"/.config
-
- # On powerpc this object is required to link modules
- if [ "${karch}" = "powerpc" ]; then
- make arch/powerpc/lib/crtsavres.o CC="$CC" ${koutput}
- fi
-
- # On arm64 this object is required to build with ftrace support
- if [ "${karch}" = "arm64" ]; then
- if vergte "$KVERSION" "4.13-rc1"; then
- make arch/arm64/kernel/ftrace-mod.o CC="$CC" ${koutput}
- fi
- fi
-
- # Version specific tasks
- case "$ktag" in
- Ubuntu*)
- # Add Ubuntu ABI number to kernel headers, this is normally done by the packaging code
- ABINUM="$(echo "$ktag" | grep -P -o 'Ubuntu-(lts-)?.*-\K\d+(?=\..*)')"
- echo "#define UTS_UBUNTU_RELEASE_ABI $ABINUM" >> "${outdir}"/include/generated/utsrelease.h
- ;;
- esac
-}
-
-
-
-build_modules() {
-
- kdir="$1"
- bdir="$2"
-
- # Enter latency-tracker source dir
- cd "${LTTSRCDIR}"
-
- # kernels 3.10 to 3.10.13 and 3.11 to 3.11.2 introduce a deadlock in the
- # timekeeping subsystem. We want those build to fail.
- if { vergte "$KVERSION" "3.10" && verlte "$KVERSION" "3.10.13"; } || \
- { vergte "$KVERSION" "3.11" && verlte "$KVERSION" "3.11.2"; }; then
-
- set +e
-
- # Build modules
- KERNELDIR="${kdir}" make -j"${NPROC}" V=1 CC="$CC"
-
- # We expect this build to fail, if it doesn't, fail the job.
- if [ "$?" -eq 0 ]; then
- echo "This build should have failed."
- exit 1
- fi
-
- # We have to publish at least one file or the build will fail
- echo "This kernel is broken, there is a deadlock in the timekeeping subsystem." > "${bdir}/BROKEN.txt.ko"
-
- set -e
-
- KERNELDIR="${kdir}" make clean CC="$CC"
-
- else # Regular build
-
- # Build modules against full kernel sources
- KERNELDIR="${kdir}" make -j"${NPROC}" V=1 CC="$CC"
-
- # Install modules to build dir
- KERNELDIR="${kdir}" make INSTALL_MOD_PATH="${bdir}" modules_install CC="$CC"
-
- # Clean build dir
- KERNELDIR="${kdir}" make clean CC="$CC"
- fi
-}
-
-
-## MAIN ##
-
-# Use all CPU cores
-NPROC=$(nproc)
-
-LTTSRCDIR="${WORKSPACE}/src/latency-tracker"
-LNXSRCDIR="${WORKSPACE}/src/linux"
-
-LNXBUILDDIR="${WORKSPACE}/build/linux"
-LNXHDRDIR="${WORKSPACE}/build/linux-headers"
-
-LTTBUILDKSRCDIR="${WORKSPACE}/build/latency-tracker-ksrc"
-LTTBUILDKHDRDIR="${WORKSPACE}/build/latency-tracker-khdr"
-
-
-# Setup cross compile env if available
-if [ "x${cross_arch}" != "x" ]; then
-
- case "$cross_arch" in
- "armhf")
- karch="arm"
- cross_compile="arm-linux-gnueabihf-"
- vanilla_config="allyesconfig"
- ubuntu_config="armhf-config.flavour.generic"
- ;;
-
- "arm64")
- karch="arm64"
- cross_compile="aarch64-linux-gnu-"
- vanilla_config="allyesconfig"
- ubuntu_config="arm64-config.flavour.generic"
- ;;
-
- "powerpc")
- karch="powerpc"
- cross_compile="powerpc-linux-gnu-"
- vanilla_config="ppc44x_defconfig"
- ubuntu_config="powerpc-config.flavour.powerpc-smp"
- ;;
-
- "ppc64el")
- karch="powerpc"
- cross_compile="powerpc64le-linux-gnu-"
- vanilla_config="pseries_le_defconfig"
- ubuntu_config="ppc64el-config.flavour.generic"
- ;;
-
- *)
- echo "Unsupported cross arch $cross_arch"
- exit 1
- ;;
- esac
-
- # Use gcc 4.9, older kernel don't build with gcc 5
- CC="${cross_compile}gcc-4.9"
-
- # Export variables used by Kbuild for cross compilation
- export ARCH="${karch}"
- export CROSS_COMPILE="${cross_compile}"
-
- oldconf_target="olddefconfig"
-
-# Set arch specific values if we are not cross compiling
-elif [ "x${arch}" != "x" ]; then
-
- case "$arch" in
- "x86-32")
- karch="x86"
- vanilla_config="allyesconfig"
- ubuntu_config="i386-config.flavour.generic"
- ;;
-
- "x86-64")
- karch="x86"
- vanilla_config="allyesconfig"
- ubuntu_config="amd64-config.flavour.generic"
- ;;
-
- "armhf")
- karch="arm"
- vanilla_config="allyesconfig"
- ubuntu_config="armhf-config.flavour.generic"
- ;;
-
- "arm64")
- karch="arm64"
- vanilla_config="allyesconfig"
- ubuntu_config="arm64-config.flavour.generic"
- ;;
-
- "powerpc")
- karch="powerpc"
- vanilla_config="allyesconfig"
- ubuntu_config="powerpc-config.flavour.powerpc-smp"
- ;;
-
- "ppc64el")
- karch="powerpc"
- vanilla_config="allyesconfig"
- ubuntu_config="ppc64el-config.flavour.generic"
- ;;
-
- *)
- echo "Unsupported arch $arch"
- exit 1
- ;;
- esac
-
- # Use gcc 4.9, older kernel don't build with gcc 5
- CC=gcc-4.9
-
- oldconf_target="silentoldconfig"
-
-else
- echo "Not arch or cross_arch specified"
- exit 1
-fi
-
-
-
-
-# Create build directories
-mkdir -p "${LNXBUILDDIR}" "${LNXHDRDIR}" "${LTTBUILDKSRCDIR}" "${LTTBUILDKHDRDIR}"
-
-
-
-## PREPARE DISTRO STYLE KERNEL HEADERS / DEVEL
-
-# Enter linux source dir
-cd "${LNXSRCDIR}"
-
-# Get kernel version from source tree
-KVERSION=$(make kernelversion)
-
-prepare_lnx_sources "."
-
-# For RT kernels, copy version file
-if [ -s localversion-rt ]; then
- cp -a localversion-rt "${LNXHDRDIR}"
-fi
-
-# Copy all Makefile related stuff
-find . -path './include/*' -prune \
- -o -path './scripts/*' -prune -o -type f \
- \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \
- -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) \
- -print | cpio -pd --preserve-modification-time "${LNXHDRDIR}"
-
-# Copy base scripts and include dirs
-cp -a scripts include "${LNXHDRDIR}"
-
-# Copy arch includes
-(find arch -name include -type d -print0 | \
- xargs -0 -n1 -i: find : -type f) | \
- cpio -pd --preserve-modification-time "${LNXHDRDIR}"
-
-# Copy arch scripts
-(find arch -name scripts -type d -print0 | \
- xargs -0 -n1 -i: find : -type f) | \
- cpio -pd --preserve-modification-time "${LNXHDRDIR}"
-
-# Cleanup scripts
-rm -f "${LNXHDRDIR}/scripts/*.o"
-rm -f "${LNXHDRDIR}/scripts/*/*.o"
-
-# On powerpc this object is required to link modules
-if [ "${karch}" = "powerpc" ]; then
- cp -a --parents arch/powerpc/lib/crtsavres.[So] "${LNXHDRDIR}/"
-fi
-
-# On arm64 this object is required to build with ftrace support
-if [ "${karch}" = "arm64" ]; then
- if vergte "$KVERSION" "4.13-rc1"; then
- cp -a --parents arch/arm64/kernel/ftrace-mod.[So] "${LNXHDRDIR}/"
- fi
-fi
-
-# Copy modules related stuff, if available
-if [ -s Module.symvers ]; then
- cp Module.symvers "${LNXHDRDIR}"
-fi
-
-if [ -s System.map ]; then
- cp System.map "${LNXHDRDIR}"
-fi
-
-if [ -s Module.markers ]; then
- cp Module.markers "${LNXHDRDIR}"
-fi
-
-# Copy config file
-cp .config "${LNXHDRDIR}"
-
-# Make sure the Makefile and version.h have a matching timestamp so that
-# external modules can be built
-if [ -s "${LNXHDRDIR}/include/generated/uapi/linux/version.h" ]; then
- touch -r "${LNXHDRDIR}/Makefile" "${LNXHDRDIR}/include/generated/uapi/linux/version.h"
-elif [ -s "${LNXHDRDIR}/include/linux/version.h" ]; then
- touch -r "${LNXHDRDIR}/Makefile" "${LNXHDRDIR}/include/linux/version.h"
-else
- echo "Missing version.h"
- exit 1
-fi
-touch -r "${LNXHDRDIR}/.config" "${LNXHDRDIR}/include/generated/autoconf.h"
-
-# Copy .config to include/config/auto.conf so "make prepare" is unnecessary.
-cp "${LNXHDRDIR}/.config" "${LNXHDRDIR}/include/config/auto.conf"
-
-
-
-
-## PREPARE FULL LINUX SOURCE TREE
-
-# Enter linux source dir
-cd "${LNXSRCDIR}"
-
-# Make sure linux source dir is clean
-git clean -xdf
-
-prepare_lnx_sources "${LNXBUILDDIR}"
-
-
-## BUILD modules
-
-# Build modules against full kernel sources
-build_modules "${LNXBUILDDIR}" "${LTTBUILDKSRCDIR}"
-
-# Build modules against kernel headers
-build_modules "${LNXHDRDIR}" "${LTTBUILDKHDRDIR}"
-
-# Make sure modules were built
-tree "${LTTBUILDKSRCDIR}"
-if [ "x$(find "${LTTBUILDKSRCDIR}" -name '*.ko*' -printf yes -quit)" != "xyes" ]; then
- echo "No modules built!"
- exit 1
-fi
-
-tree "${LTTBUILDKHDRDIR}"
-if [ "x$(find "${LTTBUILDKHDRDIR}" -name '*.ko*' -printf yes -quit)" != "xyes" ]; then
- echo "No modules built!"
- exit 1
-fi
-
-# EOF
cp CONFIGS/"${ubuntu_config}" .config
;;
*)
- # Force 32bit build on x86-32, default is 64bit
- if [ "$arch" = "x86-32" ]; then
+ # Force 32bit build on i386, default is 64bit
+ if [ "$arch" = "i386" ]; then
export ARCH="i386"
fi
elif [ "x${arch}" != "x" ]; then
case "$arch" in
- "x86-32")
+ "i386")
karch="x86"
vanilla_config="allyesconfig"
ubuntu_config="i386-config.flavour.generic"
;;
- "x86-64")
+ "amd64")
karch="x86"
vanilla_config="allyesconfig"
ubuntu_config="amd64-config.flavour.generic"
+++ /dev/null
-# Set the JAVA_HOME to use according to the configuration
-
-case "$arch" in
- "x86-32")
- ARCH_SUFFIX="i386"
- ;;
- "x86-64")
- ARCH_SUFFIX="amd64"
- ;;
- "*")
- ARCH_SUFFIX="$arch"
-esac
-
-echo "JAVA_HOME=/usr/lib/jvm/${java_version}-$ARCH_SUFFIX/jre"