diff options
author | Derek Bailey <derekbailey@google.com> | 2021-11-30 23:13:24 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-30 23:13:24 -0800 |
commit | e47dc0e465894998f269fbbe2abbeaafb7a4bf56 (patch) | |
tree | f9bd91a0a36602b10479042173c58d72e27010dd /scripts | |
parent | 5c5475479032ad9c1b611a24b3bfbdd30fde3e38 (diff) | |
download | flatbuffers-e47dc0e465894998f269fbbe2abbeaafb7a4bf56.tar.gz flatbuffers-e47dc0e465894998f269fbbe2abbeaafb7a4bf56.tar.bz2 flatbuffers-e47dc0e465894998f269fbbe2abbeaafb7a4bf56.zip |
Removed test/generate_code.{sh|bat} (#6873)
* removed test/generate_code.{sh|bat}
remove c++0x from generate_code.py
added check generate code script in python
add windows specific call
added flags to generate_code.py
Set c++-0x on BUILD_LEGACY
Skip generating monster_extra if requested
* added option to skip monster extra
* add conditional to skip 2010 check gen
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/check-generate-code.sh | 47 | ||||
-rwxr-xr-x | scripts/check_generate_code.py | 63 | ||||
-rwxr-xr-x | scripts/generate_code.py | 47 |
3 files changed, 97 insertions, 60 deletions
diff --git a/scripts/check-generate-code.sh b/scripts/check-generate-code.sh deleted file mode 100755 index 4cf27423..00000000 --- a/scripts/check-generate-code.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# -# Copyright 2018 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -set -e - -if ! git diff --quiet; then - echo >&2 - echo "ERROR: ********************************************************" >&2 - echo "ERROR: The following differences were found after building." >&2 - echo "ERROR: Perhaps there is a difference in the flags for the" >&2 - echo "ERROR: CMakeLists.txt vs the tests/generate_code.sh script?" >&2 - echo "ERROR: ********************************************************" >&2 - echo >&2 - git diff --binary --exit-code -fi - -cd tests -./generate_code.sh -cd .. - -# TODO: Linux and macos builds produce differences here for some reason. -git checkout HEAD -- tests/monster_test.bfbs -git checkout HEAD -- tests/arrays_test.bfbs -git checkout HEAD -- samples/monster.bfbs - -if ! git diff --quiet; then - echo >&2 - echo "ERROR: ********************************************************" >&2 - echo "ERROR: The following differences were found after running the" >&2 - echo "ERROR: tests/generate_code.sh script. Maybe you forgot to run" >&2 - echo "ERROR: it after making changes in a generator or schema?" >&2 - echo "ERROR: ********************************************************" >&2 - echo >&2 - git diff --binary --exit-code -fi diff --git a/scripts/check_generate_code.py b/scripts/check_generate_code.py new file mode 100755 index 00000000..038dc4e5 --- /dev/null +++ b/scripts/check_generate_code.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +# +# Copyright 2021 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import platform +import subprocess +import sys +from pathlib import Path + +# Get the path where this script is located so we can invoke the script from +# any directory and have the paths work correctly. +script_path = Path(__file__).parent.resolve() + +# Get the root path as an absolute path, so all derived paths are absolute. +root_path = script_path.parent.absolute() + +result = subprocess.run(["git", "diff", "--quiet"], cwd=root_path) + +if result.returncode != 0: + print( + "\n" + "ERROR: *********************************************************\n" + "ERROR: * The following differences were found after building. *\n" + "ERROR: * Perhaps there is a difference in the flags for the. *\n" + "ERROR: * CMakeLists.txt vs the script/generate_code.py script? *\n" + "ERROR: *********************************************************\n" + ) + subprocess.run(["git", "diff", "--binary", "--exit-code"], cwd=root_path) + sys.exit(result.returncode) + +# Rung the generate_code.py script, forwarding arguments +gen_cmd = ["scripts/generate_code.py"] + sys.argv[1:] +if platform.system() == "Windows": + gen_cmd = ["py"] + gen_cmd +subprocess.run(gen_cmd, cwd=root_path) + +result = subprocess.run(["git", "diff", "--quiet"], cwd=root_path) + +if result.returncode != 0: + print( + "\n" + "ERROR: ********************************************************\n" + "ERROR: * The following differences were found after running *\n" + "ERROR: * the script/generate_code.py script. Maybe you forgot *\n" + "ERROR: * to run it after making changes in a generator? *\n" + "ERROR: ********************************************************\n" + ) + subprocess.run(["git", "diff", "--binary", "--exit-code"], cwd=root_path) + sys.exit(result.returncode) + +sys.exit(0) diff --git a/scripts/generate_code.py b/scripts/generate_code.py index 13968c5e..df53ba51 100755 --- a/scripts/generate_code.py +++ b/scripts/generate_code.py @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import argparse import filecmp import glob import platform @@ -22,6 +23,19 @@ import subprocess import sys from pathlib import Path +parser = argparse.ArgumentParser() +parser.add_argument( + "--flatc", + help="path of the Flat C compiler relative to the root directory", +) +parser.add_argument("--cpp-0x", action="store_true", help="use --cpp-std c++ox") +parser.add_argument( + "--skip-monster-extra", + action="store_true", + help="skip generating tests involving monster_extra.fbs", +) +args = parser.parse_args() + # Get the path where this script is located so we can invoke the script from # any directory and have the paths work correctly. script_path = Path(__file__).parent.resolve() @@ -33,8 +47,8 @@ root_path = script_path.parent.absolute() # argument or defaulting to default names. flatc_exe = Path( ("flatc" if not platform.system() == "Windows" else "flatc.exe") - if len(sys.argv) <= 1 - else sys.argv[1] + if not args.flatc + else args.flatc ) # Find and assert flatc compiler is present. @@ -79,7 +93,8 @@ CPP_OPTS = [ "--gen-compare", "--cpp-ptr-type", "flatbuffers::unique_ptr", -] +] + (["--cpp-std", "c++0x"] if args.cpp_0x else []) + CPP_17_OPTS = NO_INCL_OPTS + [ "--cpp", "--cpp-std", @@ -230,11 +245,22 @@ flatc( schema="monster_test.fbs", ) -flatc( - CPP_OPTS + CS_OPTS + NO_INCL_OPTS + JAVA_OPTS + KOTLIN_OPTS + PYTHON_OPTS, - schema="monster_extra.fbs", - data="monsterdata_extra.json", -) +if not args.skip_monster_extra: + flatc( + CPP_OPTS + + CS_OPTS + + NO_INCL_OPTS + + JAVA_OPTS + + KOTLIN_OPTS + + PYTHON_OPTS, + schema="monster_extra.fbs", + data="monsterdata_extra.json", + ) + + flatc( + DART_OPTS + ["--gen-object-api"], + schema="monster_extra.fbs", + ) flatc( CPP_OPTS @@ -256,11 +282,6 @@ flatc( schema="arrays_test.fbs", ) -flatc( - DART_OPTS + ["--gen-object-api"], - schema="monster_extra.fbs", -) - # Optional Scalars optional_scalars_schema = "optional_scalars.fbs" |