title: How to implement simple dependencies between DrRacket plugins?
body: <p>I want to implement 2 DrRacket plugins or tools, where I have a dependency between one tool and the other. Essentially, one tool must have access to a function provided by the other tool. The current code I have is something like:</p>
  <p>providing tool:</p>
  <pre><code>(provide tool@ extra-signature^)
  (define-signature extra-signature^ (some-procedure))
  (define tool@ 
  (unit
    (import drracket:tool^)
    (export drracket:tool-exports^ extra-signature^)
    (define (phase1) void)
    (define (phase2) void)
    (define (some-procedure) void)
    ))
  </code></pre>
  <p>dependent tool:</p>
  <pre><code>(require extra-signature)
  (provide tool@)
  (define tool@
    (unit
    (import drracket:tool^ extra-signature^)
    (export drracket:tool-exports^)
    (define (phase1) void)
    (define (phase2) void)
    (some-procedure)
    ))
  </code></pre>
  <p>Trying to run DrRacket with above tools gives the error:</p>
  <p>Error invoking tool #&lt;path:/Users/...;(&quot;dependentTool.rkt&quot;)</p>
  <p>define-unit-binding: unit argument expects an untagged import with signature extra-signature^, which this usage context does not supply</p>
  <p>How can I actually implement such a dependency between DrRacket plugins?</p>