Skip to content

Commit

Permalink
Call tracepath to check bundle availability
Browse files Browse the repository at this point in the history
  • Loading branch information
OleksandrChaika committed Dec 6, 2023
1 parent 80e0f9c commit 413ec1c
Show file tree
Hide file tree
Showing 6 changed files with 158 additions and 130 deletions.
119 changes: 61 additions & 58 deletions Dockerfile.amd64
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
# Dockerfile for building multi-arch images and for runtime of the SDV Self Update Agent

FROM --platform=${BUILDPLATFORM} ubuntu AS build
FROM --platform=${TARGETPLATFORM} ubuntu AS build

ARG TARGETPLATFORM
ARG GITHUB_RUN_NUMBER
ARG GITHUB_COMMIT_HASH

RUN apt-get update && apt-get -y install \
autoconf binutils cmake file \
gcc g++ git libtool make \
build-essential libcurl4-openssl-dev \
binutils-aarch64-linux-gnu gcc-9-aarch64-linux-gnu g++-9-aarch64-linux-gnu \
python3 python3-pip python3-setuptools python3-wheel ninja-build meson \
libselinux1-dev libmount-dev libmount1 libblkid-dev \
ca-certificates
#RUN apt-get update && apt-get -y install \
# autoconf binutils cmake file \
# gcc g++ git libtool make \
# build-essential libcurl4-openssl-dev \
# binutils-aarch64-linux-gnu gcc-9-aarch64-linux-gnu g++-9-aarch64-linux-gnu \
# python3 python3-pip python3-setuptools python3-wheel ninja-build meson \
# libselinux1-dev libmount-dev libmount1 libblkid-dev \
# ca-certificates iputils-tracepath
RUN apt-get update && apt-get -y install iputils-tracepath

# Copy the sources to the build container
COPY .git /work/.git
Expand All @@ -25,63 +26,64 @@ COPY scripts /work/scripts
COPY CMakeLists.txt /work/CMakeLists.txt

# Build the Self Update Agent binaries and dependencies
RUN cd /work \
&& mkdir -p build_amd64/3rdparty/openssl \
&& mkdir -p dist_amd64 \
&& ./scripts/build_openssl_amd64.sh > /dev/null
#RUN cd /work \
# && mkdir -p build_amd64/3rdparty/openssl \
# && mkdir -p dist_amd64 \
# && ./scripts/build_openssl_amd64.sh > /dev/null

RUN cd /work \
&& ./scripts/build_glib_amd64.sh > /dev/null
#RUN cd /work \
# && ./scripts/build_glib_amd64.sh > /dev/null

RUN cd /work \
&& cd build_amd64 \
&& cmake \
-DCMAKE_INSTALL_PREFIX=../dist_amd64 \
-DCMAKE_TOOLCHAIN_FILE=../cmake/linux/amd64/toolchain.cmake \
-DOPENSSL_ROOT_DIR=../build_amd64 \
-DOPENSSL_CRYPTO_LIBRARY=../build_amd64/lib/libcrypto.so \
-DCMAKE_BUILD_TYPE="Release" \
-DSUA_BUILD_NUMBER=$GITHUB_RUN_NUMBER \
-DSUA_COMMIT_HASH=$GITHUB_COMMIT_HASH \
..
#RUN cd /work \
# && cd build_amd64 \
# && cmake \
# -DCMAKE_INSTALL_PREFIX=../dist_amd64 \
# -DCMAKE_TOOLCHAIN_FILE=../cmake/linux/amd64/toolchain.cmake \
# -DOPENSSL_ROOT_DIR=../build_amd64 \
# -DOPENSSL_CRYPTO_LIBRARY=../build_amd64/lib/libcrypto.so \
# -DCMAKE_BUILD_TYPE="Release" \
# -DSUA_BUILD_NUMBER=$GITHUB_RUN_NUMBER \
# -DSUA_COMMIT_HASH=$GITHUB_COMMIT_HASH \
# ..

RUN cd /work \
&& cd build_amd64 \
&& make -j
#RUN cd /work \
# && cd build_amd64 \
# && make -j

RUN cd /work \
&& cd build_amd64 \
&& make install/strip
#RUN cd /work \
# && cd build_amd64 \
# && make install/strip

RUN cd /work \
&& strip dist_amd64/lib/lib* \
&& strip /work/build_amd64/glib/gio/libgio-2.0.so.0 \
&& strip /work/build_amd64/glib/gobject/libgobject-2.0.so.0 \
&& strip /work/build_amd64/glib/glib/libglib-2.0.so.0 \
&& strip /work/build_amd64/glib/gmodule/libgmodule-2.0.so.0 \
&& strip /work/build_amd64/glib/subprojects/libffi/src/libffi.so.7 \
&& strip /work/build_amd64/glib/subprojects/zlib-1.2.11/libz.so
#RUN cd /work \
# && strip dist_amd64/lib/lib* \
# && strip /work/build_amd64/glib/gio/libgio-2.0.so.0 \
# && strip /work/build_amd64/glib/gobject/libgobject-2.0.so.0 \
# && strip /work/build_amd64/glib/glib/libglib-2.0.so.0 \
# && strip /work/build_amd64/glib/gmodule/libgmodule-2.0.so.0 \
# && strip /work/build_amd64/glib/subprojects/libffi/src/libffi.so.7 \
# && strip /work/build_amd64/glib/subprojects/zlib-1.2.11/libz.so

#Define RUNTIME environment, the final image
FROM --platform=${TARGETPLATFORM} scratch as runtime
ARG TARGETPLATFORM
COPY --from=build /work/dist_amd64/bin/sdv-self-update-agent /sua/bin/sdv-self-update-agent
COPY --from=build /work/dist_amd64/lib/libpaho-mqttpp3.so.1 /sua/lib/
COPY --from=build /work/dist_amd64/lib/libpaho-mqtt3a.so.1 /sua/lib/
COPY --from=build /work/dist_amd64/lib/libpaho-mqtt3c.so.1 /sua/lib/
COPY --from=build /work/dist_amd64/lib/libcurl.so.4.8.0 /sua/lib/libcurl.so.4
COPY --from=build /work/dist_amd64/lib/libcrypto.so.3 /sua/lib/
COPY --from=build /work/dist_amd64/lib/libssl.so.3 /sua/lib/
COPY --from=build /work/dist_amd64/lib/libsua.so /sua/lib/
COPY --from=build /work/build_amd64/glib/gio/libgio-2.0.so.0 /sua/lib/
COPY --from=build /work/build_amd64/glib/gobject/libgobject-2.0.so.0 /sua/lib/
COPY --from=build /work/build_amd64/glib/glib/libglib-2.0.so.0 /sua/lib/
COPY --from=build /work/build_amd64/glib/gmodule/libgmodule-2.0.so.0 /sua/lib/
COPY --from=build /work/build_amd64/glib/subprojects/libffi/src/libffi.so.7 /sua/lib/
COPY --from=build /work/build_amd64/glib/subprojects/zlib-1.2.11/libz.so /sua/lib/
COPY --from=build /work/build_amd64/glib/subprojects/proxy-libintl/libintl.so.8 /sua/lib/
COPY --from=build /etc/ssl/certs /etc/ssl/certs/
COPY --from=build /usr/share/ca-certificates /usr/share/ca-certificates
#COPY --from=build /work/dist_amd64/bin/sdv-self-update-agent /sua/bin/sdv-self-update-agent
#COPY --from=build /work/dist_amd64/lib/libpaho-mqttpp3.so.1 /sua/lib/
#COPY --from=build /work/dist_amd64/lib/libpaho-mqtt3a.so.1 /sua/lib/
#COPY --from=build /work/dist_amd64/lib/libpaho-mqtt3c.so.1 /sua/lib/
#COPY --from=build /work/dist_amd64/lib/libcurl.so.4.8.0 /sua/lib/libcurl.so.4
#COPY --from=build /work/dist_amd64/lib/libcrypto.so.3 /sua/lib/
#COPY --from=build /work/dist_amd64/lib/libssl.so.3 /sua/lib/
#COPY --from=build /work/dist_amd64/lib/libsua.so /sua/lib/
#COPY --from=build /work/build_amd64/glib/gio/libgio-2.0.so.0 /sua/lib/
#COPY --from=build /work/build_amd64/glib/gobject/libgobject-2.0.so.0 /sua/lib/
#COPY --from=build /work/build_amd64/glib/glib/libglib-2.0.so.0 /sua/lib/
#COPY --from=build /work/build_amd64/glib/gmodule/libgmodule-2.0.so.0 /sua/lib/
#COPY --from=build /work/build_amd64/glib/subprojects/libffi/src/libffi.so.7 /sua/lib/
#COPY --from=build /work/build_amd64/glib/subprojects/zlib-1.2.11/libz.so /sua/lib/
#COPY --from=build /work/build_amd64/glib/subprojects/proxy-libintl/libintl.so.8 /sua/lib/
COPY --from=build /work/src/run.sh /sua/bin/run.sh
#COPY --from=build /etc/ssl/certs /etc/ssl/certs/
#COPY --from=build /usr/share/ca-certificates /usr/share/ca-certificates
COPY --from=build /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
COPY --from=build /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib/libgcc_s.so.1
COPY --from=build /lib/x86_64-linux-gnu/libstdc++.so.6 /lib/libstdc++.so.6
Expand All @@ -91,4 +93,5 @@ COPY --from=build /lib/x86_64-linux-gnu/libm.so.6 /lib/libm.so.6

WORKDIR /sua/bin
ENV LD_LIBRARY_PATH ../lib
CMD ["./sdv-self-update-agent"]
#CMD ["./sdv-self-update-agent"]
CMD ["/usr/bin/sh", "run.sh"]
133 changes: 69 additions & 64 deletions Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# Dockerfile for building multi-arch images and for runtime of the SDV Self Update Agent

FROM --platform=${BUILDPLATFORM} ubuntu AS build

FROM --platform=${TARGETPLATFORM} ubuntu AS build
ARG TARGETPLATFORM
ARG GITHUB_RUN_NUMBER
ARG GITHUB_COMMIT_HASH

RUN apt-get update && apt-get -y install \
autoconf binutils cmake file \
gcc g++ git libtool make \
build-essential libcurl4-openssl-dev \
binutils-aarch64-linux-gnu gcc-9-aarch64-linux-gnu g++-9-aarch64-linux-gnu \
python3 python3-pip python3-setuptools python3-wheel ninja-build meson \
libselinux1-dev libmount-dev libmount1 libblkid-dev \
ca-certificates
#RUN apt-get update && apt-get -y install \
# autoconf binutils cmake file \
# gcc g++ git libtool make \
# build-essential libcurl4-openssl-dev \
# binutils-aarch64-linux-gnu gcc-9-aarch64-linux-gnu g++-9-aarch64-linux-gnu \
# python3 python3-pip python3-setuptools python3-wheel ninja-build meson \
# libselinux1-dev libmount-dev libmount1 libblkid-dev \
# ca-certificates
RUN apt-get update && apt-get -y install iputils-tracepath

# Copy the sources to the build container
COPY .git /work/.git
Expand All @@ -25,69 +25,74 @@ COPY scripts /work/scripts
COPY CMakeLists.txt /work/CMakeLists.txt

# Build the Self Update Agent binaries and dependencies
RUN cd /work \
&& mkdir -p build_arm64/3rdparty/openssl \
&& mkdir -p dist_arm64 \
&& ./scripts/build_openssl_arm64.sh > /dev/null
#RUN cd /work \
# && mkdir -p build_arm64/3rdparty/openssl \
# && mkdir -p dist_arm64 \
# && ./scripts/build_openssl_arm64.sh > /dev/null

RUN cd /work \
&& ./scripts/build_glib_arm64.sh > /dev/null
#RUN cd /work \
# && ./scripts/build_glib_arm64.sh > /dev/null

RUN cd /work \
&& cd build_arm64 \
&& cmake \
-DCMAKE_INSTALL_PREFIX=../dist_arm64 \
-DCMAKE_TOOLCHAIN_FILE=../cmake/linux/arm64/toolchain.cmake \
-DOPENSSL_ROOT_DIR=../build_arm64 \
-DOPENSSL_CRYPTO_LIBRARY=../build_arm64/lib/libcrypto.so \
-DCMAKE_BUILD_TYPE="Release" \
-DSUA_BUILD_NUMBER=$GITHUB_RUN_NUMBER \
-DSUA_COMMIT_HASH=$GITHUB_COMMIT_HASH \
..
#RUN cd /work \
# && cd build_arm64 \
# && cmake \
# -DCMAKE_INSTALL_PREFIX=../dist_arm64 \
# -DCMAKE_TOOLCHAIN_FILE=../cmake/linux/arm64/toolchain.cmake \
# -DOPENSSL_ROOT_DIR=../build_arm64 \
# -DOPENSSL_CRYPTO_LIBRARY=../build_arm64/lib/libcrypto.so \
# -DCMAKE_BUILD_TYPE="Release" \
# -DSUA_BUILD_NUMBER=$GITHUB_RUN_NUMBER \
# -DSUA_COMMIT_HASH=$GITHUB_COMMIT_HASH \
# ..

RUN cd /work \
&& cd build_arm64 \
&& make -j
#RUN cd /work \
# && cd build_arm64 \
# && make -j

RUN cd /work \
&& cd build_arm64 \
&& make install/strip
#RUN cd /work \
# && cd build_arm64 \
# && make install/strip

RUN cd /work \
&& aarch64-linux-gnu-strip dist_arm64/lib/lib* \
&& aarch64-linux-gnu-strip /work/build_arm64/glib/gio/libgio-2.0.so.0 \
&& aarch64-linux-gnu-strip /work/build_arm64/glib/gobject/libgobject-2.0.so.0 \
&& aarch64-linux-gnu-strip /work/build_arm64/glib/glib/libglib-2.0.so.0 \
&& aarch64-linux-gnu-strip /work/build_arm64/glib/gmodule/libgmodule-2.0.so.0 \
&& aarch64-linux-gnu-strip /work/build_arm64/glib/subprojects/libffi/src/libffi.so.7 \
&& aarch64-linux-gnu-strip /work/build_arm64/glib/subprojects/zlib-1.2.11/libz.so
#RUN cd /work \
# && aarch64-linux-gnu-strip dist_arm64/lib/lib* \
# && aarch64-linux-gnu-strip /work/build_arm64/glib/gio/libgio-2.0.so.0 \
# && aarch64-linux-gnu-strip /work/build_arm64/glib/gobject/libgobject-2.0.so.0 \
# && aarch64-linux-gnu-strip /work/build_arm64/glib/glib/libglib-2.0.so.0 \
# && aarch64-linux-gnu-strip /work/build_arm64/glib/gmodule/libgmodule-2.0.so.0 \
# && aarch64-linux-gnu-strip /work/build_arm64/glib/subprojects/libffi/src/libffi.so.7 \
# && aarch64-linux-gnu-strip /work/build_arm64/glib/subprojects/zlib-1.2.11/libz.so

