[Vm-dev] The insanity of using make for development builds

Eliot Miranda eliot.miranda at gmail.com
Fri Nov 30 00:38:10 UTC 2018


On Thu, Nov 29, 2018 at 4:32 PM Eliot Miranda <eliot.miranda at gmail.com>
wrote:

> thanks Todd,
> On Thu, Nov 29, 2018 at 3:59 PM Todd Blanchard <tblanchard at mac.com> wrote:
>
>>
>> Don't know if this is helpful but maybe...
>>
>>
>> https://stackoverflow.com/questions/2670121/using-cmake-with-gnu-make-how-can-i-see-the-exact-commands
>>
>
> I can really see what's going on now:
>

BTW, that's 9.6 kb of text per compile command :-)  One has to laugh,
otherwise...


>
> make -C debug all
> make[1]: Entering directory
> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
> /usr/bin/cmake.exe -H/cygdrive/z/oscogvm
> -B/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug
> --check-build-system CMakeFiles/Makefile.cmake 0
> /usr/bin/cmake.exe -E cmake_progress_start
> /cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug/CMakeFiles
> /cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug/CMakeFiles/progress.marks
> make -f CMakeFiles/Makefile2 all
> make[2]: Entering directory
> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
> make -f CMakeFiles/PharoVMCore.dir/build.make
> CMakeFiles/PharoVMCore.dir/depend
> make[3]: Entering directory
> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
> cd /cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug &&
> /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /cygdrive/z/oscogvm
> /cygdrive/z/oscogvm
> /cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug
> /cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug
> /cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug/CMakeFiles/PharoVMCore.dir/DependInfo.cmake
> --color=
> make[3]: Leaving directory
> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
> make -f CMakeFiles/PharoVMCore.dir/build.make
> CMakeFiles/PharoVMCore.dir/build
> make[3]: Entering directory
> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
> [  1%] Building C object
> CMakeFiles/PharoVMCore.dir/platforms/Cross/vm/sqExternalSemaphores.c.o
> /usr/bin/x86_64-w64-mingw32-gcc.exe  -DBUILD_SQUEAK_STATIC -DBUILD_VM_CORE
> -DIMMUTABILITY=1 -DNO_ISNAN=1 -DPharoVM=1 -DSQUEAK_BUILTIN_PLUGIN
> -DUSE_GLOBAL_STRUCT=0 -DUSE_INLINE_MEMORY_ACCESSORS -DVM_NAME=\"Pharo\"
> -D_GNU_SOURCE -I/cygdrive/z/oscogvm/. -I/cygdrive/z/oscogvm/include
> -I/cygdrive/z/oscogvm/platforms/Cross/vm
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins
> -I/cygdrive/z/oscogvm/spur64src/vm -I/usr/include/SDL2
> -I/cygdrive/z/oscogvm/platforms/minheadless/common
> -I/cygdrive/z/oscogvm/platforms/minheadless/unix
> -I/cygdrive/z/oscogvm/src/plugins/SqueakFFIPrims
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/SqueakFFIPrims
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/SqueakFFIPrims
> -I/cygdrive/z/oscogvm/src/plugins/IA32ABI
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/IA32ABI
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/IA32ABI
> -I/cygdrive/z/oscogvm/src/plugins/FilePlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/FilePlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/FilePlugin
> -I/cygdrive/z/oscogvm/src/plugins/FileAttributesPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/FileAttributesPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/FileAttributesPlugin
> -I/cygdrive/z/oscogvm/src/plugins/LargeIntegers
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/LargeIntegers
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/LargeIntegers
> -I/cygdrive/z/oscogvm/src/plugins/LocalePlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/LocalePlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/LocalePlugin
> -I/cygdrive/z/oscogvm/src/plugins/MiscPrimitivePlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/MiscPrimitivePlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/MiscPrimitivePlugin
> -I/cygdrive/z/oscogvm/src/plugins/SecurityPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/SecurityPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/SecurityPlugin
> -I/cygdrive/z/oscogvm/src/plugins/SocketPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/SocketPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/SocketPlugin
> -I/cygdrive/z/oscogvm/src/plugins/B2DPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/B2DPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/B2DPlugin
> -I/cygdrive/z/oscogvm/src/plugins/BitBltPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/BitBltPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/BitBltPlugin
> -I/cygdrive/z/oscogvm/src/plugins/FloatArrayPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/FloatArrayPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/FloatArrayPlugin
> -I/cygdrive/z/oscogvm/src/plugins/FloatMathPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/FloatMathPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/FloatMathPlugin
> -I/cygdrive/z/oscogvm/src/plugins/Matrix2x3Plugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/Matrix2x3Plugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/Matrix2x3Plugin
> -I/cygdrive/z/oscogvm/src/plugins/SurfacePlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/SurfacePlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/SurfacePlugin
> -I/cygdrive/z/oscogvm/src/plugins/DropPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/DropPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/DropPlugin
> -I/cygdrive/z/oscogvm/src/plugins/ZipPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/ZipPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/ZipPlugin
> -I/cygdrive/z/oscogvm/src/plugins/ADPCMCodecPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/ADPCMCodecPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/ADPCMCodecPlugin
> -I/cygdrive/z/oscogvm/src/plugins/AsynchFilePlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/AsynchFilePlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/AsynchFilePlugin
> -I/cygdrive/z/oscogvm/src/plugins/BMPReadWriterPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/BMPReadWriterPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/BMPReadWriterPlugin
> -I/cygdrive/z/oscogvm/src/plugins/DSAPrims
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/DSAPrims
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/DSAPrims
> -I/cygdrive/z/oscogvm/src/plugins/FFTPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/FFTPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/FFTPlugin
> -I/cygdrive/z/oscogvm/src/plugins/FileCopyPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/FileCopyPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/FileCopyPlugin
> -I/cygdrive/z/oscogvm/src/plugins/JoystickTabletPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/JoystickTabletPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/JoystickTabletPlugin
> -I/cygdrive/z/oscogvm/src/plugins/MIDIPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/MIDIPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/MIDIPlugin
> -I/cygdrive/z/oscogvm/src/plugins/SerialPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/SerialPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/SerialPlugin
> -I/cygdrive/z/oscogvm/src/plugins/SoundCodecPrims
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/SoundCodecPrims
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/SoundCodecPrims
> -I/cygdrive/z/oscogvm/src/plugins/SoundGenerationPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/SoundGenerationPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/SoundGenerationPlugin
> -I/cygdrive/z/oscogvm/src/plugins/StarSqueakPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/StarSqueakPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/StarSqueakPlugin
> -I/cygdrive/z/oscogvm/src/plugins/JPEGReaderPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/JPEGReaderPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/JPEGReaderPlugin
> -I/cygdrive/z/oscogvm/src/plugins/JPEGReadWriter2Plugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/JPEGReadWriter2Plugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/JPEGReadWriter2Plugin
> -I/cygdrive/z/oscogvm/src/plugins/RePlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/RePlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/RePlugin
> -I/cygdrive/z/oscogvm/src/plugins/InternetConfigPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/InternetConfigPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/InternetConfigPlugin
> -I/cygdrive/z/oscogvm/src/plugins/SqueakSSL
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/SqueakSSL
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/SqueakSSL
> -I/cygdrive/z/oscogvm/src/plugins/AioPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/AioPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/AioPlugin
> -I/cygdrive/z/oscogvm/src/plugins/EventsHandlerPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/EventsHandlerPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/EventsHandlerPlugin
> -I/cygdrive/z/oscogvm/src/plugins/SDL2DisplayPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/SDL2DisplayPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/SDL2DisplayPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/Mpeg3Plugin/libmpeg
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/audio
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video
> -I/cygdrive/z/oscogvm/src/plugins/Mpeg3Plugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/Mpeg3Plugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/Mpeg3Plugin
> -I/usr/include/freetype2 -I/cygdrive/z/oscogvm/src/plugins/FT2Plugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/FT2Plugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/FT2Plugin
> -I/cygdrive/z/oscogvm/src/plugins/VMProfileLinuxSupportPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/VMProfileLinuxSupportPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/VMProfileLinuxSupportPlugin
> -I/cygdrive/z/oscogvm/src/plugins/UnixOSProcessPlugin
> -I/cygdrive/z/oscogvm/platforms/unix/plugins/UnixOSProcessPlugin
> -I/cygdrive/z/oscogvm/platforms/Cross/plugins/UnixOSProcessPlugin
> -I/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug
>  -pthread -g  -DDEBUGVM=1   -o
> CMakeFiles/PharoVMCore.dir/platforms/Cross/vm/sqExternalSemaphores.c.o   -c
> /cygdrive/z/oscogvm/platforms/Cross/vm/sqExternalSemaphores.c
> make[3]: Leaving directory
> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
> make[2]: Leaving directory
> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
> make[1]: Leaving directory
> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
>
> No wonder cmake hides the output by default ;-)
>
> Still no information on where the configurations lie, and since they're
> all computed in a pre-build step one has to essentially decompile the
> makefiles to get back to the config files that are where the configuration
> variables are really hiding.
>
>
>>
>>
>> On Nov 29, 2018, at 3:36 PM, Eliot Miranda <eliot.miranda at gmail.com>
>> wrote:
>>
>> and then  there's this.  Having spotted the apparent error (a case
>> difference for sqPlatformSpecific-Win32.h in
>> platforms/minheadless/common/sqPlatformSpecific.h) I rerun the build and
>> see the following output, essentially unchanged:
>>
>> -- Build files have been written to:
>> /cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/release
>> make -C debug all
>> make[1]: Entering directory
>> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
>> make[2]: Entering directory
>> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
>> make[3]: Entering directory
>> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
>> Scanning dependencies of target PharoVMCore
>> make[3]: Leaving directory
>> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/phar
>> o.cog.spur/debug'
>> make[3]: Entering directory
>> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
>> [  1%] Building C object
>> CMakeFiles/PharoVMCore.dir/platforms/Cross/vm/sqExternalSemaphores.c.o
>> In file included from /cygdrive/z/oscogvm/platforms/Cross/vm/sq.h:212:0,
>>                  from
>> /cygdrive/z/oscogvm/platforms/Cross/vm/sqExternalSemaphores.c:31:
>> /cygdrive/z/oscogvm/platforms/minheadless/common/sqPlatformSpecific.h:36:39:
>> fatal error: sqPlatformSpecific-Win32.h: No such file or directory
>> compilation terminated.
>> make[3]: *** [CMakeFiles/PharoVMCore.dir/build.make:63:
>> CMakeFiles/PharoVMCore.dir/platforms/Cross/vm/sqExternalSemaphores.c.o]
>> Error 1
>> make[3]: Leaving directory
>> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
>> make[2]: *** [CMakeFiles/Makefile2:216: CMakeFiles/PharoVMCore.dir/all]
>> Error 2
>> make[2]: Leaving directory
>> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
>> make[1]: *** [Makefile:84: all] Error 2
>> make[1]: Leaving directory
>> '/cygdrive/z/oscogvm/build.minheadless.cmake/x64/pharo.cog.spur/debug'
>> make: *** [Makefile:2: all] Error 2
>>
>> What's missing?
>> - no mention of a LOG file name to go look for the command line for the
>> compiler which is likely missing an include path to pick up
>> platforms/minheadless/windows/sqPlatformSpecific-Win32.h
>> - no command line so one can't merely eyeball the output to  heck, or run
>> the build with output piped into one's own LOG file
>>
>> What doe we see?  An opaque build system.  The only way to approach this
>> is to wade through the details trying to uncover things *that should be in
>> plain view*.  With the Makefiles I have written
>> - there is no slow configure step (the above make scheme crates 4
>> identical copies of a config file *on each build*)
>> - the commandos theat build are output explicitly so one may quickly
>> debug errors in code one is writing
>>
>> I'm sorry to complain but this use of cmake is painful and misguided.
>>
>> On Wed, Nov 28, 2018 at 7:14 PM Eliot Miranda <eliot.miranda at gmail.com>
>> wrote:
>>
>>> Hi All,
>>>
>>>     I've just attempted to build minheadless on win32 in
>>> build.minheadless.cmake.  It failed, but it took a long time to do so,
>>> while I waited.  So I cleaned and repeated to measure just how long I
>>> waited.  So this time is a best case; all read files are in cache etc.  I'm
>>> running a Windows VM on a top of the line MacBook Pro and yet it takes 3
>>> minutes and 20 seconds to configure and then start to build and fail
>>> because it can't find sqplatfozrmspecifc-win32.h.  I have to wait 3 minutes
>>> and 20 seconds before I can find out a missing file.  This is *wrong*.
>>>
>>> Using make on a build slave is fine, if you insist, but clearly not
>>> necessary (our current builds do not use cmake, and even then on ARM build
>>> slaves they sometimes timeout).  But for development this is madness.  We
>>> should have a build system which is reactive, which gives feedback too the
>>> developer quickly, not after 3 minutes and 20 seconds on state of the art
>>> hardware.
>>>
>>> I find it absurd that a Smalltalk community, which well understands the
>>> value of incrementally and reactivity, can be satisfied with a VM build
>>> system that takes 3 minutes and 20 seconds before it does anything useful.
>>> It feels like being back at York University in the early '80's, waiting for
>>> the PDP 10.  No, that was faster.  On reflection, it reminds me of having
>>> to post coding sheets to be typed in by entry clerks through the mail while
>>> I was at school in the '70's.  Back to the future indeed.
>>> _,,,^..^,,,_
>>> best, Eliot
>>>
>>
>>
>> --
>> _,,,^..^,,,_
>> best, Eliot
>>
>>
>>
>
> --
> _,,,^..^,,,_
> best, Eliot
>


-- 
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20181129/de2fd65b/attachment-0001.html>


More information about the Vm-dev mailing list