Build/install native programs within cargo-install-all.sh

This commit is contained in:
Michael Vines 2018-12-19 10:30:24 -08:00 committed by Grimes
parent 6e56e41461
commit c3c955b02e
6 changed files with 37 additions and 44 deletions

View File

@ -43,8 +43,7 @@ echo --- Creating tarball
git rev-parse HEAD git rev-parse HEAD
) > solana-release/version.txt ) > solana-release/version.txt
scripts/cargo-install-all.sh --root solana-release scripts/cargo-install-all.sh solana-release
scripts/install-native-programs.sh solana-release/bin/deps/ release
./fetch-perf-libs.sh ./fetch-perf-libs.sh
# shellcheck source=/dev/null # shellcheck source=/dev/null

View File

@ -145,9 +145,7 @@ build() {
fi fi
$MAYBE_DOCKER bash -c " $MAYBE_DOCKER bash -c "
set -ex set -ex
export NDEBUG=1 scripts/cargo-install-all.sh farf \"$cargoFeatures\"
scripts/cargo-install-all.sh --features=$cargoFeatures --root farf
scripts/install-native-programs.sh farf/bin/deps/ release
" "
) )
echo "Build took $SECONDS seconds" echo "Build took $SECONDS seconds"

View File

@ -1,13 +1,27 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# |cargo install| of the top-level crate will not install binaries for # |cargo install| of the top-level crate will not install binaries for
# other workspace creates. # other workspace crates or native program crates.
set -e set -e
cd "$(dirname "$0")/.."
if [[ -z $1 ]]; then
echo Install directory not specified
exit 1
fi
installDir="$(mkdir -p "$1"; cd "$1"; pwd)"
cargoFeatures="$2"
echo "Install location: $installDir"
cd "$(dirname "$0")"/..
SECONDS=0 SECONDS=0
CRATES=( (
set -x
cargo build --all --release --features="$cargoFeatures"
)
BIN_CRATES=(
drone drone
keygen keygen
fullnode fullnode
@ -18,11 +32,23 @@ CRATES=(
ledger-tool ledger-tool
wallet wallet
) )
for crate in "${CRATES[@]}"; do
for crate in "${BIN_CRATES[@]}"; do
( (
set -x set -x
cargo install --path "$crate" "$@" cargo install --force --path "$crate" --root "$installDir" --features="$cargoFeatures"
) )
done done
for dir in programs/native/*; do
for program in echo target/release/deps/lib{,solana_}"$(basename "$dir")"{,_program}.{so,dylib,dll}; do
if [[ -f $program ]]; then
mkdir -p "$installDir/bin/deps"
rm -f "$installDir/bin/deps/$(basename "$program")"
cp -v "$program" "$installDir"/bin/deps
fi
done
done
du -a "$installDir"
echo "Done after $SECONDS seconds" echo "Done after $SECONDS seconds"

View File

@ -1,27 +0,0 @@
#!/usr/bin/env bash
#
# Installs native programs as |cargo install| doesn't know about them
#
set -e
here=$(dirname "$0")
SOLANA_ROOT="$(cd "$here"/..; pwd)"
installDir=$1
variant=${2:-release}
if [[ -z $installDir ]]; then
echo Install directory not specified
exit 1
fi
for dir in "$SOLANA_ROOT"/programs/native/*; do
for program in echo "$SOLANA_ROOT"/target/"$variant"/deps/lib{,solana_}"$(basename "$dir")"{,_program}.{so,dylib,dll}; do
if [[ -f $program ]]; then
mkdir -p "$installDir"
rm -f "$installDir/$(basename "$program")"
cp -v "$program" "$installDir"
fi
done
done

View File

@ -18,11 +18,9 @@ if [[ -z $CHANNEL ]]; then
fi fi
rm -rf usr/ rm -rf usr/
../../ci/docker-run.sh solanalabs/rust:1.31.0 bash -c " ../../ci/docker-run.sh solanalabs/rust:1.31.0 \
set -ex scripts/cargo-install-all.sh sdk/docker-solana/usr
scripts/cargo-install-all.sh --root sdk/docker-solana/usr
scripts/install-native-programs.sh sdk/docker-solana/usr/bin/deps/ release
"
cp -f entrypoint.sh usr/bin/solana-entrypoint.sh cp -f entrypoint.sh usr/bin/solana-entrypoint.sh
docker build -t solanalabs/solana:$CHANNEL . docker build -t solanalabs/solana:$CHANNEL .

View File

@ -91,8 +91,7 @@ parts:
- scripts - scripts
override-build: | override-build: |
# Build/install all programs # Build/install all programs
scripts/cargo-install-all.sh --root $SNAPCRAFT_PART_INSTALL --bins scripts/cargo-install-all.sh $SNAPCRAFT_PART_INSTALL
scripts/install-native-programs.sh $SNAPCRAFT_PART_INSTALL/bin/deps/ release
# Install multinode-demo/ # Install multinode-demo/
mkdir -p $SNAPCRAFT_PART_INSTALL/multinode-demo/ mkdir -p $SNAPCRAFT_PART_INSTALL/multinode-demo/