Uploaded image for project: 'ManifoldCF'
  1. ManifoldCF
  2. CONNECTORS-912

MCF binary build should provide build environment for user connectors

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • ManifoldCF 1.6
    • ManifoldCF 1.6
    • Build, Documentation
    • None

    Description

      Right now the way people are told to develop connectors, they must download sources and integrate their connector into the MCF tree. This involves understand some very complicated makefiles, and also means that they cannot easily extend a binary release.

      Instead, I propose that (a) the build structure is revised to allow connectors to build against a MCF binary release, and (b) binary releases also include enough of the build system to make this feasible. I've figured out a way to do this for ant at least already, and I believe that for Maven it will simply just require connectors to no longer be subprojects of the MCF root. Instead, the framework and each connector would be independent projects.

      For ant, the proposal is as follows:
      (1) All connectors build against an MCF distribution area
      (2) The MCF distribution area will contain a connector-build.xml
      (3) There will be code in each connector's build.xml that accepts an environment variable to reference the MCF distribution area, for example:

          <property environment="env"/>
          <condition property="mcf-dist-path" value="${env.DISTPATH}">
              <isset property="env.DISTPATH"/>
          </condition>
          <condition property="mcf-dist-path" value="../../dist">
              <not>
                  <isset property="env.DISTPATH"/>
              </not>
          </condition>
      
          <import file="${mcf-dist-path}/connector-build.xml"/>
      

      I've tried this and it works. In this way, both standard builds and third-party connector builds can readily be supported.

      The other requirements for this change are the following:
      (1) The connector build needs to control installation of the connector into the examples, so targets that do this must be moved from the main build.xml to connector-build.xml
      (2) Connector unit tests will require dist area test jars to be delivered too
      (3) Integration tests may benefit from a similar test-centric setup
      (4) The main build file should be completely rewritten, and become heavily parametrized instead of having so many explicit targets
      (5) Conditional delivery logic will also need to be ported to connector-build.xml

      This is not a small task by any means, but it can be done on a branch since I don't believe it would require significant tree reorganization. If tree reorganization does turn out to be required, that should be committed to trunk as a separate step.

      Attachments

        Activity

          People

            kwright@metacarta.com Karl Wright
            kwright@metacarta.com Karl Wright
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: