build.sh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/bin/bash
  2. set -x
  3. # Change to repo root.
  4. cd $(dirname $0)/../../../..
  5. # Initialize any submodules.
  6. git submodule update --init --recursive
  7. # Generate the configure script.
  8. ./autogen.sh
  9. # Cross-build for aarch64, ppc64le and s390x. Note: we do these builds first to avoid
  10. # file permission issues. The Docker builds will create directories owned by
  11. # root, which causes problems if we try to add new artifacts to those
  12. # directories afterward.
  13. sudo apt install -y g++-aarch64-linux-gnu
  14. protoc-artifacts/build-protoc.sh linux aarch_64 protoc
  15. sudo apt install -y g++-powerpc64le-linux-gnu
  16. protoc-artifacts/build-protoc.sh linux ppcle_64 protoc
  17. sudo apt install -y g++-s390x-linux-gnu
  18. protoc-artifacts/build-protoc.sh linux s390_64 protoc
  19. # Use docker image to build linux artifacts.
  20. DOCKER_IMAGE_NAME=protobuf/protoc_$(sha1sum protoc-artifacts/Dockerfile | cut -f1 -d " ")
  21. docker pull $DOCKER_IMAGE_NAME
  22. docker run -v $(pwd):/var/local/protobuf --rm $DOCKER_IMAGE_NAME \
  23. bash -l /var/local/protobuf/protoc-artifacts/build-protoc.sh \
  24. linux x86_64 protoc || {
  25. echo "Failed to build protoc for linux + x86_64."
  26. exit 1
  27. }
  28. docker run -v $(pwd):/var/local/protobuf --rm $DOCKER_IMAGE_NAME \
  29. bash -l /var/local/protobuf/protoc-artifacts/build-protoc.sh \
  30. linux x86_32 protoc || {
  31. echo "Failed to build protoc for linux + x86_32."
  32. exit 1
  33. }