Ensure 'curl-impersonate' is compiled correctly

Add a few commands to the Dockerfile to check that 'curl-impersonate'
was compiled correctly: Check that it has brotli, http2 and tls support,
and check that the dependencies were compiled statically.

These are basic checks which are useful when modifying the Dockerfile:
Sometimes even small modifications cause curl to be compiled
incorrectly but without failing the build.
This commit is contained in:
lwthiker
2022-04-17 17:02:59 +03:00
parent d7ed859ad0
commit f320cecdfd
5 changed files with 65 additions and 0 deletions

View File

@@ -167,6 +167,15 @@ RUN mkdir out && \
{{/chrome}} {{/chrome}}
strip out/curl-impersonate strip out/curl-impersonate
# Verify that the resulting 'curl' has all the necessary features.
RUN ./out/curl-impersonate -V | grep -q zlib && \
./out/curl-impersonate -V | grep -q brotli && \
./out/curl-impersonate -V | grep -q nghttp2 && \
./out/curl-impersonate -V | grep -q -e NSS -e BoringSSL
# Verify that the resulting 'curl' is really statically compiled
RUN ! (ldd ./out/curl-impersonate | grep -q -e libcurl -e nghttp2 -e brotli -e ssl -e crypto)
RUN rm -Rf /build/install RUN rm -Rf /build/install
# Re-compile libcurl dynamically # Re-compile libcurl dynamically
@@ -202,6 +211,10 @@ RUN ver=$(readlink -f curl-7.81.0/lib/.libs/libcurl-impersonate-chrome.so | sed
ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \ ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \
strip "out/libcurl-impersonate.so.$ver" strip "out/libcurl-impersonate.so.$ver"
# Verify that the resulting 'libcurl' is really statically compiled against its
# dependencies.
RUN ! (ldd ./out/curl-impersonate | grep -q -e nghttp2 -e brotli -e ssl -e crypto)
# Wrapper scripts # Wrapper scripts
{{#firefox}} {{#firefox}}
COPY curl_ff* out/ COPY curl_ff* out/

View File

@@ -96,6 +96,15 @@ RUN mkdir out && \
ln -s curl-impersonate-chrome out/curl-impersonate && \ ln -s curl-impersonate-chrome out/curl-impersonate && \
strip out/curl-impersonate strip out/curl-impersonate
# Verify that the resulting 'curl' has all the necessary features.
RUN ./out/curl-impersonate -V | grep -q zlib && \
./out/curl-impersonate -V | grep -q brotli && \
./out/curl-impersonate -V | grep -q nghttp2 && \
./out/curl-impersonate -V | grep -q -e NSS -e BoringSSL
# Verify that the resulting 'curl' is really statically compiled
RUN ! (ldd ./out/curl-impersonate | grep -q -e libcurl -e nghttp2 -e brotli -e ssl -e crypto)
RUN rm -Rf /build/install RUN rm -Rf /build/install
# Re-compile libcurl dynamically # Re-compile libcurl dynamically
@@ -118,6 +127,10 @@ RUN ver=$(readlink -f curl-7.81.0/lib/.libs/libcurl-impersonate-chrome.so | sed
ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \ ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \
strip "out/libcurl-impersonate.so.$ver" strip "out/libcurl-impersonate.so.$ver"
# Verify that the resulting 'libcurl' is really statically compiled against its
# dependencies.
RUN ! (ldd ./out/curl-impersonate | grep -q -e nghttp2 -e brotli -e ssl -e crypto)
# Wrapper scripts # Wrapper scripts
COPY curl_chrome* curl_edge* curl_safari* out/ COPY curl_chrome* curl_edge* curl_safari* out/
RUN chmod +x out/curl_* RUN chmod +x out/curl_*

View File

@@ -93,6 +93,15 @@ RUN mkdir out && \
ln -s curl-impersonate-chrome out/curl-impersonate && \ ln -s curl-impersonate-chrome out/curl-impersonate && \
strip out/curl-impersonate strip out/curl-impersonate
# Verify that the resulting 'curl' has all the necessary features.
RUN ./out/curl-impersonate -V | grep -q zlib && \
./out/curl-impersonate -V | grep -q brotli && \
./out/curl-impersonate -V | grep -q nghttp2 && \
./out/curl-impersonate -V | grep -q -e NSS -e BoringSSL
# Verify that the resulting 'curl' is really statically compiled
RUN ! (ldd ./out/curl-impersonate | grep -q -e libcurl -e nghttp2 -e brotli -e ssl -e crypto)
RUN rm -Rf /build/install RUN rm -Rf /build/install
# Re-compile libcurl dynamically # Re-compile libcurl dynamically
@@ -115,6 +124,10 @@ RUN ver=$(readlink -f curl-7.81.0/lib/.libs/libcurl-impersonate-chrome.so | sed
ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \ ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \
strip "out/libcurl-impersonate.so.$ver" strip "out/libcurl-impersonate.so.$ver"
# Verify that the resulting 'libcurl' is really statically compiled against its
# dependencies.
RUN ! (ldd ./out/curl-impersonate | grep -q -e nghttp2 -e brotli -e ssl -e crypto)
# Wrapper scripts # Wrapper scripts
COPY curl_chrome* curl_edge* curl_safari* out/ COPY curl_chrome* curl_edge* curl_safari* out/
# Replace /bin/bash with /bin/ash # Replace /bin/bash with /bin/ash

View File

@@ -91,6 +91,15 @@ RUN mkdir out && \
ln -s curl-impersonate-ff out/curl-impersonate && \ ln -s curl-impersonate-ff out/curl-impersonate && \
strip out/curl-impersonate strip out/curl-impersonate
# Verify that the resulting 'curl' has all the necessary features.
RUN ./out/curl-impersonate -V | grep -q zlib && \
./out/curl-impersonate -V | grep -q brotli && \
./out/curl-impersonate -V | grep -q nghttp2 && \
./out/curl-impersonate -V | grep -q -e NSS -e BoringSSL
# Verify that the resulting 'curl' is really statically compiled
RUN ! (ldd ./out/curl-impersonate | grep -q -e libcurl -e nghttp2 -e brotli -e ssl -e crypto)
RUN rm -Rf /build/install RUN rm -Rf /build/install
# Re-compile libcurl dynamically # Re-compile libcurl dynamically
@@ -112,6 +121,10 @@ RUN ver=$(readlink -f curl-7.81.0/lib/.libs/libcurl-impersonate-ff.so | sed 's/.
ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \ ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \
strip "out/libcurl-impersonate.so.$ver" strip "out/libcurl-impersonate.so.$ver"
# Verify that the resulting 'libcurl' is really statically compiled against its
# dependencies.
RUN ! (ldd ./out/curl-impersonate | grep -q -e nghttp2 -e brotli -e ssl -e crypto)
# Wrapper scripts # Wrapper scripts
COPY curl_ff* out/ COPY curl_ff* out/
RUN chmod +x out/curl_* RUN chmod +x out/curl_*

View File

@@ -86,6 +86,15 @@ RUN mkdir out && \
ln -s curl-impersonate-ff out/curl-impersonate && \ ln -s curl-impersonate-ff out/curl-impersonate && \
strip out/curl-impersonate strip out/curl-impersonate
# Verify that the resulting 'curl' has all the necessary features.
RUN ./out/curl-impersonate -V | grep -q zlib && \
./out/curl-impersonate -V | grep -q brotli && \
./out/curl-impersonate -V | grep -q nghttp2 && \
./out/curl-impersonate -V | grep -q -e NSS -e BoringSSL
# Verify that the resulting 'curl' is really statically compiled
RUN ! (ldd ./out/curl-impersonate | grep -q -e libcurl -e nghttp2 -e brotli -e ssl -e crypto)
RUN rm -Rf /build/install RUN rm -Rf /build/install
# Re-compile libcurl dynamically # Re-compile libcurl dynamically
@@ -107,6 +116,10 @@ RUN ver=$(readlink -f curl-7.81.0/lib/.libs/libcurl-impersonate-ff.so | sed 's/.
ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \ ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \
strip "out/libcurl-impersonate.so.$ver" strip "out/libcurl-impersonate.so.$ver"
# Verify that the resulting 'libcurl' is really statically compiled against its
# dependencies.
RUN ! (ldd ./out/curl-impersonate | grep -q -e nghttp2 -e brotli -e ssl -e crypto)
# Wrapper scripts # Wrapper scripts
COPY curl_ff* out/ COPY curl_ff* out/
# Replace /bin/bash with /bin/ash # Replace /bin/bash with /bin/ash