Uploaded image for project: 'Go Driver'
  1. Go Driver
  2. GODRIVER-3182

Replace make/makefile with something better

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Unknown Unknown
    • 2.0.0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Go Drivers
    • Not Needed
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?

      Context

      Make causes issues:

      • make has hidden test failures before and must be used very carefully to prevent silently discarding errors. Generally when make fails, it fails in a way that hides issues, which can be extremely dangerous.
      • Makefile scripts are difficult to write. The syntax is bash-like, but not bash, which can lead to very confusing errors if any more advanced scripting features are used. As a result, we use extremely simple Makefile} scripts.
      • Users must have make available and installed, which is a problem for users not on macOS or Linux.
      • We almost never take advantage of the artifact tracking features of make (i.e. almost all of our make targets are .PHONY).

      We should find a better system for managing builds, tests, and scripts.

      Definition of done

      Replace make with something that resolves the above issues. A replacement should have the following characteristics:

      • Fail in an obvious and reliable manner. Never swallow errors.
      • Take less time to define and update targets.
      • Be more operating system agnostic. Ideally all that should be required is that Go is installed, but we may still have to use Bash scripts for some tasks.

      Pitfalls

      We will probably find things we don't like about any build/script system. We need to pick the right tradeoffs so the make replacement reduces maintenance cost, but it may not immediately be obvious what the tradeoffs are.

            Assignee:
            steve.silvester@mongodb.com Steve Silvester
            Reporter:
            matt.dale@mongodb.com Matt Dale
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: