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

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Fri Nov 30 07:32:19 UTC 2018


Le ven. 30 nov. 2018 à 07:46, Norbert Hartl <norbert at hartl.name> a écrit :

>
>
>
> Am 30.11.2018 um 01:38 schrieb Eliot Miranda <eliot.miranda at gmail.com>:
>
>
>
> 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...
>
>
> I have trouble to figure out what you are saying. First you complain you
> don‘t see enough. Then you complain there is too much? Is there a feasible
> amount of information generally or does it need your personal one?
>
> Norbert
>

Hi Norbert,
don't make it personal.
it's like deugging a C code which would have been pre-processed with all
include files and macros expanded.
it is verbosity by repetition.
it's not designed to be understandable.
Definitely not the level of information fitting human capabilities.

Nicolas

>
>> 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/20181130/fce77485/attachment-0001.html>


More information about the Vm-dev mailing list