2020-01-04 18:03:17 +00:00
|
|
|
#!/usr/bin/python3
|
2020-01-01 00:14:33 +00:00
|
|
|
# Copyright (C) 2014-2020 Free Software Foundation, Inc.
|
2014-06-11 08:46:29 +00:00
|
|
|
# This file is part of the GNU C Library.
|
|
|
|
#
|
|
|
|
# The GNU C Library is free software; you can redistribute it and/or
|
|
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
|
|
# License as published by the Free Software Foundation; either
|
|
|
|
# version 2.1 of the License, or (at your option) any later version.
|
|
|
|
#
|
|
|
|
# The GNU C Library 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
|
|
|
|
# Lesser General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
|
|
# License along with the GNU C Library; if not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
# <https://www.gnu.org/licenses/>.
|
2014-06-11 08:46:29 +00:00
|
|
|
"""Benchmark output validator
|
|
|
|
|
|
|
|
Given a benchmark output file in json format and a benchmark schema file,
|
|
|
|
validate the output against the schema.
|
|
|
|
"""
|
|
|
|
|
|
|
|
from __future__ import print_function
|
|
|
|
import json
|
|
|
|
import sys
|
|
|
|
import os
|
|
|
|
|
|
|
|
try:
|
2015-06-01 17:43:29 +00:00
|
|
|
import import_bench as bench
|
2014-06-11 08:46:29 +00:00
|
|
|
except ImportError:
|
2015-06-01 17:43:29 +00:00
|
|
|
print('Import Error: Output will not be validated.')
|
2014-06-11 08:46:29 +00:00
|
|
|
# Return success because we don't want the bench target to fail just
|
|
|
|
# because the jsonschema module was not found.
|
|
|
|
sys.exit(os.EX_OK)
|
|
|
|
|
|
|
|
|
2015-06-01 17:43:29 +00:00
|
|
|
def print_and_exit(message, exitcode):
|
|
|
|
"""Prints message to stderr and returns the exit code.
|
2014-06-11 08:46:29 +00:00
|
|
|
|
|
|
|
Args:
|
2015-06-01 17:43:29 +00:00
|
|
|
message: The message to print
|
|
|
|
exitcode: The exit code to return
|
2014-06-11 08:46:29 +00:00
|
|
|
|
2015-06-01 17:43:29 +00:00
|
|
|
Returns:
|
|
|
|
The passed exit code
|
2014-06-11 08:46:29 +00:00
|
|
|
"""
|
2015-06-01 17:43:29 +00:00
|
|
|
print(message, file=sys.stderr)
|
|
|
|
return exitcode
|
2014-06-11 08:46:29 +00:00
|
|
|
|
|
|
|
|
|
|
|
def main(args):
|
|
|
|
"""Main entry point
|
|
|
|
|
|
|
|
Args:
|
|
|
|
args: The command line arguments to the program
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
0 on success or a non-zero failure code
|
|
|
|
|
|
|
|
Exceptions:
|
|
|
|
Exceptions thrown by validate_bench
|
|
|
|
"""
|
|
|
|
if len(args) != 2:
|
2015-06-01 17:43:29 +00:00
|
|
|
return print_and_exit("Usage: %s <bench.out file> <bench.out schema>"
|
|
|
|
% sys.argv[0], os.EX_USAGE)
|
|
|
|
|
|
|
|
try:
|
|
|
|
bench.parse_bench(args[0], args[1])
|
|
|
|
except IOError as e:
|
|
|
|
return print_and_exit("IOError(%d): %s" % (e.errno, e.strerror),
|
|
|
|
os.EX_OSFILE)
|
|
|
|
|
|
|
|
except bench.validator.ValidationError as e:
|
|
|
|
return print_and_exit("Invalid benchmark output: %s" % e.message,
|
|
|
|
os.EX_DATAERR)
|
|
|
|
|
|
|
|
except bench.validator.SchemaError as e:
|
|
|
|
return print_and_exit("Invalid schema: %s" % e.message, os.EX_DATAERR)
|
2014-06-11 08:46:29 +00:00
|
|
|
|
2015-06-01 17:43:29 +00:00
|
|
|
print("Benchmark output in %s is valid." % args[0])
|
2014-06-11 08:46:29 +00:00
|
|
|
return os.EX_OK
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
sys.exit(main(sys.argv[1:]))
|