Commit 7f9afc54 authored by Jérome Perrin's avatar Jérome Perrin

shared: Fix recovery after an interrupted build

When build process is interrupted (like when the buildout process
terminated by SIGKILL), building with shared leave the system in a state
that looks like installation succeeded, so next execution will assume
the part was properly installed.

The behavior was something like this:

    if isSharedPartSignatureOK():
      useThisAlreadyInstalledPart()
    else:
      writeSignatureInSharedPart()
      try:
        build()
      except:
        removeSharedPart()
        raise

and when program is terminated during build step, the signature is
there.

The fix is to write signature later, algorithm becomes:

    if isSharedPartSignatureOK():
      useThisAlreadyInstalledPart()
    else:
      try:
        build()
      except:
        removeSharedPart()
        raise
      writeSignatureInSharedPart()
parent dc5b5bac
Pipeline #6960 running with stage
in 0 seconds