The wait_for_block() was originally needed for iOS platform as it used to install very slowly (exceeds 10 minutes) due to configuration mistake. It should install just in a few minutes now.
Check the CMake minimum version before setting project name as recommended by CMake.
Minor documentation update on how to setup downstream projects using Urho3D library as external library.
For AppVeyor - attempt to add scaffolding test using Urho3D SDK.
For Travis CI - adjust heuristic rule for cutting of iOS universal binary build.
For Travis CI - clean up the Android SDK before performing the packaging for Android build.
(Test quotation marks escape in commit message)
[ci only: Android, OSX] [skip appveyor] [ci package]
It turns out that RefactoringTool and RefactoringCallback classes are not made for each other.
For Travis CI - attempt to push the annotated source files into a new branch. DO NOT check out from this branch, instead just use GitHub GUI to browse through the changes.
[ci only: Annotate]
Current scanning threshold is set to 20, i.e. it only scan when there are 20 or more actual compilation call.
Only send job notification email to human. Only propagate root commit SHA and message submitted by human.
For Travis CI - when releasing disregard commit message instruction from the last commit being tagged. This is to ensure all CI jobs are run for releasing the artifacts.
[ci package]
However, we still have to temporarily scale back to not perform full CI jobs on PR because PR from fork cannot get the secured variables decrypted and hence no way to create CI mirror branches.
Add checkpoint for Emscripten CI build and use it to determine whether to skip make test and/or scaffolding test when running short of time.
For Travis CI - perform the full CI jobs for topic branches and PRs.
For Travis CI - use custom data in .travis.yml for excluding samples.
Strangely it won't proceed to perform the scan otherwise.
For Travis CI - when performing API documentation update, delayed the creation of CI mirror branches.
Thanks to GoogleBot42 for pointing out how to fix this.
The wrong classification of the AngelScript files as 'ActionScript' is not fixable without fixing the issue at the upstream. The github/linguist does not even recognize AngelScript as a language at all at the moment.
Close#709.
For Travis CI - when performing a release, keep the CI mirror branches around for a little longer just in case we need to restart the CI job again due to Travis CI build error.
When build failed or errored in one of the CI mirror branch, notifications will be sent to commiter and author (if different person), similar to master branch.
The CI mirror branches are now created and deleted on the fly. No more overhead to maintain them (i.e. resolving rebase conflict).
This is partial implementation of what has been requested in this feature request https://github.com/travis-ci/travis-ci/issues/3719.
A test case is considered passed when the html exits as the result of emscripten_force_exit() function being called, which happens when the engine's elapsed time reaches URHO3D_TEST_TIMEOUT seconds. When something goes wrong, the engine's elapsed time does not progress as per normal, in this case the emrun's timeout would kick in and terminate the test case with failed exit status. The EMRUN'S timeout is set to be 2 times URHO3D_TEST_TIMEOUT auotmatically.
Add new build option EMSCRIPTEN_EMRUN_BROWSER to select which browser to use for testing. Default is 'firefox'. Refer to https://github.com/kripken/emscripten/issues/3234 to apply the recommended Firefox preference setting for emrun.
At the moment the 'make test' cannot be run non-interactively yet on Linux host and Mac OS X host systems due to what-could-be a bug in 'emrun' script. The issue with 'emrun' has been reported to upstream (https://github.com/kripken/emscripten/issues/3234).
Simplify the custom command for share data generation since we are not going to "fix" the UUID issue of the file_packager.py anymore. Although this would mean the slightest change in the output JS file caused by UUID change could force a long relink process in our build.
For Travis CI - upload Emscripten HTML5 samples to Urho3D main website.
[ci package]
The main Ruby thread outputs '.' character while waiting for the worker thread to complete. This should avoid Travis-CI from thinking the install process has stalled.
Use EMSCRIPTEN_ROOT_PATH environment variable to specify the root path to the emscripten, instead of the original EMSCRIPTEN environment variable exported in emsdk_set_env.sh.
This is because the original EMSCRIPTEN environment variable name clashes with our build scripts.
Enhance build scripts to handle source tree and build tree with spaces.
Fix PCH generation with incorrect compiler flags caused by -fPIC and -fpic from being added at the same time.
Fix compiler warning on Android platform with PCH enabled on the external main project due to CMake bug in 'VISIBILITY_INLINES_HIDDEN' implementation.
Close#637.
When the '<platform-specific>_build_tree' or 'build_tree' argument is provided then use it as the build tree path, otherwise use the default build tree path as before.
The '<platform-specific>_build_tree' takes precedence over 'build_tree'.
So that they do not get re-uploaded again the second time when uploading the 64-bit RPM package with URHO3D_USE_LIB64_RPM build option set.
[ci package]
Add new build options for specifying tool-prefix and target-sysroot in cross-compiling build.
Add new IOS_SYSROOT variable to store the path to iOS sysroot and use it to set CMAKE_FIND_ROOT_PATH variable.
Now also generate pkg-config Urho3D.pc for iOS platform.
For Travis CI - simplify SDK installation logic. Use DESTDIR=~ to avoid sudo.
Add new build options to override 64-bit Linux package setup for Debian and Redhad -based host systems.
For Travis CI - fix 64-bit RPM package generation to install library in /usr/lib64, also fix external project build test using Urho3D library from SDK.
Also:
- fix Android-CI build which does not need the symlink creation in the first place.
- fix an existing Xcode build configuration bug which was left undetected until now.
Now this rule is applicable for all target platforms (Linux, Windows, Android, and Raspberry-Pi) which have their CI builds run on Linux/Ubuntu host VM. Mac OSX and iOS CI builds are not affected by this rule since they run on OSX host VM which is not susceptible to "bad VM" issue. The idea is to reduce memory consumption during the linking phase and thus avoiding the process being killed due to insufficient memory in the VM.
On normal commit, use the origin/master. On git tagging commit, use the 'tag' branch.
Also when on git taggig commit, prevent API doc update on the master branch because it is already too late to do so as the commit won't be in the tag anyway.
This is because the detached head may actually move due to API documentation update, so $TRAVIS_BRANCH environment variable may actually just point to HEAD~ in this scenario, which was not good as it would cause CI mirror branches became being pushed twice unnecessarily, one for HEAD~ and one for HEAD.
Using HEAD should work equally well for both normal commit and release tagging commit.
The following changes address the shortcomings of our current release mechanism detected from our last release.
- Define and set RELEASE_TAG environment variable only when a git tag conform to a release tagging matching regex "\d+\.\d+".
- Change the logic to allow the automated rake tasks to be triggered on a 'tag' branch properly.
- Fix the 'git rebase' command to use the branch pointed by TRAVIS_BRANCH environment variable as baseline, instead of assuming it to be always 'origin/master' as before.
- Change Urho3D library versioning CMake module to omit the version patch number when there is none, i.e. 1.32 instead of 1.32.0.
General build script cleanup:
- Constrain build option values in cmake-gui.
- Constrain build configuration for both multi-configuration and single-configuration generators.
- Mark cached variables as advanced or internal as appropriate.
- Add initial support for ndk-gdb. Enable via new 'URHO3D_NDK_GDB' build option.
- Enhance rake android task: more effective loop to wait for Android device, ability to pick library to run from SampleLauncher from the adb shell.
- Fix "buildvm" tool name for Android to derive from the correct NDK ABI CMake's variable.
- Fix Android toolchain to copy shared STL library to the correct Android library output directory.
There is no point to wait for AVD to start. By the time the CI finishes the build, if the emulator is able to start the AVD then it should have been already done so.
On non-CI environment, the build time could still be much faster than the emulator starting the AVD, thus the function to wait for AVD is still useful in non-CI environment.
AVD with API level 21 seems to take longer to start. Also when the AVD failed to start in time, CI now skips the APK installation/launching test and considers the whole build as passed.
These new CI builds will perform the build test on the DirectX code path which is currently not covered in any of our existing CI.
The CI builds should also improve the detection of any breakage caused by build script changes for MinGW compiler.
The threshold is currently set to 20 minutes (can be adjusted). If by the given threshold time the iOS build has not reached the checkpoint then the universal binary build is skipped automatically.
When Travis CI is overloaded, the CI builds tend to get longer. Our iOS 32-bit and 64-bit CI build are usually finished very close to the 50 minutes time limit but may overshoot to pass the limit when Travis CI is overloaded. Using the xcpretty only helps in reducing the log size but it cannot help in this case. This commit disables again the universal binary build for the 64-bit iOS build when packaging the build artifact. The Mach-O universal binary build for 32-bit iOS build may be disabled too in the near future when we get more samples or the overloaded situation gets worse.
On non-CI environment, the device may already be created and just being reattached to the daemon. The unlock key event should only be sent after the device is ready (the launcher is running nd no more bootanimation process).
Occassionally there could be multiple successive commits causing multiple CI jobs queue up in the Travis CI. Due to latency of each jobs, the jobs may finish not in the same order as the commits. If the CI build happens to be instructed to perform package upload then the uploaded packages may come in not in the right order as the result.
For Travis CI - set the iOS deployment target to 7.0 explicitly but have to bump the OSX deployment target to 10.8 because Travis-CI only have 10.8 and 10.9 SDKs installed.
[ci package]
If the option is not set, Urho3D CMake build script by default configures it to match the currently running OS X version. On Travis-CI that is 10.9 which is too high for binary packaging. Closes#447.