1. Disable zlib _explictly_ when building libcurl in remote attestaion demo. The reason for this is that zlib may be implictly linked by the build system of libcurl but not the zlib library is not copied into the Occlum FS image. 2. Use `make -j$(nproc)` 3. Fix typos
114 lines
2.2 KiB
Bash
Executable File
114 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
INSTALL_DIR=/usr/local/occlum/x86_64-linux-musl/
|
|
GRPC_SRC_DIR=$PWD/grpc
|
|
export PATH=$PATH:$INSTALL_DIR/bin
|
|
|
|
git clone https://github.com/grpc/grpc.git
|
|
cd grpc
|
|
git checkout tags/v1.24.3
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "git clone failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Install c-ares
|
|
cd $GRPC_SRC_DIR/third_party/cares/cares
|
|
git submodule update --init .
|
|
git checkout tags/cares-1_15_0
|
|
mkdir -p build
|
|
cd build
|
|
cmake ../ \
|
|
-DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=occlum-gcc \
|
|
-DCMAKE_INSTALL_PREFIX=$INSTALL_DIR
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "cares cmake failed"
|
|
exit 1
|
|
fi
|
|
make -j$(nproc)
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "cares make failed"
|
|
exit 1
|
|
fi
|
|
make install
|
|
|
|
# Install zlib
|
|
cd $GRPC_SRC_DIR/third_party/zlib
|
|
git submodule update --init .
|
|
git checkout tags/v1.2.11
|
|
mkdir -p build
|
|
cd build
|
|
cmake ../ \
|
|
-DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=occlum-gcc \
|
|
-DCMAKE_CXX_COMPILER=occlum-g++ -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \
|
|
-DCMAKE_NO_SYSTEM_FROM_IMPORTED=TRUE
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "zlib cmake failed"
|
|
exit 1
|
|
fi
|
|
make -j$(nproc)
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "zlib make failed"
|
|
exit 1
|
|
fi
|
|
make install
|
|
|
|
# Install protobuf
|
|
cd $GRPC_SRC_DIR/third_party/protobuf
|
|
git submodule update --init .
|
|
git checkout tags/v3.10.0
|
|
cd cmake
|
|
mkdir -p build
|
|
cd build
|
|
cmake ../ \
|
|
-Dprotobuf_BUILD_TESTS=OFF -DBUILD_SHARED_LIBS=TRUE \
|
|
-DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=occlum-gcc \
|
|
-DCMAKE_CXX_COMPILER=occlum-g++ -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \
|
|
-DCMAKE_NO_SYSTEM_FROM_IMPORTED=TRUE
|
|
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "protobuf cmake failed"
|
|
exit 1
|
|
fi
|
|
|
|
make -j$(nproc)
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "protobuf make failed"
|
|
exit 1
|
|
fi
|
|
make install
|
|
|
|
cp $INSTALL_DIR/bin/protoc /usr/bin
|
|
|
|
# Install gRPC
|
|
cd $GRPC_SRC_DIR/cmake
|
|
mkdir -p build
|
|
cd build
|
|
cmake ../.. \
|
|
-DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=occlum-gcc \
|
|
-DCMAKE_CXX_COMPILER=occlum-g++ -DgRPC_INSTALL=ON -DgRPC_PROTOBUF_PROVIDER=package \
|
|
-DgRPC_ZLIB_PROVIDER=package -DgRPC_CARES_PROVIDER=package \
|
|
-DgRPC_SSL_PROVIDER=package -DCMAKE_PREFIX_PATH=$INSTALL_DIR \
|
|
-DCMAKE_NO_SYSTEM_FROM_IMPORTED=TRUE -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR
|
|
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "grpc cmake failed"
|
|
exit 1
|
|
fi
|
|
|
|
make -j$(nproc)
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "grpc make failed"
|
|
exit 1
|
|
fi
|
|
make install
|
|
echo "gRPC build success"
|