Skip to content
Stafford Horne edited this page Feb 18, 2017 · 4 revisions

The following part describes how the OpenRISC GCC maintainers create releases:

For plain gcc

  • Fetch an upstream release from their repository (they have the form gcc-{version}-release.

  • Merge this release into the OpenRISC branch (or a version branch)

  • Create a branch or1k-{version}

  • Create an annotated tag or1k-{version}-release

      git tag -a or1k-{version}-release -m "GCC {version} Release for OpenRISC"
    
  • Push this tag: git push origin or1k-{version}-release

  • Create the OpenRISC patch: git diff gcc-{version}-release > gcc-{version}-or1k.patch

  • Visit the repository on GitHub and go to releases

    • Edit the new tag
    • Set release title: GCC {version} with OpenRISC patches
    • Upload the patch

For musl gcc patches

As musl is not part of GCC, we also patch GCC for musl:

  • Branch or1k-{version} to musl-{version}
  • Get the patches for the GCC version (branch per release)
  • Apply the patches listed in series and commit similar to this commit
  • Finally, apply the or1k-specific patch: git cherry-pick 3455e5a
  • Push the branch

Where to go next

Automation

Stafford has put together some scripts that help automate the build release parts above.

The or1k-toolchain-build project helps with:

  • Build binaries for musl, newlib and nolib(no libc just binutils and gcc for linux builds)
  • The binaries are built in a docker container for easy reproduction
  • release.sh script to create the git tag, .patch files and github release draft
  • upload.sh script to upload patches and binaries the the release