Started by user Ivan J. Running as Ivan J. [EnvInject] - Loading node environment variables. Building on master in workspace /var/lib/jenkins/workspace/glib-source [WS-CLEANUP] Deleting project workspace... [WS-CLEANUP] Deferred wipeout is used... [WS-CLEANUP] Done No credentials specified Cloning the remote Git repository Cloning repository https://github.com/maemo-leste/glib > git init /var/lib/jenkins/workspace/glib-source/source # timeout=10 Fetching upstream changes from https://github.com/maemo-leste/glib > git --version # timeout=10 > git fetch --tags --progress -- https://github.com/maemo-leste/glib +refs/heads/*:refs/remotes/origin/* # timeout=120 > git config remote.origin.url https://github.com/maemo-leste/glib # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url https://github.com/maemo-leste/glib # timeout=10 Fetching upstream changes from https://github.com/maemo-leste/glib > git fetch --tags --progress -- https://github.com/maemo-leste/glib +refs/heads/*:refs/remotes/origin/* # timeout=120 > git rev-parse refs/remotes/origin/maemo/ascii-devel^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/maemo/ascii-devel^{commit} # timeout=10 Checking out Revision 0fb0d959346edac84e7ba24cdfa5caaaece3afdc (refs/remotes/origin/maemo/ascii-devel) > git config core.sparsecheckout # timeout=10 > git checkout -f 0fb0d959346edac84e7ba24cdfa5caaaece3afdc # timeout=10 Commit message: "Remove tests dir." > git rev-list --no-walk e0009093f7d5ec45d57df48a478e1dab203a9bf4 # timeout=10 [glib-source] $ /bin/sh -xe /tmp/jenkins4342876598229701442.sh + export PRE_DCH_HOOK=/var/lib/jenkins/jenkins-integration/dch_hook.sh + /usr/bin/generate-git-snapshot + set -e + set -u + '[' -r /etc/jenkins/debian_glue ']' + . /etc/jenkins/debian_glue ++ KEY_ID=4AA81E3E026EFE82E47D6901545FEC4E0927F6FD ++ MAIN_ARCHITECTURE=amd64 ++ DEFAULT_REPOSITORY=/srv/repository ++ USE_ORIG_VERSION=true ++ SKIP_DCH=true ++ DCH_OPTS='--multimaint-merge --ignore-branch' ++ UNRELEASEAD_APPEND_COMMIT=false ++ REPOSITORY_KEYRING=/var/lib/jenkins/.gnupg/keyring.gpg ++ case "$release" in ++ repo=leste ++ RELEASE_REPOSITORY=/srv/repository/leste ++ case "$distribution" in ++ MIRROR=http://pkgmaster.devuan.org/merged ++ SECURITY_MIRROR=http://pkgmaster.devuan.org/merged ++ SECURITY_FOLDER=ascii-security ++ REPOSITORY_EXTRA='deb http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free' ++ REPOSITORY_EXTRA='deb http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free' ++ REPOSITORY_EXTRA='deb http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb http://pkgmaster.devuan.org/merged ascii-security main contrib non-free' ++ REPOSITORY_EXTRA='deb http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb http://pkgmaster.devuan.org/merged ascii-security main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-security main contrib non-free' ++ REPOSITORY_EXTRA='deb http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb http://pkgmaster.devuan.org/merged ascii-security main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-security main contrib non-free,deb http://maedevu.maemo.org/leste ascii-devel main contrib non-free' ++ REPOSITORY_EXTRA='deb http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb http://pkgmaster.devuan.org/merged ascii-security main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-security main contrib non-free,deb http://maedevu.maemo.org/leste ascii-devel main contrib non-free,deb-src http://maedevu.maemo.org/leste ascii-devel main contrib non-free' ++ _mainrel=ascii ++ '[' ascii '!=' ascii-devel ']' ++ REPOSITORY_EXTRA='deb http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb http://pkgmaster.devuan.org/merged ascii-security main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-security main contrib non-free,deb http://maedevu.maemo.org/leste ascii-devel main contrib non-free,deb-src http://maedevu.maemo.org/leste ascii-devel main contrib non-free,deb http://maedevu.maemo.org/leste ascii main contrib non-free' ++ REPOSITORY_EXTRA='deb http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-updates main contrib non-free,deb http://pkgmaster.devuan.org/merged ascii-security main contrib non-free,deb-src http://pkgmaster.devuan.org/merged ascii-security main contrib non-free,deb http://maedevu.maemo.org/leste ascii-devel main contrib non-free,deb-src http://maedevu.maemo.org/leste ascii-devel main contrib non-free,deb http://maedevu.maemo.org/leste ascii main contrib non-free,deb-src http://maedevu.maemo.org/leste ascii main contrib non-free' ++ _mainrel=ascii-devel ++ '[' ascii-devel '!=' ascii-devel ']' ++ lima_jobs=mesa ++ n900_jobs='libmatchbox2-n900 hildon-desktop-n900' +++ echo /var/lib/jenkins/workspace/glib-source +++ awk -F/ '{print $6}' +++ sed 's/-binaries$//' ++ _curpkgname=glib-source ++ echo mesa ++ grep -qw glib-source ++ echo 'libmatchbox2-n900 hildon-desktop-n900' ++ grep -qw glib-source ++ REPOSITORY_EXTRA_KEYS=http://maedevu.maemo.org/testing-key.asc ++ USE_CCACHE=true + '[' -n '' ']' ++ hostname -f + DEBEMAIL='jenkins-debian-glue Autobuilder <jenkins@localhost>' + export DEBEMAIL + '[' -n '' ']' + SOURCE_DIRECTORY=source + '[' '!' -d source ']' + '[' -z 10 ']' + '[' -z 0fb0d959346edac84e7ba24cdfa5caaaece3afdc ']' ++ which gbp + '[' -x /usr/bin/gbp ']' + GBP_DCH='gbp dch' + GBP_BUILDPACKAGE='gbp buildpackage' ++ dpkg --list jenkins-debian-glue ++ awk '/^ii/ {print $3}' + JENKINS_DEBIAN_GLUE_VERSION=0.18.4.99+devuan2 + '[' -n 0.18.4.99+devuan2 ']' + echo '*** Running jenkins-debian-glue version 0.18.4.99+devuan2 ***' *** Running jenkins-debian-glue version 0.18.4.99+devuan2 *** + '[' -n '' -a -z '' ']' + echo '*** source package build phase ***' *** source package build phase *** + rm -f ./source rm: cannot remove './source': Is a directory + true + '[' -n '' ']' + cd source + git_cleanup + '[' -n '' ']' + echo '*** Cleaning git repository to make sure there are no modified files ***' *** Cleaning git repository to make sure there are no modified files *** + echo '*** Note: You can skip this step by setting SKIP_GIT_CLEANUP=true ***' *** Note: You can skip this step by setting SKIP_GIT_CLEANUP=true *** + git clean -fxd + git reset --hard HEAD HEAD is now at 0fb0d9593 Remove tests dir. + source_format_opts + '[' -f debian/source/format ']' ++ cat debian/source/format + local 'SRC_FORMAT=3.0 (quilt)' + case "$SRC_FORMAT" in + echo '*** Source format detected as 3.0 (quilt) ***' *** Source format detected as 3.0 (quilt) *** + DBP_EXTRA_OPTS=' --source-option=--unapply-patches' + identify_source_build_opts + DBP_OPTS= + '[' -r debian/source/format ']' + grep -q '^1\.0' debian/source/format + echo '*** Found dpkg source format != 1.0, nothing to do ****' *** Found dpkg source format != 1.0, nothing to do **** + return 0 + '[' '' '!=' true ']' + gbp_conf + '[' '' = true ']' + gbp_conf_files=(/etc/git-buildpackage/gbp.conf ~/.gbp.conf .gbp.conf debian/gbp.conf .git/gbp.conf) + UPSTREAM_BRANCH=upstream + DEBIAN_BRANCH=debian + PRISTINE_TAR=false + for gbp_conf_file in "${gbp_conf_files[@]}" + '[' -f /etc/git-buildpackage/gbp.conf ']' + local value ++ git config --file /etc/git-buildpackage/gbp.conf --get DEFAULT.upstream-branch ++ true + value= + '[' -n '' ']' ++ git config --file /etc/git-buildpackage/gbp.conf --get DEFAULT.debian-branch ++ true + value= + '[' -n '' ']' ++ git config --file /etc/git-buildpackage/gbp.conf --bool --get DEFAULT.pristine-tar ++ true + value= + '[' -n '' ']' + for gbp_conf_file in "${gbp_conf_files[@]}" + '[' -f /var/lib/jenkins/.gbp.conf ']' + for gbp_conf_file in "${gbp_conf_files[@]}" + '[' -f .gbp.conf ']' + for gbp_conf_file in "${gbp_conf_files[@]}" + '[' -f debian/gbp.conf ']' + local value ++ git config --file debian/gbp.conf --get DEFAULT.upstream-branch ++ true + value= + '[' -n '' ']' ++ git config --file debian/gbp.conf --get DEFAULT.debian-branch + value=maemo/ascii-devel + '[' -n maemo/ascii-devel ']' + DEBIAN_BRANCH=maemo/ascii-devel ++ git config --file debian/gbp.conf --bool --get DEFAULT.pristine-tar ++ true + value= + '[' -n '' ']' + for gbp_conf_file in "${gbp_conf_files[@]}" + '[' -f .git/gbp.conf ']' + create_local_branch upstream + '[' -n upstream ']' + local BRANCH=upstream + git branch -a + grep -q 'remotes/origin/upstream$' + echo 'NOTE: branch upstream does not exist, ignoring request to checkout therefore.' NOTE: branch upstream does not exist, ignoring request to checkout therefore. + create_local_branch maemo/ascii-devel + '[' -n maemo/ascii-devel ']' + local BRANCH=maemo/ascii-devel + git branch -a + grep -q 'remotes/origin/maemo/ascii-devel$' + git branch -D maemo/ascii-devel error: branch 'maemo/ascii-devel' not found. + true + git branch maemo/ascii-devel remotes/origin/maemo/ascii-devel Branch maemo/ascii-devel set up to track remote branch maemo/ascii-devel from origin. + '[' false = true ']' + branch_checkout + random_branch=jenkins-debian-glue-buildbranch8870 + '[' '' = true ']' + '[' -n '' ']' + '[' -n '' ']' + '[' -n '' ']' + echo 'Making sure that random_branch jenkins-debian-glue-buildbranch8870 does not exist' Making sure that random_branch jenkins-debian-glue-buildbranch8870 does not exist + git branch -D jenkins-debian-glue-buildbranch8870 error: branch 'jenkins-debian-glue-buildbranch8870' not found. + true + echo 'Checking out branch jenkins-debian-glue-buildbranch8870 based on commit 0fb0d959346edac84e7ba24cdfa5caaaece3afdc' Checking out branch jenkins-debian-glue-buildbranch8870 based on commit 0fb0d959346edac84e7ba24cdfa5caaaece3afdc + git checkout -b jenkins-debian-glue-buildbranch8870 0fb0d959346edac84e7ba24cdfa5caaaece3afdc Switched to a new branch 'jenkins-debian-glue-buildbranch8870' + '[' -n /var/lib/jenkins/jenkins-integration/dch_hook.sh ']' + echo '*** Found environment variable PRE_DCH_HOOK, set to /var/lib/jenkins/jenkins-integration/dch_hook.sh ***' *** Found environment variable PRE_DCH_HOOK, set to /var/lib/jenkins/jenkins-integration/dch_hook.sh *** + sh /var/lib/jenkins/jenkins-integration/dch_hook.sh *** buildnum == 1m7.1 *** *** Found previous rebuild. Incrementing build number *** + version_information + '[' -r debian/changelog ']' ++ dpkg-parsechangelog --count 1 ++ awk '/^Version/ {print $2}' + ORIG_VERSION=2.50.3-3+1m7.2 ++ dpkg-parsechangelog --count 1 ++ awk '/^Distribution/ {print $2}' + DISTRIBUTION=unstable + APPLY_VERSION_WORKAROUND=false + '[' true = true ']' + echo '*** USE_ORIG_VERSION is set to '\''true'\'', keeping original version [2.50.3-3+1m7.2] from changelog ***' *** USE_ORIG_VERSION is set to 'true', keeping original version [2.50.3-3+1m7.2] from changelog *** + VERSION_STRING=2.50.3-3+1m7.2 + '[' -n ascii-devel ']' + echo 'Distribution variable found. Adding distribution specific version.' Distribution variable found. Adding distribution specific version. + VERSION_STRING=2.50.3-3+1m7.2+ascii_devel + echo '*** Version string set to 2.50.3-3+1m7.2+ascii_devel ***' *** Version string set to 2.50.3-3+1m7.2+ascii_devel *** + dch_opts + '[' -n '--multimaint-merge --ignore-branch' ']' + echo 'Found environment variable DCH_OPTS, set to --multimaint-merge --ignore-branch' Found environment variable DCH_OPTS, set to --multimaint-merge --ignore-branch + DCH_COMBINED_OPTS='--multimaint-merge --ignore-branch' + '[' -n '' ']' + DCH_EXTRA_OPTS=--new-version=2.50.3-3+1m7.2+ascii_devel + '[' -n '' ']' + echo 'Using extra gbp dch options (--new-version=2.50.3-3+1m7.2+ascii_devel)' Using extra gbp dch options (--new-version=2.50.3-3+1m7.2+ascii_devel) + DCH_COMBINED_OPTS='--multimaint-merge --ignore-branch --new-version=2.50.3-3+1m7.2+ascii_devel' + '[' -n '' ']' + changelog_generation + '[' true = true ']' + echo '*** SKIP_DCH is set, not modifying debian/changelog therefore ***' *** SKIP_DCH is set, not modifying debian/changelog therefore *** + '[' '' = true ']' + gbp_opts + '[' -n '' ']' + GBP_OPTS=' -nc --git-force-create --git-ignore-new --git-ignore-branch -S -us -uc --git-verbose --git-builder=/bin/true --git-cleaner=/bin/true --git-export-dir= ' + echo 'Using git-buildpackage default options provided by jenkins-debian-glue' Using git-buildpackage default options provided by jenkins-debian-glue + gbp buildpackage -nc --git-force-create --git-ignore-new --git-ignore-branch -S -us -uc --git-verbose --git-builder=/bin/true --git-cleaner=/bin/true --git-export-dir= gbp:debug: ['git', 'rev-parse', '--show-cdup'] gbp:debug: ['git', 'rev-parse', '--is-bare-repository'] gbp:debug: ['git', 'rev-parse', '--git-dir'] gbp:debug: /bin/true [] [] gbp:debug: ['git', 'symbolic-ref', 'HEAD'] gbp:debug: ['git', 'show-ref', 'refs/heads/jenkins-debian-glue-buildbranch8870'] gbp:debug: ['git', 'rev-parse', '--quiet', '--verify', 'HEAD'] gbp:debug: ['git', 'show-ref', 'refs/heads/pristine-tar'] gbp:debug: ['git', 'ls-tree', '2.50.3'] gbp:info: Creating glib2.0_2.50.3.orig.tar.gz from '2.50.3' gbp:debug: Building upstream tarball with compression 'gzip' gbp:debug: /bin/true ['-nc', '-S', '-us', '-uc'] [] + quilt_cleanup + '[' -n '' ']' + echo '*** Unapplying all possibly applied quilt patches and removing quilt directory ***' *** Unapplying all possibly applied quilt patches and removing quilt directory *** + echo '*** Note: You can skip this step by setting SKIP_QUILT_CLEANUP=true ***' *** Note: You can skip this step by setting SKIP_QUILT_CLEANUP=true *** + quilt pop -a No patch removed + true + rm -rf .pc + dpkg-buildpackage -uc -us -nc -d -S --source-option=--unapply-patches dpkg-buildpackage: info: source package glib2.0 dpkg-buildpackage: info: source version 2.50.3-3+1m7.2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Jenkins Auto Builder <spam1@wizzup.org> dpkg-source --unapply-patches --before-build source dpkg-source: info: applying 01_gettext-desktopfiles.patch dpkg-source: info: applying 02_gettext-desktopfiles-ubuntu.patch dpkg-source: info: applying 03_disble_glib_compile_schemas_warning.patch dpkg-source: info: applying 04_homedir_env.patch dpkg-source: info: applying 06_thread_test_ignore_prctl_fail.patch dpkg-source: info: applying 07_disable_tests_on_slow_archs.patch dpkg-source: info: applying 61_glib-compile-binaries-path.patch dpkg-source: info: applying 90_gio-modules-multiarch-compat.patch dpkg-source: info: applying skip-brokwn-dbus-appinfo-test.patch dpkg-source: info: applying Do-not-attempt-to-autolaunch-a-session-dbus-daemon-w.patch dpkg-source: info: applying 81-skip-monitor-test-on-non-linux.patch dpkg-source: info: applying 0001-timer-test-use-volatile-for-locals.patch dpkg-source: info: applying skip-broken-timer-test.patch dpkg-source: info: applying 0001-Fix-trashing-on-overlayfs.patch dpkg-source: info: applying tests-gdatetime-Use-a-real-rather-than-invented-time.patch dpkg-source: info: applying gfile-Limit-access-to-files-when-copying.patch dpkg-source: info: applying keyfile-settings-Use-tighter-permissions.patch dpkg-source: info: applying gmarkup-Fix-unvalidated-UTF-8-read-in-markup-parsing-erro.patch dpkg-source: info: applying gmarkup-Avoid-reading-off-the-end-of-a-buffer-when-non-nu.patch dpkg-source: info: applying gmarkup-Fix-crash-in-error-handling-path-for-closing-elem.patch dpkg-source: info: applying credentials-Invalid-Linux-struct-ucred-means-no-informati.patch dpkg-source: info: applying GDBus-prefer-getsockopt-style-credentials-passing-APIs.patch dpkg-source: info: applying fix-flags-validation.patch dpkg-buildpackage: warning: building a source package without cleaning up as you asked; it might contain undesired files dpkg-source --unapply-patches -b source dpkg-source: info: using source format '3.0 (quilt)' dpkg-source: info: building glib2.0 using existing ./glib2.0_2.50.3.orig.tar.gz dpkg-source: info: building glib2.0 in glib2.0_2.50.3-3+1m7.2.debian.tar.xz dpkg-source: info: building glib2.0 in glib2.0_2.50.3-3+1m7.2.dsc dpkg-genbuildinfo --build=source dpkg-genchanges --build=source >../glib2.0_2.50.3-3+1m7.2_source.changes dpkg-genchanges: info: not including original source code in upload dpkg-source --unapply-patches --after-build source dpkg-source: info: unapplying fix-flags-validation.patch dpkg-source: info: unapplying GDBus-prefer-getsockopt-style-credentials-passing-APIs.patch dpkg-source: info: unapplying credentials-Invalid-Linux-struct-ucred-means-no-informati.patch dpkg-source: info: unapplying gmarkup-Fix-crash-in-error-handling-path-for-closing-elem.patch dpkg-source: info: unapplying gmarkup-Avoid-reading-off-the-end-of-a-buffer-when-non-nu.patch dpkg-source: info: unapplying gmarkup-Fix-unvalidated-UTF-8-read-in-markup-parsing-erro.patch dpkg-source: info: unapplying keyfile-settings-Use-tighter-permissions.patch dpkg-source: info: unapplying gfile-Limit-access-to-files-when-copying.patch dpkg-source: info: unapplying tests-gdatetime-Use-a-real-rather-than-invented-time.patch dpkg-source: info: unapplying 0001-Fix-trashing-on-overlayfs.patch dpkg-source: info: unapplying skip-broken-timer-test.patch dpkg-source: info: unapplying 0001-timer-test-use-volatile-for-locals.patch dpkg-source: info: unapplying 81-skip-monitor-test-on-non-linux.patch dpkg-source: info: unapplying Do-not-attempt-to-autolaunch-a-session-dbus-daemon-w.patch dpkg-source: info: unapplying skip-brokwn-dbus-appinfo-test.patch dpkg-source: info: unapplying 90_gio-modules-multiarch-compat.patch dpkg-source: info: unapplying 61_glib-compile-binaries-path.patch dpkg-source: info: unapplying 07_disable_tests_on_slow_archs.patch dpkg-source: info: unapplying 06_thread_test_ignore_prctl_fail.patch dpkg-source: info: unapplying 04_homedir_env.patch dpkg-source: info: unapplying 03_disble_glib_compile_schemas_warning.patch dpkg-source: info: unapplying 02_gettext-desktopfiles-ubuntu.patch dpkg-source: info: unapplying 01_gettext-desktopfiles.patch dpkg-buildpackage: info: binary and diff upload (original source NOT included) + '[' -n 4AA81E3E026EFE82E47D6901545FEC4E0927F6FD ']' + echo '*** Found environment variable KEY_ID, set to 4AA81E3E026EFE82E47D6901545FEC4E0927F6FD, signing source package ***' *** Found environment variable KEY_ID, set to 4AA81E3E026EFE82E47D6901545FEC4E0927F6FD, signing source package *** ++ which debsign + '[' -x /usr/bin/debsign ']' + debsign -k4AA81E3E026EFE82E47D6901545FEC4E0927F6FD ../glib2.0_2.50.3-3+1m7.2_source.changes signfile dsc ../glib2.0_2.50.3-3+1m7.2.dsc 4AA81E3E026EFE82E47D6901545FEC4E0927F6FD fixup_buildinfo ../glib2.0_2.50.3-3+1m7.2.dsc ../glib2.0_2.50.3-3+1m7.2_source.buildinfo signfile buildinfo ../glib2.0_2.50.3-3+1m7.2_source.buildinfo 4AA81E3E026EFE82E47D6901545FEC4E0927F6FD fixup_changes dsc ../glib2.0_2.50.3-3+1m7.2.dsc ../glib2.0_2.50.3-3+1m7.2_source.changes fixup_changes buildinfo ../glib2.0_2.50.3-3+1m7.2_source.buildinfo ../glib2.0_2.50.3-3+1m7.2_source.changes signfile changes ../glib2.0_2.50.3-3+1m7.2_source.changes 4AA81E3E026EFE82E47D6901545FEC4E0927F6FD Successfully signed dsc, buildinfo, changes files + '[' -n '' ']' + echo '*** Removing ../*_source.changes because KEEP_SOURCE_CHANGES is not set ***' *** Removing ../*_source.changes because KEEP_SOURCE_CHANGES is not set *** + rm -f ../glib2.0_2.50.3-3+1m7.2_source.changes ++ readlink -f debian/changelog + git checkout -- /var/lib/jenkins/workspace/glib-source/source/debian/changelog + git checkout -f origin/maemo/ascii-devel Note: checking out 'origin/maemo/ascii-devel'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> HEAD is now at 0fb0d9593... Remove tests dir. + git branch -D jenkins-debian-glue-buildbranch8870 Deleted branch jenkins-debian-glue-buildbranch8870 (was 0fb0d9593). Triggering projects: glib-binaries Archiving artifacts Finished: SUCCESS