diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 3501a78ca..86bbf642e 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -60,6 +60,6 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Build - run: docker build . --rm -t electrs:tests + run: docker build -f Dockerfile.ci . --rm -t electrs:tests - name: Test run: docker run -v $PWD/contrib/:/contrib -v $PWD/tests/:/tests --rm electrs:tests bash /tests/run.sh diff --git a/Dockerfile b/Dockerfile index 4a033ab71..9c45ddc9e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,42 +2,23 @@ # The maintainers of electrs are not deeply familiar with Docker, so you should DYOR. # If you are not familiar with Docker either it's probably be safer to NOT use it. +FROM debian:bullseye-slim as base +RUN apt-get update -qqy +RUN apt-get install -qqy librocksdb-dev=6.11.4-3 + ### Electrum Rust Server ### -FROM rust:1.41.1-slim as electrs-build -RUN apt-get update -RUN apt-get install -qq -y clang cmake +FROM base as electrs-build +RUN apt-get install -qqy cargo clang cmake build-essential # Install electrs WORKDIR /build/electrs COPY . . +ENV ROCKSDB_INCLUDE_DIR=/usr/include +ENV ROCKSDB_LIB_DIR=/usr/lib RUN cargo install --locked --path . -FROM debian:buster-slim as updated -RUN apt-get update -qqy - -### Bitcoin Core ### -FROM updated as bitcoin-build -# Download -RUN apt-get install -qqy wget -WORKDIR /build/bitcoin -ARG BITCOIND_VERSION=22.0 -RUN wget -q https://bitcoincore.org/bin/bitcoin-core-$BITCOIND_VERSION/bitcoin-$BITCOIND_VERSION-x86_64-linux-gnu.tar.gz -RUN tar xvf bitcoin-$BITCOIND_VERSION-x86_64-linux-gnu.tar.gz -RUN mv -v bitcoin-$BITCOIND_VERSION/bin/bitcoind . -RUN mv -v bitcoin-$BITCOIND_VERSION/bin/bitcoin-cli . - -FROM updated as result +FROM base as result # Copy the binaries -COPY --from=electrs-build /usr/local/cargo/bin/electrs /usr/bin/electrs -COPY --from=bitcoin-build /build/bitcoin/bitcoind /build/bitcoin/bitcoin-cli /usr/bin/ -RUN bitcoind -version && bitcoin-cli -version - -### Electrum ### -# Clone latest Electrum wallet and a few test tools -WORKDIR /build/ -RUN apt-get install -qqy git libsecp256k1-0 python3-cryptography python3-setuptools python3-pip jq curl -RUN git clone --recurse-submodules https://github.com/spesmilo/electrum/ && cd electrum/ && git log -1 -RUN python3 -m pip install -e electrum/ +COPY --from=electrs-build /root/.cargo/bin/electrs /usr/bin/electrs -RUN electrum version --offline WORKDIR / diff --git a/Dockerfile.ci b/Dockerfile.ci new file mode 100644 index 000000000..770a867e1 --- /dev/null +++ b/Dockerfile.ci @@ -0,0 +1,44 @@ +# Important: This file is provided for demonstration purposes and may NOT be suitable for production use. +# The maintainers of electrs are not deeply familiar with Docker, so you should DYOR. +# If you are not familiar with Docker either it's probably be safer to NOT use it. + +FROM debian:bullseye-slim as base +RUN apt-get update -qqy +RUN apt-get install -qqy librocksdb-dev=6.11.4-3 wget + +### Electrum Rust Server ### +FROM base as electrs-build +RUN apt-get install -qqy cargo clang cmake build-essential + +# Install electrs +WORKDIR /build/electrs +COPY . . +ENV ROCKSDB_INCLUDE_DIR=/usr/include +ENV ROCKSDB_LIB_DIR=/usr/lib +RUN cargo install --locked --path . + +### Bitcoin Core ### +FROM base as bitcoin-build +# Download +WORKDIR /build/bitcoin +ARG BITCOIND_VERSION=22.0 +RUN wget -q https://bitcoincore.org/bin/bitcoin-core-$BITCOIND_VERSION/bitcoin-$BITCOIND_VERSION-x86_64-linux-gnu.tar.gz +RUN tar xvf bitcoin-$BITCOIND_VERSION-x86_64-linux-gnu.tar.gz +RUN mv -v bitcoin-$BITCOIND_VERSION/bin/bitcoind . +RUN mv -v bitcoin-$BITCOIND_VERSION/bin/bitcoin-cli . + +FROM base as result +# Copy the binaries +COPY --from=electrs-build /root/.cargo/bin/electrs /usr/bin/electrs +COPY --from=bitcoin-build /build/bitcoin/bitcoind /build/bitcoin/bitcoin-cli /usr/bin/ +RUN bitcoind -version && bitcoin-cli -version + +### Electrum ### +# Clone latest Electrum wallet and a few test tools +WORKDIR /build/ +RUN apt-get install -qqy git libsecp256k1-0 python3-cryptography python3-setuptools python3-pip jq curl +RUN git clone --recurse-submodules https://github.com/spesmilo/electrum/ && cd electrum/ && git log -1 +RUN python3 -m pip install -e electrum/ + +RUN electrum version --offline +WORKDIR / diff --git a/rust-toolchain b/rust-toolchain index f86fb9cbc..9db5ea12f 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -1.41.1 +1.48.0 diff --git a/src/config.rs b/src/config.rs index 747c79767..947fa63f9 100644 --- a/src/config.rs +++ b/src/config.rs @@ -17,8 +17,9 @@ const DEFAULT_SERVER_ADDRESS: [u8; 4] = [127, 0, 0, 1]; // by default, serve on mod internal { #![allow(unused)] - #![allow(clippy::identity_conversion)] #![allow(clippy::cognitive_complexity)] + #![allow(clippy::unnecessary_lazy_evaluations)] + #![allow(clippy::useless_conversion)] include!(concat!(env!("OUT_DIR"), "/configure_me_config.rs")); } diff --git a/src/p2p.rs b/src/p2p.rs index 550f07f55..b027a2c9a 100644 --- a/src/p2p.rs +++ b/src/p2p.rs @@ -313,6 +313,7 @@ fn build_version_message() -> NetworkMessage { } fn is_block_inv(inv: &Inventory) -> bool { + #![allow(clippy::match_like_matches_macro)] // TODO: remove after dropping Rust 1.41.1 support if let Inventory::Block(_) = inv { true } else {