Qpid Proton
  1. Qpid Proton
  2. PROTON-194

Change proton's build systems to allow for the creation of a Java binding for proton-c.

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.4
    • Component/s: proton-c, proton-j
    • Labels:
      None

      Description

      The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

      To avoid making excessive edits to this JIRA I've created a wiki page listing the provisional requirements of or build system: https://cwiki.apache.org/confluence/display/qpid/Proton+build+system+proposals

        Issue Links

          Activity

          Keith Wall created issue -
          Keith Wall made changes -
          Field Original Value New Value
          Link This issue is depended upon by PROTON-192 [ PROTON-192 ]
          Keith Wall made changes -
          Description Change
          Philip Harvey made changes -
          Description Change The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          Each of the following things should be easy to do in a small number of steps (ideally in one step).

          - Starting from a fresh checkout out the base proton directory:
            - Build proton-c, including the language bindings
            - Build proton-j
            - Run the system tests against:
              - proton-c via its Python binding
              - proton-c via the JNI binding
              - proton-j

          It should also be convenient to run all of the above system test configurations after making a local change to any of:
            - proton-api
            - proton-c implementation
            - proton-c JNI bindings
            - proton-j

          - Starting from a *fresh checkout* of proton-c, release the proton-c tarball
          - Starting from a *fresh checkout* of proton-j, publish the proton-j maven artefacts

          I'm not sure how fixed the aforementioned requirements for independent checkouts are. Maybe we could relax the above requirement by stating that you would also need to check out an accompanying top-level "api" module.
          Philip Harvey made changes -
          Description The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          Each of the following things should be easy to do in a small number of steps (ideally in one step).

          - Starting from a fresh checkout out the base proton directory:
            - Build proton-c, including the language bindings
            - Build proton-j
            - Run the system tests against:
              - proton-c via its Python binding
              - proton-c via the JNI binding
              - proton-j

          It should also be convenient to run all of the above system test configurations after making a local change to any of:
            - proton-api
            - proton-c implementation
            - proton-c JNI bindings
            - proton-j

          - Starting from a *fresh checkout* of proton-c, release the proton-c tarball
          - Starting from a *fresh checkout* of proton-j, publish the proton-j maven artefacts

          I'm not sure how fixed the aforementioned requirements for independent checkouts are. Maybe we could relax the above requirement by stating that you would also need to check out an accompanying top-level "api" module.
          The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          Each of the following things should be easy to do in a small number of steps (ideally in one step).

          - Starting from a fresh checkout out the base proton directory:
            - Build proton-c, including the language bindings
            - Build proton-j
            - Run the system tests against:
              - proton-c via its Python binding
              - proton-c via the JNI binding
              - proton-j

          It should also be convenient to run all of the above system test configurations after making a local change to any of:
            - proton-api
            - proton-c implementation
            - proton-c JNI bindings
            - proton-j

          - Starting from a *fresh checkout* of proton-c, release the proton-c tarball
          - Starting from a *fresh checkout* of proton-j, publish the proton-j maven artefacts

          I'm not sure how fixed the aforementioned requirements for independent checkouts are. Maybe we could relax the requirement by stating that you would also need to check out an accompanying top-level "api" module.
          Philip Harvey made changes -
          Description The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          Each of the following things should be easy to do in a small number of steps (ideally in one step).

          - Starting from a fresh checkout out the base proton directory:
            - Build proton-c, including the language bindings
            - Build proton-j
            - Run the system tests against:
              - proton-c via its Python binding
              - proton-c via the JNI binding
              - proton-j

          It should also be convenient to run all of the above system test configurations after making a local change to any of:
            - proton-api
            - proton-c implementation
            - proton-c JNI bindings
            - proton-j

          - Starting from a *fresh checkout* of proton-c, release the proton-c tarball
          - Starting from a *fresh checkout* of proton-j, publish the proton-j maven artefacts

          I'm not sure how fixed the aforementioned requirements for independent checkouts are. Maybe we could relax the requirement by stating that you would also need to check out an accompanying top-level "api" module.
          The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          Each of the following things should be easy to do in a small number of steps (ideally in one step).

          - Starting from a fresh checkout out the base proton directory:
            - Build proton-c, including the language bindings
            - Build proton-j
            - Run the system tests against:
              - proton-c via its Python binding
              - proton-c via the JNI binding
              - proton-j

          After making a local code change to any part of Proton it should also be easy to re-run each of the system test configurations listed above.

          - Create an SVN tag and use it to:
            - Release the proton-c tarball
            - Publish the proton-j maven artefacts

          I'm not sure how fixed the aforementioned requirements for independent checkouts are. Maybe we could relax the requirement by stating that you would also need to check out an accompanying top-level "api" module.
          Philip Harvey made changes -
          Description The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          Each of the following things should be easy to do in a small number of steps (ideally in one step).

          - Starting from a fresh checkout out the base proton directory:
            - Build proton-c, including the language bindings
            - Build proton-j
            - Run the system tests against:
              - proton-c via its Python binding
              - proton-c via the JNI binding
              - proton-j

          After making a local code change to any part of Proton it should also be easy to re-run each of the system test configurations listed above.

          - Create an SVN tag and use it to:
            - Release the proton-c tarball
            - Publish the proton-j maven artefacts

          I'm not sure how fixed the aforementioned requirements for independent checkouts are. Maybe we could relax the requirement by stating that you would also need to check out an accompanying top-level "api" module.
          The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          Each of the following things should be easy to do in a small number of steps (ideally in one step).

          - Starting from a fresh checkout out the base proton directory:
            - Build proton-c, including the language bindings
            - Build proton-j
            - Run the system tests against:
              - proton-c via its Python binding
              - proton-c via the JNI binding
              - proton-j

          After making a local code change to any part of Proton it should also be easy to re-run each of the system test configurations listed above.

          - Create an SVN tag and use it to:
            - Release the proton-c tarball
            - Publish the proton-j maven artefacts

          I'm not sure how fixed the aforementioned requirements for independent checkouts are. Maybe we could relax the requirement by stating that you would also need to check out an accompanying top-level "api" module.

          All the usual software engineering rules apply, e.g.
            - Don't Repeat Yourself
            - Adhere to the Principle of Least Surprise
          Philip Harvey made changes -
          Description The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          Each of the following things should be easy to do in a small number of steps (ideally in one step).

          - Starting from a fresh checkout out the base proton directory:
            - Build proton-c, including the language bindings
            - Build proton-j
            - Run the system tests against:
              - proton-c via its Python binding
              - proton-c via the JNI binding
              - proton-j

          After making a local code change to any part of Proton it should also be easy to re-run each of the system test configurations listed above.

          - Create an SVN tag and use it to:
            - Release the proton-c tarball
            - Publish the proton-j maven artefacts

          I'm not sure how fixed the aforementioned requirements for independent checkouts are. Maybe we could relax the requirement by stating that you would also need to check out an accompanying top-level "api" module.

          All the usual software engineering rules apply, e.g.
            - Don't Repeat Yourself
            - Adhere to the Principle of Least Surprise
          The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          Each of the following things should be easy to do in a small number of steps (ideally in one step).

          - Starting from a fresh checkout out the base proton directory:
            - Build proton-c, including the language bindings
            - Build proton-j
            - Run the system tests against:
              - proton-c via its Python binding
              - proton-c via the JNI binding
              - proton-j

          After making a local code change to any part of Proton it should also be easy to re-run each of the system test configurations listed above.

          - Create an SVN tag and use it to:
            - Release the proton-c tarball
            - Publish the proton-j maven artefacts

          I'm not sure how fixed the aforementioned requirements are for independent proton-j/proton-c checkouts. Maybe we could relax the requirement by stating that you would also need to check out an accompanying top-level "api" module.

          All the usual software engineering rules apply, e.g.
            - Don't Repeat Yourself
            - Adhere to the Principle of Least Surprise
          Philip Harvey made changes -
          Description The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          Each of the following things should be easy to do in a small number of steps (ideally in one step).

          - Starting from a fresh checkout out the base proton directory:
            - Build proton-c, including the language bindings
            - Build proton-j
            - Run the system tests against:
              - proton-c via its Python binding
              - proton-c via the JNI binding
              - proton-j

          After making a local code change to any part of Proton it should also be easy to re-run each of the system test configurations listed above.

          - Create an SVN tag and use it to:
            - Release the proton-c tarball
            - Publish the proton-j maven artefacts

          I'm not sure how fixed the aforementioned requirements are for independent proton-j/proton-c checkouts. Maybe we could relax the requirement by stating that you would also need to check out an accompanying top-level "api" module.

          All the usual software engineering rules apply, e.g.
            - Don't Repeat Yourself
            - Adhere to the Principle of Least Surprise
          The catalyst for this work was the need to conveniently build and test the JNI bindings created in PROTON-192. However, there are a number of other requirements for our build system that are worth reiterating.

          To avoid making excessive edits to this JIRA I've created a wiki page listing the provisional requirements of or build system: https://cwiki.apache.org/confluence/display/qpid/Proton+build+system+proposals
          Philip Harvey made changes -
          Link This issue blocks PROTON-207 [ PROTON-207 ]
          Philip Harvey made changes -
          Summary Change proton's build systems to support allow for the creation of a Java binding for proton-c. Change proton's build systems to allow for the creation of a Java binding for proton-c.
          Keith Wall made changes -
          Link This issue is depended upon by PROTON-210 [ PROTON-210 ]
          Philip Harvey made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Assignee Philip Harvey [ philharveyonline ]
          Fix Version/s 0.4 [ 12324003 ]
          Resolution Fixed [ 1 ]
          Philip Harvey made changes -
          Link This issue is related to PROTON-217 [ PROTON-217 ]
          Gavin made changes -
          Link This issue blocks PROTON-207 [ PROTON-207 ]
          Gavin made changes -
          Link This issue is depended upon by PROTON-207 [ PROTON-207 ]

            People

            • Assignee:
              Philip Harvey
              Reporter:
              Keith Wall
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development