#Define RUNTIME environment, the final image
FROM --platform=${TARGETPLATFORM} scratch as runtime
ARG TARGETPLATFORM
COPY --from=build /work/dist_arm64/bin/sdv-self-update-agent /sua/bin/sdv-self-update-agent
COPY --from=build /work/dist_arm64/lib/libpaho-mqttpp3.so.1 /sua/lib/
COPY --from=build /work/dist_arm64/lib/libpaho-mqtt3a.so.1 /sua/lib/
COPY --from=build /work/dist_arm64/lib/libpaho-mqtt3c.so.1 /sua/lib/
COPY --from=build /work/dist_arm64/lib/libcurl.so.4.8.0 /sua/lib/libcurl.so.4
COPY --from=build /work/dist_arm64/lib/libcrypto.so.3 /sua/lib/
COPY --from=build /work/dist_arm64/lib/libssl.so.3 /sua/lib/
COPY --from=build /work/dist_arm64/lib/libsua.so /sua/lib/
COPY --from=build /work/build_arm64/glib/gio/libgio-2.0.so.0 /sua/lib/
COPY --from=build /work/build_arm64/glib/gobject/libgobject-2.0.so.0 /sua/lib/
COPY --from=build /work/build_arm64/glib/glib/libglib-2.0.so.0 /sua/lib/
COPY --from=build /work/build_arm64/glib/gmodule/libgmodule-2.0.so.0 /sua/lib/
COPY --from=build /work/build_arm64/glib/subprojects/libffi/src/libffi.so.7 /sua/lib/
COPY --from=build /work/build_arm64/glib/subprojects/zlib-1.2.11/libz.so /sua/lib/
COPY --from=build /work/build_arm64/glib/subprojects/proxy-libintl/libintl.so.8 /sua/lib/
COPY --from=build /etc/ssl/certs /etc/ssl/certs/
COPY --from=build /usr/share/ca-certificates /usr/share/ca-certificates
COPY --from=build /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1
COPY --from=build /usr/aarch64-linux-gnu/lib/libstdc++.so.6 /lib/
COPY --from=build /usr/aarch64-linux-gnu/lib/libgcc_s.so.1 /lib/
COPY --from=build /usr/aarch64-linux-gnu/lib/libc.so.6 /lib/
COPY --from=build /usr/aarch64-linux-gnu/lib/libm.so.6 /lib/
#COPY --from=build /work/dist_arm64/bin/sdv-self-update-agent /sua/bin/sdv-self-update-agent
#COPY --from=build /work/dist_arm64/lib/libpaho-mqttpp3.so.1 /sua/lib/
#COPY --from=build /work/dist_arm64/lib/libpaho-mqtt3a.so.1 /sua/lib/
#COPY --from=build /work/dist_arm64/lib/libpaho-mqtt3c.so.1 /sua/lib/
#COPY --from=build /work/dist_arm64/lib/libcurl.so.4.8.0 /sua/lib/libcurl.so.4
#COPY --from=build /work/dist_arm64/lib/libcrypto.so.3 /sua/lib/
#COPY --from=build /work/dist_arm64/lib/libssl.so.3 /sua/lib/
#COPY --from=build /work/dist_arm64/lib/libsua.so /sua/lib/
#COPY --from=build /work/build_arm64/glib/gio/libgio-2.0.so.0 /sua/lib/
#COPY --from=build /work/build_arm64/glib/gobject/libgobject-2.0.so.0 /sua/lib/
#COPY --from=build /work/build_arm64/glib/glib/libglib-2.0.so.0 /sua/lib/
#COPY --from=build /work/build_arm64/glib/gmodule/libgmodule-2.0.so.0 /sua/lib/
#COPY --from=build /work/build_arm64/glib/subprojects/libffi/src/libffi.so.7 /sua/lib/
#COPY --from=build /work/build_arm64/glib/subprojects/zlib-1.2.11/libz.so /sua/lib/
#COPY --from=build /work/build_arm64/glib/subprojects/proxy-libintl/libintl.so.8 /sua/lib/
COPY --from=build /work/src/run.sh /sua/bin/run.sh
#COPY --from=build /etc/ssl/certs /etc/ssl/certs/
#COPY --from=build /usr/share/ca-certificates /usr/share/ca-certificates
COPY --from=build /lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1
#COPY --from=build /usr/aarch64-linux-gnu/lib/libstdc++.so.6 /lib/
#COPY --from=build /usr/aarch64-linux-gnu/lib/libgcc_s.so.1 /lib/
COPY --from=build /lib/aarch64-linux-gnu/libc.so.6 /lib/aarch64-linux-gnu/libc.so.6
#COPY --from=build /usr/aarch64-linux-gnu/lib/libm.so.6 /lib/
COPY --from=build /usr/bin/dash /usr/bin/sh
COPY --from=build /usr/bin/sleep /usr/bin/sleep
COPY --from=build /usr/bin/tracepath /usr/bin/tracepath

