[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] Fix the minheadless VM for CI (#404)

Ronie Salgado notifications at github.com
Thu Jun 13 03:36:03 UTC 2019

This pull request fixes the CMake based build system for the minheadless for building on CI for both, Pharo and Squeak. This also adds two variants of the minheadless vm:

- The true headless VM variant.
- A vm with SDL2 based display that supports standard Pharo and Squeak images, for 32 and 64 bits in Linux, Mac and Windows.

In addition to these fixes, this PR implements adds an image selection dialog for Mac and Windows when the Minheadless VM can not find automatically an image. This allows double clicking the Minheadless VM.

The automatic image search and detection in the Minheadless vm works like this now:
- If there is an image called startup.image in the same folder as the vm executable, (or in the bundle Resources folder in the case of Mac OS X), then this image is executed always.
- If there is not an startup.image file in these folder, the vm executable, the Mac Resource folder, or the working directory is searched for all the files with the .image extension. If only one of these files is found, then this image file is executed. If no images are found, or more than one image is found, then image selection dialog is display on Mac and Windows (on Linux, the VM just exits).

This pull request re-implements the thirdparty dependency download, configuration and build using CMake. Only the dependencies that are actually used by a VM variant are built automatically, and it is built only once. AppVeyor and Travis caches are also supported by the CMake based build system. The thirdparty dependencies that are built with CMake are placed under the .thirdparty-cache/cmake folder to avoid clashing and breaking the Makefile based build system. Building thirdparty dependencies with CMake works, but it is messy and hacky (so it is using the Makefiles). The thirdparty dependency build system should be moved into a separate repository. Third party dependencies are quite stable and do not change as frequent as the VM, so it should be easier, cleaner and faster to handle them in a separate repository.

You can view, comment on, or merge this pull request online at:


-- Commit Summary --

  * I am making sure that the CMake based scripts for the Linux version of the VM is producing the correct directory structure.
  * Generate the proper OS X bundle structure with CMake install scripts.
  * I fixed the cmake install script on Linux.
  * Use the CMake install command for generating the final directory structure.
  * I am fixing the OS X bundled plugins with the minheadless VM.
  * Cleaning up the common plugins between Pharo and Squeak.
  * I am starting to build some Pharo dependencies with CMake.
  * I implemented the compilation of the libgit2 thirdparty dependency.
  * I added the building of the SDL2 external library.
  * I added the freetype2 third party library compilation to the CMake scripts.
  * I fixed the search of freetype on linux.
  * I implemented a hack for treating the OS X version of the minheadless VM as a launcher application.
  * I added the missing Pharo dependencies to the OS X version of the VM CMake building scripts.
  * I added some convenience build directories to build the minheadless VM with SDL2 based traditional display support.
  * I added properly the minheadless vm with SDL2 support to the travis.yml
  * I am now setting the OS X SDK with the CMake build scripts.
  * I am fixing the 32 bits Linux building.
  * I added some missing compilation flags.
  * Match the OS X SDK version that are used by Makefiles scripts.
  * I fixed the warnings settings with the CMake scripts.
  * Fixing another bug with the flags.
  * I am removing more warnings for travis.
  * I commented temporarily the Travis notifications to avoid spamming the vm dev mailing list.
  * Redirect the output of the third party build tools to avoid the Travis CI too large log error message.
  * I improved the third party project login facilities.
  * I fixed the OpenSSL build install script for Mac.
  * I fixed the configuration of OpenSSL for 32 bits MacOS X.
  * I am making some more fixes for CI.
  * I am fixing the previous commit.
  * I did another fixup for Smalltalk CI.
  * I am making progress on building the windows version of the minheadless vm with cmake.
  * I fixed a minor difference between bash and sh.
  * I fixed another problem with the win32 changes on linux.
  * I managed to get the remaining dependencies compiling on 32 bits Windows.
  * Merge branch 'feature/minheadless-ci' of github.com:ronsaldo/opensmalltalk-vm into feature/minheadless-ci
  * I am fixing some compilation flags for Win64.
  * I managed to get the VM building with CMake working on Win64.
  * I did some small changes for CI.
  * Bug fixes.
  * Another fix for appveyor.
  * Fixing  a build order dependenct
  * I added the missing resources to the Win32 version of the minheadless VM.
  * I am adding a missing file to the minheadless VM.
  * Keep silencing the thirdparty build logs for travis.
  * I am doing some fixes for CI.
  * Some more fixes for CI.
  * Another fix for CI.
  * Travis yml fixup.
  * I improved the automatic image search of the minheadless VM.
  * Merge branch 'Cog' into feature/minheadless-ci
  * I fixed the automatic image sarch in OS X.
  * I fixed the extra plugin search path on the minheadless.
  * I fixed the automatic image search mechanism on Windows.
  * I am restoring the Travis and AppVeyor yml files.

-- File Changes --

    M .appveyor.yml (55)
    M .travis.yml (30)
    M CMakeLists.txt (354)
    A build.minheadless.cmake/x64/common/Toolchain-mingw32-cygwin-clang.cmake (25)
    R build.minheadless.cmake/x64/common/Toolchain-mingw32-cygwin-gcc.cmake (4)
    M build.minheadless.cmake/x64/common/configure_variant.sh (33)
    A build.minheadless.cmake/x64/pharo.cog.spur+sdl2/Makefile (18)
    A build.minheadless.cmake/x64/pharo.cog.spur+sdl2/mvm (8)
    A build.minheadless.cmake/x64/pharo.cog.spur+sdl2/mvm_configure (6)
    A build.minheadless.cmake/x64/pharo.cog.spur+sdl2/mvm_configure_variant (8)
    M build.minheadless.cmake/x64/pharo.cog.spur/Makefile (12)
    M build.minheadless.cmake/x64/pharo.cog.spur/mvm (10)
    M build.minheadless.cmake/x64/pharo.cog.spur/mvm_configure_variant (5)
    M build.minheadless.cmake/x64/pharo.stack.spur/Makefile (12)
    M build.minheadless.cmake/x64/pharo.stack.spur/mvm (10)
    M build.minheadless.cmake/x64/pharo.stack.spur/mvm_configure_variant (5)
    A build.minheadless.cmake/x64/squeak.cog.spur+sdl2/Makefile (18)
    A build.minheadless.cmake/x64/squeak.cog.spur+sdl2/mvm (8)
    A build.minheadless.cmake/x64/squeak.cog.spur+sdl2/mvm_configure (6)
    A build.minheadless.cmake/x64/squeak.cog.spur+sdl2/mvm_configure_variant (8)
    M build.minheadless.cmake/x64/squeak.cog.spur/Makefile (12)
    M build.minheadless.cmake/x64/squeak.cog.spur/mvm (10)
    M build.minheadless.cmake/x64/squeak.cog.spur/mvm_configure_variant (5)
    M build.minheadless.cmake/x64/squeak.stack.spur/Makefile (12)
    M build.minheadless.cmake/x64/squeak.stack.spur/mvm (10)
    M build.minheadless.cmake/x64/squeak.stack.spur/mvm_configure_variant (5)
    A build.minheadless.cmake/x86/common/Toolchain-mingw32-cygwin-clang.cmake (25)
    R build.minheadless.cmake/x86/common/Toolchain-mingw32-cygwin-gcc.cmake (4)
    M build.minheadless.cmake/x86/common/configure_variant.sh (30)
    A build.minheadless.cmake/x86/pharo.cog.spur+sdl2/Makefile (18)
    A build.minheadless.cmake/x86/pharo.cog.spur+sdl2/mvm (8)
    A build.minheadless.cmake/x86/pharo.cog.spur+sdl2/mvm_configure (6)
    A build.minheadless.cmake/x86/pharo.cog.spur+sdl2/mvm_configure_variant (8)
    M build.minheadless.cmake/x86/pharo.cog.spur/Makefile (12)
    M build.minheadless.cmake/x86/pharo.cog.spur/mvm (10)
    M build.minheadless.cmake/x86/pharo.cog.spur/mvm_configure_variant (6)
    M build.minheadless.cmake/x86/pharo.stack.spur/Makefile (12)
    M build.minheadless.cmake/x86/pharo.stack.spur/mvm (10)
    M build.minheadless.cmake/x86/pharo.stack.spur/mvm_configure_variant (5)
    A build.minheadless.cmake/x86/squeak.cog.spur+sdl2/Makefile (18)
    A build.minheadless.cmake/x86/squeak.cog.spur+sdl2/mvm (8)
    A build.minheadless.cmake/x86/squeak.cog.spur+sdl2/mvm_configure (6)
    A build.minheadless.cmake/x86/squeak.cog.spur+sdl2/mvm_configure_variant (8)
    M build.minheadless.cmake/x86/squeak.cog.spur/Makefile (12)
    M build.minheadless.cmake/x86/squeak.cog.spur/mvm (10)
    M build.minheadless.cmake/x86/squeak.cog.spur/mvm_configure_variant (5)
    M build.minheadless.cmake/x86/squeak.stack.spur/Makefile (12)
    M build.minheadless.cmake/x86/squeak.stack.spur/mvm (12)
    M build.minheadless.cmake/x86/squeak.stack.spur/mvm_configure_variant (5)
    A cmake/Cairo.cmake (33)
    A cmake/CompleteBundle.cmake.in (126)
    A cmake/CreateBundle.sh.in (33)
    A cmake/FT2Plugin.cmake (18)
    A cmake/FixCygwinInstallPermissions.cmake.in (1)
    A cmake/FixCygwinInstallPermissions.sh.in (5)
    A cmake/FreeType2.cmake (39)
    A cmake/LibGit2.cmake (45)
    A cmake/LibPNG.cmake (31)
    A cmake/LibSSH2.cmake (24)
    M cmake/Mpeg3Plugin.cmake (3)
    A cmake/OpenSSL.cmake (117)
    A cmake/OpenSSL.mac-install.sh.in (10)
    A cmake/Pixman.cmake (23)
    A cmake/PkgConfig.cmake (35)
    M cmake/Plugins.cmake (117)
    A cmake/PluginsCommon.cmake (120)
    A cmake/PluginsMacros.cmake (107)
    M cmake/PluginsPharo.cmake (67)
    A cmake/PluginsSqueak.cmake (17)
    A cmake/SDL2.cmake (23)
    A cmake/ThirdPartyDependencies.cmake (8)
    A cmake/ThirdPartyDependenciesCommon.cmake (7)
    A cmake/ThirdPartyDependenciesMacros.cmake (516)
    A cmake/ThirdPartyDependenciesPharo.cmake (13)
    A cmake/ThirdPartyDependenciesSqueak.cmake (0)
    A cmake/ThirdPartyDependencyInstallScript.cmake.in (28)
    A cmake/WindowsRuntimeLibraries.cmake (26)
    A cmake/Zlib.cmake (63)
    M deploy/pack-vm.sh (10)
    M include/OpenSmalltalkVM.h (94)
    M platforms/Cross/plugins/FloatMathPlugin/isnan.c (2)
    M platforms/Cross/plugins/SerialPlugin/sqNullSerialPort.c (10)
    M platforms/Cross/vm/sqMemoryAccess.h (27)
    M platforms/Cross/vm/sqPath.c (3)
    M platforms/Cross/vm/sqTextEncoding.c (140)
    M platforms/Cross/vm/sqTextEncoding.h (3)
    A platforms/minheadless/common/sqGnu.h (196)
    M platforms/minheadless/common/sqPrinting.c (2)
    M platforms/minheadless/common/sqVirtualMachineInterface.c (310)
    M platforms/minheadless/common/sqWindow-Dispatch.c (9)
    M platforms/minheadless/config.h.in (13)
    A platforms/minheadless/mac/sqMain.m (202)
    M platforms/minheadless/sdl2-window/sqWindow-SDL2.c (2)
    A platforms/minheadless/startup.sh.in (56)
    A platforms/minheadless/windows/resources/Pharo/Pharo.exe.manifest.in (30)
    A platforms/minheadless/windows/resources/Pharo/Pharo.ico (0)
    A platforms/minheadless/windows/resources/Pharo/Pharo.rc.in (30)
    A platforms/minheadless/windows/resources/Squeak/GreenCogSqueak.ico (0)
    A platforms/minheadless/windows/resources/Squeak/Squeak.exe.manifest.in (30)
    A platforms/minheadless/windows/resources/Squeak/Squeak.rc.in (30)
    A platforms/minheadless/windows/resources/Squeak/squeak2.ico (0)
    A platforms/minheadless/windows/resources/Squeak/squeak3.ico (0)
    M platforms/minheadless/windows/sqPlatformSpecific-Win32.c (17)
    M platforms/minheadless/windows/sqWin32Directory.c (58)
    M platforms/minheadless/windows/sqWin32Main.c (70)
    M scripts/ci/travis_build.sh (28)
    M tests/smalltalkCI.sh (4)
    A third-party/pixman.clang.patch (27)

-- Patch Links --


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20190612/aa2a6320/attachment-0001.html>

More information about the Vm-dev mailing list