Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] build console code location

Maybe it's not a problem any more ( I was not monitoring changes in this area last time), but I guess that a placing of console code in UI plugin could be a cause of a big pain for those who implement headless application with console output.

Alex

On 13/12/2009 1:45 PM, Doug Schaefer wrote:
As the new build system takes shape, we can eventually move it to the cdt.build.ui plugins. The relationship between the make and managedbuilder plugins right now is a little tough to figure, so I'd prefer not to make the change now.

Doug.

On Sun, Dec 13, 2009 at 1:35 PM, Andrew Gvozdev <angvoz.dev@xxxxxxxxx <mailto:angvoz.dev@xxxxxxxxx>> wrote:

        Guys, please help resolving this problem, because I'm
        completely blocked making patches

        while build console is in cdt.ui.


    As I already stated my opinion on a few occasions, Build Console
    should not belong to cdt.core but to one of build packages. In my
    opinion the most approprate place is cdt.make package. My
    reasoning is following:

    The current hierarchy goes like that:

    cdt.core
      |
    cdt.make.core <- cdt.make.ui
      |
    cdt.managedbuilder.core <- cdt.managedbuilder.ui

    The console is used in both make.core and managedbuilder.core via
    IConsole interface. As far as I see IConsole is only used for
    Build Console notion.

    Currently managedbuilder took over "new" manaded builds and
    Makefile project build (which is just a flavor of a managed
    project). However, old style projects and their build live dormant
    in cdt.make plugins. Although you cannot create those in vanilla
    CDT installation, they are pretty much alive and still being used
    by some third party plugins. (As a side note: We can say that we
    don't support those but we should still keep them operational.)

    So, in my opinion, Build Console belongs to cdt.make.* packages.

    As far as architecture, I stated my vision in bug 296935 New CDT
    Build System <https://bugs.eclipse.org/bugs/show_bug.cgi?id=296935>:

        Doug provided several good examples how the build model would
        be used. I'd like to provide in some sense a counter-example
        to illustrate some thoughts about architecture:


        There is a certain category of users who need indexer code
        navigation but are not interested in any build. They just use
        CDT for editing C/C++ files. I would go that far as state that
        well engineered architecture would allow to do that without
        installing build plugins and any overhead related to build system.


        One corollary of that is that cdt.core plugin currently is
        bloated with features which should really be in other plugins.
        Just look at its size. Such features as error parsers, build
        console etc. should be in build plugin(s) rather then in core.
        I am thinking of a build system as being multi-layered where
        each next layer is built on top of another. One layer is core
        which provides core functions but none of related to build.
        Next one would provide general build facilities such as build
        console, error parsers, unmanaged build, scanner discovery (in
        that view it would be cdt.make plugin which is sadly declared
        dead). Finally, managedbuilder plugin which provides the means
        of generating makefiles. Different managedbuilders like Ed's
        middle ground builder could be created as well.


    Doug, since I think that may contradict the direction you are
    taking for the new new build it would be nice if you (and anyone
    interested) could comment on that before we started moving.

    Thanks,
    Andrew

    2009/11/30 Dmitry Kozlov <ddk@xxxxxxxxxxxxxxxx
    <mailto:ddk@xxxxxxxxxxxxxxxx>>

        As Andrew Gvozdev wrote to me commenting one of build console
        patches


        "- The name of build output file is being set in Builder
        Settings Tab (which is
        good). However, the Builder Settings are per configuration, so
        the file name
        needs to be stored per configuration as well. It should not be
        kept in
        .project. .project/.cproject could be shared via code
        repository and I don't
        think output file name normally belongs there."

        But configuration is part of cdt.managedbuilder.core. So to
        apply all my console enhancements and
        to confirm all Andrew's wishes I need console to depend on
        cdt.make.ui and cdt.managedbuilder.core. So there are two
        possible locations for buildconsole code:
        top-level separate package or part of cdt.managedbuilder.ui.

        Guys, please help resolving this problem, because I'm
        completely blocked making patches
        while build console is in cdt.ui.

        Dmitry


        Dmitry Kozlov wrote:

            Hi,
            we were discussing run command toolbar addition to build
            console toolbar.
            The idea is to add fields to build console toolbar which
            enables to run
            build command or some other command.
            This code requires build console to depend on make.core
            because we need
            to use

            MakeBuilderUtil.getBuildDirectory(project, info) and
            MakeBuilderUtil.getBuildDirectoryURI(project, info)
            to get working directory for command (working in other
            directory have no
            sense)

            and error parser:
            StreamMonitor streamMon = new StreamMonitor(new
            SubProgressMonitor(monitor, 100), cos, last.intValue());
            ErrorParserManager epm = new ErrorParserManager(project,
            workingDirectoryURI, this, info.getErrorParsers());
            ...
            ConsoleOutputSniffer sniffer =
            ScannerInfoConsoleParserFactory.getMakeBuilderOutputSniffer(
                                          stdout, stderr, project,
            workingDirectory, null, this, null);


            Will it be accepted by upstream if I move all build
            console code to
            cdt.make.ui?

            ---
            Dmitry

            _______________________________________________
            cdt-dev mailing list
            cdt-dev@xxxxxxxxxxx <mailto:cdt-dev@xxxxxxxxxxx>
            https://dev.eclipse.org/mailman/listinfo/cdt-dev


        _______________________________________________
        cdt-dev mailing list
        cdt-dev@xxxxxxxxxxx <mailto:cdt-dev@xxxxxxxxxxx>
        https://dev.eclipse.org/mailman/listinfo/cdt-dev



    _______________________________________________
    cdt-dev mailing list
    cdt-dev@xxxxxxxxxxx <mailto:cdt-dev@xxxxxxxxxxx>
    https://dev.eclipse.org/mailman/listinfo/cdt-dev



_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev



Back to the top