Add libz and libpq to support diesel
This commit is contained in:
parent
e3e7ea370b
commit
372d547138
27
Dockerfile
27
Dockerfile
|
@ -54,18 +54,39 @@ WORKDIR /home/rust/libs
|
||||||
|
|
||||||
# Build a static library version of OpenSSL using musl-libc. This is
|
# Build a static library version of OpenSSL using musl-libc. This is
|
||||||
# needed by the popular Rust `hyper` crate.
|
# needed by the popular Rust `hyper` crate.
|
||||||
RUN VERS=1.0.2l && \
|
RUN echo "Building OpenSSL" && \
|
||||||
|
VERS=1.0.2l && \
|
||||||
curl -O https://www.openssl.org/source/openssl-$VERS.tar.gz && \
|
curl -O https://www.openssl.org/source/openssl-$VERS.tar.gz && \
|
||||||
tar xvzf openssl-$VERS.tar.gz && cd openssl-$VERS && \
|
tar xvzf openssl-$VERS.tar.gz && cd openssl-$VERS && \
|
||||||
env CC=musl-gcc ./config --prefix=/usr/local/musl && \
|
env CC=musl-gcc ./config --prefix=/usr/local/musl && \
|
||||||
env C_INCLUDE_PATH=/usr/local/musl/include/ make depend && \
|
env C_INCLUDE_PATH=/usr/local/musl/include/ make depend && \
|
||||||
make && sudo make install && \
|
make && sudo make install && \
|
||||||
cd .. && rm -rf openssl-$VERS.tar.gz openssl-$VERS
|
cd .. && rm -rf openssl-$VERS.tar.gz openssl-$VERS && \
|
||||||
|
echo "Building zlib" && \
|
||||||
|
VERS=1.2.11 && \
|
||||||
|
cd /home/rust/libs && \
|
||||||
|
curl -LO http://zlib.net/zlib-$VERS.tar.gz && \
|
||||||
|
tar xzf zlib-$VERS.tar.gz && cd zlib-$VERS && \
|
||||||
|
CC=musl-gcc ./configure --static --prefix=/usr/local/musl && \
|
||||||
|
make && sudo make install && \
|
||||||
|
cd .. && rm -rf zlib-$VERS.tar.gz zlib-$VERS && \
|
||||||
|
echo "Building libpq" && \
|
||||||
|
VERS=9.6.5 && \
|
||||||
|
curl -o postgres.tar.gz https://ftp.postgresql.org/pub/source/v$VERS/postgresql-$VERS.tar.gz && \
|
||||||
|
tar xzf postgres.tar.gz && \
|
||||||
|
cd postgresql-$VERS && \
|
||||||
|
CC=musl-gcc CPPFLAGS=-I/usr/local/musl/include LDFLAGS=-L/usr/local/musl/lib ./configure --with-openssl --without-readline --prefix=/usr/local/musl && \
|
||||||
|
cd src/interfaces/libpq && \
|
||||||
|
make all-static-lib && sudo make install-lib-static && \
|
||||||
|
cd ../../../.. && rm -rf postgres.tar.gz postgresql-$VERS
|
||||||
|
|
||||||
ENV OPENSSL_DIR=/usr/local/musl/ \
|
ENV OPENSSL_DIR=/usr/local/musl/ \
|
||||||
OPENSSL_INCLUDE_DIR=/usr/local/musl/include/ \
|
OPENSSL_INCLUDE_DIR=/usr/local/musl/include/ \
|
||||||
DEP_OPENSSL_INCLUDE=/usr/local/musl/include/ \
|
DEP_OPENSSL_INCLUDE=/usr/local/musl/include/ \
|
||||||
OPENSSL_LIB_DIR=/usr/local/musl/lib/ \
|
OPENSSL_LIB_DIR=/usr/local/musl/lib/ \
|
||||||
OPENSSL_STATIC=1
|
OPENSSL_STATIC=1 \
|
||||||
|
PQ_LIB_DIR=/usr/local/musl/lib \
|
||||||
|
PQ_LIB_STATIC=1
|
||||||
|
|
||||||
# (Please feel free to submit pull requests for musl-libc builds of other C
|
# (Please feel free to submit pull requests for musl-libc builds of other C
|
||||||
# libraries needed by the most popular and common Rust crates, to avoid
|
# libraries needed by the most popular and common Rust crates, to avoid
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
FROM ekidd/rust-musl-builder
|
FROM ekidd/rust-musl-builder
|
||||||
|
|
||||||
# Build a static copy of zlib.
|
# Build a static copy of zlib.
|
||||||
|
#
|
||||||
|
# EXAMPLE ONLY! libz is already included.
|
||||||
RUN VERS=1.2.11 && \
|
RUN VERS=1.2.11 && \
|
||||||
cd /home/rust/libs && \
|
cd /home/rust/libs && \
|
||||||
curl -LO http://zlib.net/zlib-$VERS.tar.gz && \
|
curl -LO http://zlib.net/zlib-$VERS.tar.gz && \
|
||||||
|
|
21
README.md
21
README.md
|
@ -32,6 +32,10 @@ libraries:
|
||||||
|
|
||||||
- The standard `musl-libc` libraries.
|
- The standard `musl-libc` libraries.
|
||||||
- OpenSSL, which is needed by many Rust applications.
|
- OpenSSL, which is needed by many Rust applications.
|
||||||
|
- `libpq`, which is needed for applications that use `diesel` with PostgreSQL.
|
||||||
|
- `libz`, which is needed by `libpq`.
|
||||||
|
|
||||||
|
This library also sets up the environment variables needed to compile popular Rust crates using these libraries.
|
||||||
|
|
||||||
## Making OpenSSL work
|
## Making OpenSSL work
|
||||||
|
|
||||||
|
@ -55,7 +59,8 @@ installed, you can create a Dockerfile based on this one, and use
|
||||||
```Dockerfile
|
```Dockerfile
|
||||||
FROM ekidd/rust-musl-builder
|
FROM ekidd/rust-musl-builder
|
||||||
|
|
||||||
RUN VERS=1.2.8 && \
|
# EXAMPLE ONLY! libz is already included.
|
||||||
|
RUN VERS=1.2.11 && \
|
||||||
cd /home/rust/libs && \
|
cd /home/rust/libs && \
|
||||||
curl -LO http://zlib.net/zlib-$VERS.tar.gz && \
|
curl -LO http://zlib.net/zlib-$VERS.tar.gz && \
|
||||||
tar xzf zlib-$VERS.tar.gz && cd zlib-$VERS && \
|
tar xzf zlib-$VERS.tar.gz && cd zlib-$VERS && \
|
||||||
|
@ -111,27 +116,17 @@ build new Linux binaries using `rust-musl-builder`, and new Mac binaries
|
||||||
with Cargo, and it will upload both to the GitHub releases page for your
|
with Cargo, and it will upload both to the GitHub releases page for your
|
||||||
repository.
|
repository.
|
||||||
|
|
||||||
For a working example, see [faradayio/conductor][conductor].
|
For a working example, see [faradayio/cage][cage].
|
||||||
|
|
||||||
[rust-cross]: https://github.com/japaric/rust-cross
|
[rust-cross]: https://github.com/japaric/rust-cross
|
||||||
[uploading]: https://docs.travis-ci.com/user/deployment/releases
|
[uploading]: https://docs.travis-ci.com/user/deployment/releases
|
||||||
[conductor]: https://github.com/faradayio/conductor
|
[cage]: https://github.com/faradayio/cage
|
||||||
|
|
||||||
## Development notes
|
## Development notes
|
||||||
|
|
||||||
After modifying the image, run `./test-image` to make sure that everything
|
After modifying the image, run `./test-image` to make sure that everything
|
||||||
works.
|
works.
|
||||||
|
|
||||||
MAINTAINERS ONLY: After making changes, they must be pushed to the `stable`
|
|
||||||
branch to build the official `stable` and `latest` images on Docker Hub.
|
|
||||||
Tagged versions of Rust (such as `1.11`) must be given their own branches
|
|
||||||
and manually configured on Docker Hub.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
git push origin master:stable
|
|
||||||
git push origin master:rust-$(rustc --version | awk '{ print $2 }')
|
|
||||||
```
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Either the [Apache 2.0 license](./LICENSE-APACHE.txt), or the
|
Either the [Apache 2.0 license](./LICENSE-APACHE.txt), or the
|
||||||
|
|
Loading…
Reference in a new issue