Author Topic: Build window terse output  (Read 3537 times)

Eric777

  • Junior Community Member
  • Posts: 7
  • Hero Points: 0
Build window terse output
« on: August 21, 2020, 05:13:36 PM »
Is there an option somewhere to restrict the Build window output to only what is emitted by the build command line?  I have a c++ project with custom build commands to drive an external build system.  When I compile a single file with Shift-F10 for instance, the Build window outputs quite a bit more data than I'd personally like to see there:

What I see:What I'd like to see:
Quote
d: & cd d:\slickedit_tests\parallel_project

d:\slickedit_tests\parallel_project>
d:\slickedit_tests\parallel_project>echo VSLICKERRORPATH="d:\slickedit_tests\parallel_project"
VSLICKERRORPATH="d:\slickedit_tests\parallel_project"

d:\slickedit_tests\parallel_project>"C:\Program Files\SlickEdit Pro 24.0.2\win\vsbuild" -signal 8994
-command BlackBuild -rebuild "Core.vcproj" -config debug_x64 -file "Ipc.cpp"
 VSLICKERRORPATH="d:\slickedit_tests\parallel_project"
BlackBuild -rebuild Core.vcproj -config debug_x64 -file Ipc.cpp

------ Build project: Core, Configuration debug_x64 win ------
Ipc.cpp
Ipc.cpp(84) : Warning C4267: 'argument': conversion from 'size_t' to 'DWORD', possible loss of data
Ipc.cpp(110) : Warning C4267: 'argument': conversion from 'size_t' to 'DWORD', possible loss of data

0 errors, 2 warnings

d:\slickedit_tests\parallel_project>
Quote
------ Build project: Core, Configuration debug_x64 win ------
Ipc.cpp
Ipc.cpp(84) : Warning C4267: 'argument': conversion from 'size_t' to 'DWORD', possible loss of data
Ipc.cpp(110) : Warning C4267: 'argument': conversion from 'size_t' to 'DWORD', possible loss of data

0 errors, 2 warnings
(the above being the part actually emitted by the build system)

Similarly, is there a way to remove the live prompt from the Build window?  I don't think I'll ever invoke the external build system manually from the Build window.  I'd just use a terminal outside of SlickEdit for manual builds.

This is with SlickEdit v24.0.2.0 on win10.

There is a similar request here: https://community.slickedit.com/index.php/topic,15531.msg59129.html#msg59129, but the reply button seemed disabled.

« Last Edit: August 21, 2020, 05:18:55 PM by Eric777 »

Marcel

  • Senior Community Member
  • Posts: 261
  • Hero Points: 26
Re: Build window terse output
« Reply #1 on: August 22, 2020, 04:45:21 PM »
You are actually quite lucky with your build window. My Java build windows are real gems. In this example, the Java compiler call line is over 8K characters long, and is of course wrapped, so you are paging down a few times to skip over the noise. For increased excitement, the first compiler diagnostic line is seamlessly tacked on to that monstrous line.  Next-tag, quite naturally, positions you to the beginning of the 8K line, making it your responsibility to maneuver to the end of it to see the error.

Javac arguments should be in an @argsfile.

Code: [Select]
C: & cd C:\code\ae\build\server