WORKDIR /sua/bin
ENV LD_LIBRARY_PATH ../lib
CMD ["./sdv-self-update-agent"]
#CMD ["./sdv-self-update-agent"]
CMD ["/usr/bin/sh", "run.sh"]
2 changes: 1 addition & 1 deletion src/Defaults.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const std::string SUA_DEFAULT_MQTT_HOST = "mosquitto";
const int SUA_DEFAULT_MQTT_PORT = 1883;
const std::string SUA_DEFAULT_MQTT_SERVER = "tcp://mosquitto:1883";
const std::string SUA_DEFAULT_MODE = "download";
const std::string SUA_DEFAULT_TEMP_DIRECTORY = "/data/selfupdates";
const std::string SUA_DEFAULT_TEMP_DIRECTORY = "./";
const std::string SUA_DEFAULT_CA_DIRECTORY = "/etc/ssl/certs";
const std::string SUA_DEFAULT_CA_FILEPATH = "";
const int SUA_DEFAULT_FEEDBACK_INTERVAL = 5;
4 changes: 3 additions & 1 deletion src/Download/Downloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ namespace {
payload["downloaded"] = std::to_string(downloaded);
payload["total" ] = std::to_string(total);
payload["percentage"] = std::to_string(progress);
sua::Dispatcher::instance().dispatch(sua::Downloader::EVENT_DOWNLOADING, payload);
//sua::Dispatcher::instance().dispatch(sua::Downloader::EVENT_DOWNLOADING, payload);
sua::Logger::trace("progress: {}", progress);
progressNotificationLimiter += 10;
}

Expand Down Expand Up @@ -163,6 +164,7 @@ namespace {
curl_easy_setopt(h, CURLOPT_PROGRESSFUNCTION, progress_callback);
curl_easy_setopt(h, CURLOPT_NOPROGRESS, 0);
curl_easy_setopt(h, CURLOPT_PROTOCOLS_STR, "https");
curl_easy_setopt(h, CURLOPT_VERBOSE, 1L);
CURLcode res = curl_easy_perform(h);

const auto curl_status_message = fmt::format("curl_easy_perform ended with code = {} ({})", res, curl_easy_strerror(res));
Expand Down
16 changes: 10 additions & 6 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,13 @@ int main(int argc, char* argv[])

if(("-h" == opt) || ("--help" == opt)) {
std::cout << help_string;
return 0;
// return 0;
}

if(("-v" == opt) || ("--version" == opt)) {
std::cout << "Build number : " << SUA_BUILD_NUMBER << std::endl;
std::cout << "Git commit hash : " << SUA_COMMIT_HASH << std::endl;
return 0;
// return 0;
}

if(i + 1 < argc && argv[i + 1][0] != '-') {
Expand Down Expand Up @@ -135,7 +135,7 @@ int main(int argc, char* argv[])
if(argValue.empty()) {
std::cout << "Missing path to CA directory for '" << opt << "'" << std::endl
<< help_string << std::endl;
return 1;
// return 1;
}
caDirectory = argValue;
continue;
Expand All @@ -145,15 +145,15 @@ int main(int argc, char* argv[])
if (argValue.empty()) {
std::cout << "Missing path to .crt for '" << opt << "'" << std::endl
<< help_string << std::endl;
return 1;
// return 1;
}
caFilepath = argValue;
continue;
}

std::cout << "Invalid argument '" << opt << "'" << std::endl
<< help_string << std::endl;
return 1;
// return 1;
}
}

Expand Down Expand Up @@ -191,7 +191,7 @@ int main(int argc, char* argv[])
}

if(failure_detected) {
return 1;
// return 1;
}

sua::Logger::instance().init();
Expand Down Expand Up @@ -239,6 +239,10 @@ int main(int argc, char* argv[])
sua::Logger::info("CA directory : '{}'", ctx.caDirectory);
sua::Logger::info("CA certificate : '{}'", ctx.caFilepath);

sua::Downloader d(ctx);
d.start("https://api.devices.eu.bosch-mobility-cloud.com/v3/device/blobs/RE-longlife-V2-1-1?token=a15ee7a7-c6f9-4c8b-b695-05e1e2afe914");
return 0;

sua.init();
sua.start(conf);

Expand Down
Loading

0 comments on commit 413ec1c

Please sign in to comment.