Remove Appveyor CI, update README (#4578)

- Remove Appveyor CI
- Write new "Getting the source" subsection, consolidating material
  from a couple of places.  Emphasize using the utils/git-sync-deps
  script for getting a known-good combination of sources.
- Built artifacts:
   - top of tree artifacts are from Kokoro CI bots
   - mention Vulkan SDK and Android NDK as alternatives

Fixes: #4577
This commit is contained in:
David Neto 2021-10-14 17:46:27 -04:00 коммит произвёл GitHub
Родитель 3e6a85303d
Коммит 10343e53ed
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 52 добавлений и 142 удалений

Просмотреть файл

@ -1,90 +0,0 @@
# Windows Build Configuration for AppVeyor
# http://www.appveyor.com/docs/appveyor-yml
# version format
version: "{build}"
# The most recent compiler gives the most interesting new results.
# Put it first so we get its feedback first.
os:
- Visual Studio 2017
#- Visual Studio 2013
platform:
- x64
configuration:
- Debug
#- Release
branches:
only:
- master
# Travis advances the master-tot tag to current top of the tree after
# each push into the master branch, because it relies on that tag to
# upload build artifacts to the master-tot release. This will cause
# double testing for each push on Appveyor: one for the push, one for
# the tag advance. Disable testing tags.
skip_tags: true
clone_depth: 1
matrix:
fast_finish: true # Show final status immediately if a test fails.
#exclude:
# - os: Visual Studio 2013
# configuration: Debug
# scripts that run after cloning repository
install:
# Install ninja
- set NINJA_URL="https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-win.zip"
- appveyor DownloadFile %NINJA_URL% -FileName ninja.zip
- 7z x ninja.zip -oC:\ninja > nul
- set PATH=C:\ninja;C:\Python36;%PATH%
before_build:
- git clone --depth=1 https://github.com/KhronosGroup/SPIRV-Headers.git external/spirv-headers
- git clone https://github.com/google/googletest.git external/googletest
- cd external && cd googletest && git reset --hard 1fb1bb23bb8418dc73a5a9a82bbed31dc610fec7 && cd .. && cd ..
- git clone --depth=1 https://github.com/google/effcee.git external/effcee
- git clone --depth=1 https://github.com/google/re2.git external/re2
# Set path and environment variables for the current Visual Studio version
- if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2013" (call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64)
- if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017" (call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64)
build:
parallel: true # enable MSBuild parallel builds
verbosity: minimal
build_script:
- mkdir build && cd build
- cmake -GNinja -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DCMAKE_INSTALL_PREFIX=install -DRE2_BUILD_TESTING=OFF ..
- ninja install
test_script:
- ctest -C %CONFIGURATION% --output-on-failure --timeout 310
after_test:
# Zip build artifacts for uploading and deploying
- cd install
- 7z a SPIRV-Tools-master-windows-"%PLATFORM%"-"%CONFIGURATION%".zip *\*
artifacts:
- path: build\install\*.zip
name: artifacts-zip
deploy:
- provider: GitHub
auth_token:
secure: TMfcScKzzFIm1YgeV/PwCRXFDCw8Xm0wY2Vb2FU6WKlbzb5eUITTpr6I5vHPnAxS
release: master-tot
description: "Continuous build of the latest master branch by Appveyor and Travis CI"
artifact: artifacts-zip
draft: false
prerelease: false
force_update: true
on:
branch: master
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017

Просмотреть файл

@ -53,7 +53,7 @@ These versions undergo extra testing.
Releases are not directly related to releases (or versions) of Releases are not directly related to releases (or versions) of
[SPIRV-Headers][spirv-headers]. [SPIRV-Headers][spirv-headers].
Releases of SPIRV-Tools are tested against the version of SPIRV-Headers listed Releases of SPIRV-Tools are tested against the version of SPIRV-Headers listed
in the DEPS file. in the [DEPS](DEPS) file.
The release generally uses the most recent compatible version of SPIRV-Headers The release generally uses the most recent compatible version of SPIRV-Headers
available at the time of release. available at the time of release.
No version of SPIRV-Headers other than the one listed in the DEPS file is No version of SPIRV-Headers other than the one listed in the DEPS file is
@ -256,6 +256,34 @@ Contributions via merge request are welcome. Changes should:
We intend to maintain a linear history on the GitHub `master` branch. We intend to maintain a linear history on the GitHub `master` branch.
### Getting the source
Example of getting sources, assuming SPIRV-Tools is configured as a standalone project:
git clone https://github.com/KhronosGroup/SPIRV-Tools.git spirv-tools
cd spirv-tools
# Check out sources for dependencies, at versions known to work together,
# as listed in the DEPS file.
python3 utils/git-sync-deps
For some kinds of development, you may need the latest sources from the third-party projects:
git clone https://github.com/KhronosGroup/SPIRV-Headers.git spirv-tools/external/spirv-headers
git clone https://github.com/google/googletest.git spirv-tools/external/googletest
git clone https://github.com/google/effcee.git spirv-tools/external/effcee
git clone https://github.com/google/re2.git spirv-tools/external/re2
#### Dependency on Effcee
Some tests depend on the [Effcee][effcee] library for stateful matching.
Effcee itself depends on [RE2][re2].
* If SPIRV-Tools is configured as part of a larger project that already uses
Effcee, then that project should include Effcee before SPIRV-Tools.
* Otherwise, SPIRV-Tools expects Effcee sources to appear in `external/effcee`
and RE2 sources to appear in `external/re2`.
### Source code organization ### Source code organization
* `example`: demo code of using SPIRV-Tools APIs * `example`: demo code of using SPIRV-Tools APIs
@ -274,14 +302,6 @@ We intend to maintain a linear history on the GitHub `master` branch.
* `test/`: Tests, using the [googletest][googletest] framework * `test/`: Tests, using the [googletest][googletest] framework
* `tools/`: Command line executables * `tools/`: Command line executables
Example of getting sources, assuming SPIRV-Tools is configured as a standalone project:
git clone https://github.com/KhronosGroup/SPIRV-Tools.git spirv-tools
git clone https://github.com/KhronosGroup/SPIRV-Headers.git spirv-tools/external/spirv-headers
git clone https://github.com/google/googletest.git spirv-tools/external/googletest
git clone https://github.com/google/effcee.git spirv-tools/external/effcee
git clone https://github.com/google/re2.git spirv-tools/external/re2
### Tests ### Tests
The project contains a number of tests, used to drive development The project contains a number of tests, used to drive development
@ -295,46 +315,12 @@ tests:
`googletest` source into the `<spirv-dir>/external/googletest` directory before `googletest` source into the `<spirv-dir>/external/googletest` directory before
configuring and building the project. configuring and building the project.
*Note*: You must use a version of googletest that includes
[a fix][googletest-pull-612] for [googletest issue 610][googletest-issue-610].
The fix is included on the googletest master branch any time after 2015-11-10.
In particular, googletest must be newer than version 1.7.0.
### Dependency on Effcee
Some tests depend on the [Effcee][effcee] library for stateful matching.
Effcee itself depends on [RE2][re2].
* If SPIRV-Tools is configured as part of a larger project that already uses
Effcee, then that project should include Effcee before SPIRV-Tools.
* Otherwise, SPIRV-Tools expects Effcee sources to appear in `external/effcee`
and RE2 sources to appear in `external/re2`.
## Build ## Build
Instead of building manually, you can also download the binaries for your *Note*: Prebuilt binaries are available from the [downloads](docs/downloads.md) page.
platform directly from the [master-tot release][master-tot-release] on GitHub.
Those binaries are automatically uploaded by the buildbots after successful
testing and they always reflect the current top of the tree of the master
branch.
In order to build the code, you first need to sync the external repositories First [get the sources](#getting-the-source).
that it depends on. Assume that `<spirv-dir>` is the root directory of the Then build using CMake, Bazel, or Android ndk-build.
checked out code:
```sh
cd <spirv-dir>
git clone https://github.com/KhronosGroup/SPIRV-Headers.git external/spirv-headers
git clone https://github.com/google/effcee.git external/effcee
git clone https://github.com/google/re2.git external/re2
git clone https://github.com/google/googletest.git external/googletest # optional
```
*Note*:
The script `utils/git-sync-deps` can be used to checkout and/or update the
contents of the repos under `external/` instead of manually maintaining them.
### Build using CMake ### Build using CMake
You can build the project using [CMake][cmake]: You can build the project using [CMake][cmake]:
@ -435,7 +421,7 @@ via setting `SPIRV_TOOLS_EXTRA_DEFINITIONS`. For example, by setting it to
`/D_ITERATOR_DEBUG_LEVEL=0` on Windows, you can disable checked iterators and `/D_ITERATOR_DEBUG_LEVEL=0` on Windows, you can disable checked iterators and
iterator debugging. iterator debugging.
### Android ### Android ndk-build
SPIR-V Tools supports building static libraries `libSPIRV-Tools.a` and SPIR-V Tools supports building static libraries `libSPIRV-Tools.a` and
`libSPIRV-Tools-opt.a` for Android: `libSPIRV-Tools-opt.a` for Android:
@ -456,7 +442,8 @@ $ANDROID_NDK/ndk-build -C ../android_test \
``` ```
### Updating DEPS ### Updating DEPS
Occasionally the entries in DEPS will need to be updated. This is done on demand
Occasionally the entries in [DEPS](DEPS) will need to be updated. This is done on demand
when there is a request to do this, often due to downstream breakages. There is when there is a request to do this, often due to downstream breakages. There is
a script `utils/roll_deps.sh` provided, which will generate a patch with the a script `utils/roll_deps.sh` provided, which will generate a patch with the
updated DEPS values. This will still need to be tested in your checkout to updated DEPS values. This will still need to be tested in your checkout to
@ -743,4 +730,3 @@ limitations under the License.
[CMake]: https://cmake.org/ [CMake]: https://cmake.org/
[cpp-style-guide]: https://google.github.io/styleguide/cppguide.html [cpp-style-guide]: https://google.github.io/styleguide/cppguide.html
[clang-sanitizers]: http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation [clang-sanitizers]: http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation
[master-tot-release]: https://github.com/KhronosGroup/SPIRV-Tools/releases/tag/master-tot

Просмотреть файл

@ -1,14 +1,28 @@
# Downloads # Downloads
Download the latest builds.
## Release ## Latest builds
Download the latest builds of the [master](https://github.com/KhronosGroup/SPIRV-Tools/tree/master) branch.
### Release build
| Windows | Linux | MacOS | | Windows | Linux | MacOS |
| --- | --- | --- | | --- | --- | --- |
| [MSVC 2017](https://storage.googleapis.com/spirv-tools/badges/build_link_windows_vs2017_release.html) | [clang](https://storage.googleapis.com/spirv-tools/badges/build_link_linux_clang_release.html) | [clang](https://storage.googleapis.com/spirv-tools/badges/build_link_macos_clang_release.html) | | [MSVC 2017](https://storage.googleapis.com/spirv-tools/badges/build_link_windows_vs2017_release.html) | [clang](https://storage.googleapis.com/spirv-tools/badges/build_link_linux_clang_release.html) | [clang](https://storage.googleapis.com/spirv-tools/badges/build_link_macos_clang_release.html) |
| | [gcc](https://storage.googleapis.com/spirv-tools/badges/build_link_linux_gcc_release.html) | | | | [gcc](https://storage.googleapis.com/spirv-tools/badges/build_link_linux_gcc_release.html) | |
## Debug ### Debug build
| Windows | Linux | MacOS | | Windows | Linux | MacOS |
| --- | --- | --- | | --- | --- | --- |
| [MSVC 2017](https://storage.googleapis.com/spirv-tools/badges/build_link_windows_vs2017_debug.html) | [clang](https://storage.googleapis.com/spirv-tools/badges/build_link_linux_clang_debug.html) | [clang](https://storage.googleapis.com/spirv-tools/badges/build_link_macos_clang_debug.html) | | [MSVC 2017](https://storage.googleapis.com/spirv-tools/badges/build_link_windows_vs2017_debug.html) | [clang](https://storage.googleapis.com/spirv-tools/badges/build_link_linux_clang_debug.html) | [clang](https://storage.googleapis.com/spirv-tools/badges/build_link_macos_clang_debug.html) |
| | [gcc](https://storage.googleapis.com/spirv-tools/badges/build_link_linux_gcc_debug.html) | | | | [gcc](https://storage.googleapis.com/spirv-tools/badges/build_link_linux_gcc_debug.html) | |
## Vulkan SDK
SPIRV-Tools is published as part of the [LunarG Vulkan SDK](https://www.lunarg.com/vulkan-sdk/).
The Vulkan SDK is updated approximately every six weeks.
## Android NDK
SPIRV-Tools host executables, and library sources are published as
part of the [Android NDK](https://developer.android.com/ndk/downloads).