C:\code\ae\build\server>C:\VSLICK~1\win\vsbuild -t "build" "C:\code\ae\build\server\serverdebug.vpw" "C:\code\ae\build\server\serverdebug.vpj" -c "Debug" -signal 49783
---------- 'build' Project: 'serverdebug.vpj' - 'Debug' ---------- VSLICKERRORPATH="C:\code\ae\build\server"
c:\jdk-14.0.1+7\bin\javac.exe -g -d
"C:\code\ae\build\server\webapp\WEB-INF\classes" -classpath
\code\ae\build\server\webapp\web-inf\classes\;\code\ae\build\server\webapp\WEB-INF\classes\resources\;
\code\ae\build\server\;\code\ae\build\server\libs\accessors-smart-1.2.jar;
\code\ae\build\server\libs\animal-sniffer-annotations-1.18.jar;
\code\ae\build\server\libs\antlr-2.7.7.jar;\code\ae\build\server\libs\aopalliance-repackaged-2.5.0-b42.jar;
\code\ae\build\server\libs\apiguardian-api-1.1.0.jar;\code\ae\build\server\libs\asm-7.2.jar;
\code\ae\build\server\libs\asm-analysis-7.2.jar;\code\ae\build\server\libs\asm-commons-7.2.jar;
\code\ae\build\server\libs\asm-tree-7.2.jar;\code\ae\build\server\libs\asm-shared-2.1.jar;
\code\ae\build\server\libs\bcmail-jdk15on-1.62.jar;\code\ae\build\server\libs\bcpkix-jdk15on-1.62.jar;
\code\ae\build\server\libs\bcprov-jdk15on-1.62.jar;\code\ae\build\server\libs\byte-buddy-1.8.12.jar;
\code\ae\build\server\libs\c3p0-0.9.5.2.jar;\code\ae\build\server\libs\cdi-api-2.0.jar;
\code\ae\build\server\libs\checker-compat-qual-2.5.5.jar;\code\ae\build\server\libs\classmate-1.3.4.jar;
\code\ae\build\server\libs\commons-beanutils-1.9.3.jar;\code\ae\build\server\libs\commons-codec-1.11.jar;
\code\ae\build\server\libs\commons-collections-3.2.2.jar;\code\ae\build\server\libs\commons-configuration-1.10.jar;
\code\ae\build\server\libs\commons-dbcp-1.4.jar;\code\ae\build\server\libs\commons-fileupload-1.3.3.jar;
\code\ae\build\server\libs\commons-io-2.6.jar;\code\ae\build\server\libs\commons-lang-2.6.jar;
\code\ae\build\server\libs\commons-logging-1.2.jar;\code\ae\build\server\libs\commons-pool-1.5.4.jar;
\code\ae\build\server\libs\commons-wrapper-1.2.jar;\code\ae\build\server\libs\error_prone_annotations-2.3.2.jar;
\code\ae\build\server\libs\derby-10.14.2.0.jar;\code\ae\build\server\libs\derbyclient-10.14.2.0.jar;
\code\ae\build\server\libs\derbynet-10.14.2.0.jar;\code\ae\build\server\libs\derbytools-10.14.2.0.jar;
\code\ae\build\server\libs\dom4j-1.6.1.jar;\code\ae\build\server\libs\el-api-2.2.jar;
\code\ae\build\server\libs\failureaccess-1.0.1.jar;\code\ae\build\server\libs\FastInfoset-1.2.15.jar;
\code\ae\build\server\libs\google-api-client-1.30.7.jar;
\code\ae\build\server\libs\google-api-services-androidenterprise-v1-rev189-1.25.0.jar;
\code\ae\build\server\libs\google-api-services-plus-v1-rev590-1.25.0.jar;
\code\ae\build\server\libs\google-http-client-1.34.0.jar;\code\ae\build\server\libs\google-http-client-jackson2-1.32.1.jar;
\code\ae\build\server\libs\google-oauth-client-1.30.5.jar;\code\ae\build\server\libs\grpc-context-1.22.1.jar;
\code\ae\build\server\libs\gson-2.8.2.jar;\code\ae\build\server\libs\guava-28.1-android.jar;
\code\ae\build\server\libs\hibernate-c3p0-5.2.13.Final.jar;
\code\ae\build\server\libs\hibernate-commons-annotations-5.0.3.Final.jar;
\code\ae\build\server\libs\hibernate-core-5.3.1.Final.jar;
\code\ae\build\server\libs\hibernate-entitymanager-5.2.13.Final.jar;
\code\ae\build\server\libs\hibernate-jpa-2.1-api-1.0.0.Final.jar;
\code\ae\build\server\libs\HikariCP-java6-2.3.13.jar;\code\ae\build\server\libs\hk2-api-2.5.0-b42.jar;
\code\ae\build\server\libs\hk2-locator-2.5.0-b42.jar;\code\ae\build\server\libs\hk2-utils-2.5.0-b42.jar;
\code\ae\build\server\libs\httpclient-4.5.10.jar;\code\ae\build\server\libs\httpcore-4.4.12.jar;
\code\ae\build\server\libs\httpmime-4.5.6.jar;\code\ae\build\server\libs\infor-broker-7.2.jar;
\code\ae\build\server\libs\istack-commons-runtime-3.0.7.jar;\code\ae\build\server\libs\j2objc-annotations-1.3.jar;
\code\ae\build\server\libs\jackson-annotations-2.10.3.jar;\code\ae\build\server\libs\jackson-core-2.10.3.jar;
\code\ae\build\server\libs\jackson-databind-2.10.3.jar;\code\ae\build\server\libs\jandex-2.0.3.Final.jar;
\code\ae\build\server\libs\javassist-3.22.0-GA.jar;\code\ae\build\server\libs\lang-util-api-3.0.4a.jar;
\code\ae\build\server\libs\javax-websocket-client-impl-9.4.28.v20200408.jar;
\code\ae\build\server\libs\javax-websocket-server-impl-9.4.28.v20200408.jar;
\code\ae\build\server\libs\javax.activation-api-1.2.0.jar;\code\ae\build\server\libs\javax.annotation-api-1.3.1.jar;
\code\ae\build\server\libs\javax.el-api-3.0.0.jar;\code\ae\build\server\libs\javax.inject-1.jar;
\code\ae\build\server\libs\javax.inject-2.5.0-b60.jar;\code\ae\build\server\libs\javax.interceptor-api-1.2.jar;
\code\ae\build\server\libs\javax.persistence-api-2.2.jar;\code\ae\build\server\libs\javax.servlet-api-3.1.0.jar;
\code\ae\build\server\libs\javax.websocket-api-1.0.jar;\code\ae\build\server\libs\javax.websocket-client-api-1.0.jar;
\code\ae\build\server\libs\javax.ws.rs-api-2.1.jar;\code\ae\build\server\libs\jaxb-api-2.3.1.jar;
\code\ae\build\server\libs\jaxb-runtime-2.3.1.jar;\code\ae\build\server\libs\jboss-logging-3.3.2.Final.jar;
\code\ae\build\server\libs\jboss-transaction-api_1.2_spec-1.1.1.Final.jar;\code\ae\build\server\libs\jcip-annotations-1.0-1.jar;
\code\ae\build\server\libs\jersey-client-2.26.jar;\code\ae\build\server\libs\jersey-common-2.26.jar;
\code\ae\build\server\libs\jersey-container-servlet-2.26.jar;\code\ae\build\server\libs\jersey-container-servlet-core-2.26.jar;
\code\ae\build\server\libs\jersey-hk2-2.26.jar;\code\ae\build\server\libs\jersey-media-jaxb-2.26.jar;
\code\ae\build\server\libs\jersey-server-2.26.jar;\code\ae\build\server\libs\jettison-1.3.8.jar;
\code\ae\build\server\libs\jetty-annotations-9.4.28.v20200408.jar;\code\ae\build\server\libs\jetty-client-9.4.28.v20200408.jar;
\code\ae\build\server\libs\jetty-http-9.4.28.v20200408.jar;\code\ae\build\server\libs\jetty-io-9.4.28.v20200408.jar;
\code\ae\build\server\libs\jetty-jndi-9.4.28.v20200408.jar;\code\ae\build\server\libs\jetty-plus-9.4.28.v20200408.jar;
\code\ae\build\server\libs\jetty-security-9.4.28.v20200408.jar;\code\ae\build\server\libs\jetty-server-9.4.28.v20200408.jar;
\code\ae\build\server\libs\jetty-servlet-9.4.28.v20200408.jar;\code\ae\build\server\libs\jetty-util-9.4.28.v20200408.jar;
\code\ae\build\server\libs\jetty-webapp-9.4.28.v20200408.jar;\code\ae\build\server\libs\jetty-xml-9.4.28.v20200408.jar;
\code\ae\build\server\libs\json-smart-2.3.jar;
\code\ae\build\server\libs\jsonic-1.3.10.jar;\code\ae\build\server\libs\jsr305-3.0.2.jar;
\code\ae\build\server\libs\jstl-1.2.jar;\code\ae\build\server\libs\jta-1.1.jar;
\code\ae\build\server\libs\junit-jupiter-api-5.5.1.jar;\code\ae\build\server\libs\junit-jupiter-engine-5.5.1.jar;
\code\ae\build\server\libs\junit-jupiter-params-5.5.1.jar;\code\ae\build\server\libs\junit-platform-commons-1.5.1.jar;
\code\ae\build\server\libs\junit-platform-engine-1.5.1.jar;
\code\ae\build\server\libs\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;
\code\ae\build\server\libs\log4j-api-2.12.1.jar;\code\ae\build\server\libs\log4j-core-2.12.1.jar;
\code\ae\build\server\libs\log4j-slf4j-impl-2.12.1.jar;\code\ae\build\server\libs\mchange-commons-java-0.2.14.jar;
\code\ae\build\server\libs\nimbus-jose-jwt-5.12.jar;\code\ae\build\server\libs\opencensus-api-0.24.0.jar;
\code\ae\build\server\libs\opencensus-contrib-http-util-0.24.0.jar;\code\ae\build\server\libs\osgi-resource-locator-1.0.1.jar;
\code\ae\build\server\libs\quartz-2.3.0.jar;\code\ae\build\server\libs\slf4j-api-1.7.25.jar;
\code\ae\build\server\libs\stax-api-1.0.1.jar;\code\ae\build\server\libs\stax-ex-1.8.jar;
\code\ae\build\server\libs\txw2-2.3.1.jar;\code\ae\build\server\libs\validation-api-1.1.0.Final.jar;
\code\ae\build\server\libs\websocket-api-9.4.28.v20200408.jar;
\code\ae\build\server\libs\websocket-client-9.4.28.v20200408.jar;
\code\ae\build\server\libs\websocket-common-9.4.28.v20200408.jar;
\code\ae\build\server\libs\websocket-server-9.4.28.v20200408.jar;
\code\ae\build\server\libs\websocket-servlet-9.4.28.v20200408.jar;\code\ae\build\server\libs\xml-apis-1.0.b2.jar;
\code\ae\build\server\libs\xmlpull-1.1.3.4a.jar;\code\ae\build\server\libs\xpp3_min-1.1.4c.jar;
\code\ae\build\server\libs\xstream-1.4.12.jar;\code\ae\build\server\libs\zlist-api-4.0.3.jar;
\code\ae\java\ServerManagement\conf\;C:\code\ae\build\server\
.... Long list of individual source files stripped ....
.... Long list of individual source files stripped ....
.... Long list of individual source files stripped ....
.... Long list of individual source files stripped ....
.... Long list of individual source files stripped ....
.... Long list of individual source files stripped ....
.... Long list of individual source files stripped ....
.... Long list of individual source files stripped ....
.... Long list of individual source files stripped ....
.... Long list of individual source files stripped ....
.... Long list of individual source files stripped ....
C:\code\ae\java\ServerManagement\src\main\java\com\acme\server\peerdiscovery\IDiscoveryAPI.java:17:
error: cannot find symbol
  List<String> getRanges(String startAddress, String endAddress);
  ^
  symbol:   class List
  location: interface IDiscoveryAPI
