mirror of https://github.com/PiyushXCoder/lupt.git
buildback heroku fix 2
This commit is contained in:
parent
095359322c
commit
475188d1fb
|
|
@ -1,8 +0,0 @@
|
||||||
language: rust
|
|
||||||
sudo: required
|
|
||||||
rust:
|
|
||||||
- stable
|
|
||||||
script:
|
|
||||||
- |
|
|
||||||
cargo build &&
|
|
||||||
cargo test
|
|
||||||
152
bin/compile
152
bin/compile
|
|
@ -1,152 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Find all the directories we might need (based on
|
|
||||||
# heroku-buildpack-nodejs code).
|
|
||||||
BUILD_DIR=${1:-}
|
|
||||||
CACHE_DIR=${2:-}
|
|
||||||
ENV_DIR=${3:-}
|
|
||||||
BP_DIR=$(cd $(dirname ${0:-}); cd ..; pwd)
|
|
||||||
|
|
||||||
# Export DATABASE_URL at build time, mostly because Diesel is the best way to
|
|
||||||
# do SQL in Rust right now, and Diesel will use it to generate code for the
|
|
||||||
# database schema.
|
|
||||||
if [ -e "$ENV_DIR/DATABASE_URL" ]; then
|
|
||||||
export DATABASE_URL="$(cat $ENV_DIR/DATABASE_URL)";
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Set defaults for our configuration variables. Stable Rust is sufficiently
|
|
||||||
# stable at this point that I think we can just default it.
|
|
||||||
VERSION=stable
|
|
||||||
|
|
||||||
# Set this to "1" in `RustConfig` to just install a Rust toolchain and not
|
|
||||||
# build `Cargo.toml`. This is useful if you have a project written in Ruby
|
|
||||||
# or Node (for example) that needs to build extension modules using Rust.
|
|
||||||
RUST_SKIP_BUILD=0
|
|
||||||
# If your Rust code is not at the root directory of the repository, specify a
|
|
||||||
# `BUILD_PATH` to the correct directory in the `RustConfig`
|
|
||||||
BUILD_PATH=""
|
|
||||||
# Set this to "1" in `RustConfig` to install diesel at build time and copy it
|
|
||||||
# into the target directory, next to your app binary. This makes it easy to
|
|
||||||
# run migrations by adding a release step to your Procfile:
|
|
||||||
# `release: ./target/release/diesel migration run`
|
|
||||||
RUST_INSTALL_DIESEL=0
|
|
||||||
# These flags are passed to `cargo install diesel`, e.g. '--no-default-features --features postgres'
|
|
||||||
DIESEL_FLAGS=""
|
|
||||||
# Default build flags to pass to `cargo build`.
|
|
||||||
RUST_CARGO_BUILD_FLAGS="--release"
|
|
||||||
|
|
||||||
# Load our toolchain configuration, if any was specified.
|
|
||||||
if [ -f "$BUILD_DIR/rust-toolchain" ]; then
|
|
||||||
VERSION="$(cat "$BUILD_DIR/rust-toolchain")"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Load our configuration variables, if any were specified.
|
|
||||||
if [ -f "$BUILD_DIR/RustConfig" ]; then
|
|
||||||
. "$BUILD_DIR/RustConfig"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Standard paranoia.
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
# Check our configuration options.
|
|
||||||
if [ -z ${VERSION+x} ]; then
|
|
||||||
>&2 echo "failed: must set VERSION with rust-toolchain or RustConfig to indicate the Rust version."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Notify users running old, unstable versions of Rust about how to deploy
|
|
||||||
# successfully.
|
|
||||||
if [ $RUST_SKIP_BUILD -ne 1 ] && ( [ ! -z ${CARGO_URL+x} ] || [ ! -f "$BUILD_DIR/$BUILD_PATH/Cargo.toml" ] ); then
|
|
||||||
>&2 cat <<EOF
|
|
||||||
To deploy a modern Rust app, make sure you have a Cargo.toml file, and that
|
|
||||||
you do not define CARGO_URL or CARGO_VERSION in RustConfig. If you're
|
|
||||||
using an older version of Rust, and you need to re-deploy an existing
|
|
||||||
application, try setting your buildpack to:
|
|
||||||
|
|
||||||
https://github.com/emk/heroku-buildpack-rust.git#old-rust
|
|
||||||
EOF
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Handle people who still aren't using Rustup.
|
|
||||||
if [ ! -z ${URL+x} ]; then
|
|
||||||
>&2 cat <<EOF
|
|
||||||
heroku-pack-rust has switched to using rustup. You no longer need a
|
|
||||||
URL field in RustConfig. Instead, you should just specify a
|
|
||||||
rustup-compatible version (such as `1.11`, `stable` or `nighty`) in VERSION.
|
|
||||||
EOF
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Record our Rust build environment configuration in an export file, in
|
|
||||||
# case another buildpack needs it to build Ruby gems that use Rust or
|
|
||||||
# something like that.
|
|
||||||
cat <<EOF > $BP_DIR/export
|
|
||||||
# Our rustup installation.
|
|
||||||
export RUSTUP_HOME="$CACHE_DIR/multirust"
|
|
||||||
|
|
||||||
# Our cargo installation. We implicitly trust Rustup and Cargo
|
|
||||||
# to do the right thing when new versions are released.
|
|
||||||
export CARGO_HOME="$CACHE_DIR/cargo"
|
|
||||||
|
|
||||||
# Include binaries installed by cargo and rustup in our path.
|
|
||||||
PATH="\$CARGO_HOME/bin:\$PATH"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Read our build environment back in and evaluate it so that we can use it.
|
|
||||||
. $BP_DIR/export
|
|
||||||
|
|
||||||
# Switch to our cache directory.
|
|
||||||
mkdir -p "$CACHE_DIR"
|
|
||||||
cd "$CACHE_DIR"
|
|
||||||
|
|
||||||
# Make sure we have an appropriate Rust toolchain installed.
|
|
||||||
if [ -d "$CARGO_HOME" ]; then
|
|
||||||
echo "-----> Checking for new releases of Rust $VERSION channel"
|
|
||||||
# It's possible that $VERSION has changed, or the `stable` channel has updated.
|
|
||||||
rustup self update
|
|
||||||
rustup update "$VERSION"
|
|
||||||
rustup default "$VERSION"
|
|
||||||
else
|
|
||||||
echo "-----> Downloading rustup"
|
|
||||||
curl https://sh.rustup.rs -sSf > rustup.sh
|
|
||||||
chmod u+x rustup.sh
|
|
||||||
echo "-----> Using rustup to install Rust channel $VERSION"
|
|
||||||
./rustup.sh -y --default-toolchain "$VERSION"
|
|
||||||
rm rustup.sh
|
|
||||||
fi
|
|
||||||
if [ ! -x "$CARGO_HOME/bin/rustc" ]; then
|
|
||||||
echo "failed: Cannot find Rust binaries at $CARGO_HOME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# This is where we will cache our Rust output. Note the suggestions at
|
|
||||||
# https://github.com/alexcrichton/cargo/commit/014765f788ca1c2476936835ca32cc2746f99b42
|
|
||||||
# which describe how this needs to be named.
|
|
||||||
export CARGO_TARGET_DIR="$CACHE_DIR/target"
|
|
||||||
|
|
||||||
if [ $RUST_SKIP_BUILD -ne 1 ]; then
|
|
||||||
# Build our project (into CARGO_TARGET_DIR so we have caching) and copy it
|
|
||||||
# back to the source tree. In theory, we could probably just copy the
|
|
||||||
# binary or do something clever with `cargo install`, but we haven't
|
|
||||||
# figured that out yet.
|
|
||||||
#
|
|
||||||
# To debug git issues:
|
|
||||||
#export RUST_LOG="cargo::sources::git=debug"
|
|
||||||
# To debug compiler and linking issues, add `--verbose`.
|
|
||||||
echo "-----> Building application using Cargo"
|
|
||||||
cd "$BUILD_DIR/$BUILD_PATH"
|
|
||||||
rm -rf target/
|
|
||||||
cargo build $RUST_CARGO_BUILD_FLAGS
|
|
||||||
mkdir -p target/release
|
|
||||||
find "$CARGO_TARGET_DIR/release" -maxdepth 1 -type f -executable -exec cp -a -t target/release {} \;
|
|
||||||
else
|
|
||||||
echo "-----> Skipping Cargo build"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install diesel so we can use it for migrations
|
|
||||||
if [ $RUST_INSTALL_DIESEL -eq 1 ]; then
|
|
||||||
echo "-----> Installing diesel"
|
|
||||||
cargo install diesel_cli $DIESEL_FLAGS || echo "already installed"
|
|
||||||
cp $(which diesel) target/release/
|
|
||||||
fi
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# this pack is valid for apps with a hello.txt in the root
|
|
||||||
if [ -f $1/Cargo.toml ]; then
|
|
||||||
echo "Rust Actix"
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
[toolchain]
|
|
||||||
channel = "stable"
|
|
||||||
Loading…
Reference in New Issue