1 error
Build stopped. javac.exe returned 1
*** Errors occurred during this build ***

C:\code\ae\build\server>



Clark

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 6884
  • Hero Points: 530
Re: Build window terse output
« Reply #2 on: August 23, 2020, 05:27:35 PM »
Both good suggestions. Using @file for long javac command lines should be doable. Hiding some build output like VSLICKERRORPATH is much harder but I think it could be improved.

Eric777

  • Junior Community Member
  • Posts: 7
  • Hero Points: 0
Re: Build window terse output
« Reply #3 on: August 24, 2020, 04:40:54 AM »
Thanks, Clark!  Researching more on the forums, it seems that invoking builds (on windows at least) happens via cmd.exe rather than CreateProcess().  Is that why it's difficult to remove all the extra output?

Also, I'm curious why cmd.exe is used rather than CreateProcess directly.  It looks like it's setting the current directory, setting an envvar, and then invoking vsbuild, all of which could be handed pre-baked to CreateProcess without cmd processing any commands, and without any of that state leaking up into the parent process.  I am admittedly in an echo chamber with my own workflow.  Is there an advantage I'm not thinking of to driving the build via cmd.exe on windows rather than directly spinning up vsbuild withoud cmd.exe?

rowbearto

  • Senior Community Member
  • Posts: 2335
  • Hero Points: 132
Re: Build window terse output
« Reply #4 on: August 24, 2020, 12:21:49 PM »
I personally like the cmd.exe and seeing all the output, so would be nice if this terse output was a (non-default) option.

On Linux side I like having bash here, then I can do an ssh into my build server and have the build done on a different machine then the one SE is running on, due to vsbuild running in my ssh session on a remote machine. I've done similar in Windows before as well.

Clark

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 6884
  • Hero Points: 530
Re: Build window terse output
« Reply #5 on: August 24, 2020, 12:24:29 PM »
Terse output would probably not be the default. Although I’m not sure everyone needs to see the vslick error path stuff though. hiding that would be a good default.

Clark

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 6884
  • Hero Points: 530
Re: Build window terse output
« Reply #6 on: September 19, 2020, 10:56:54 PM »
Thanks, Clark!  Researching more on the forums, it seems that invoking builds (on windows at least) happens via cmd.exe rather than CreateProcess().  Is that why it's difficult to remove all the extra output?

Also, I'm curious why cmd.exe is used rather than CreateProcess directly.  It looks like it's setting the current directory, setting an envvar, and then invoking vsbuild, all of which could be handed pre-baked to CreateProcess without cmd processing any commands, and without any of that state leaking up into the parent process.  I am admittedly in an echo chamber with my own workflow.  Is there an advantage I'm not thinking of to driving the build via cmd.exe on windows rather than directly spinning up vsbuild withoud cmd.exe?

I missed this comment of yours. Because SlickEdit uses CMD.EXE (or a shell), it’s a bit more obvious how users can get there build tool to work in the build window. Also, you can manually type shell commands. I do this a lot. Most IDEs are more black boxish. SlickEdit tries to be more open architecture in this regard. The build window supports common color escape sequences. This is more useful on Unix platforms. The "sgrep" utility which ships with SlickEdit, outputs color escape sequences when used in the build window (I'm old school and often do this). There are disadvantages though. The output is verbose as you’ve noted. Also, it’s harder to cleanly set environment variables just for your build process.
« Last Edit: September 20, 2020, 12:59:22 AM by Clark »