Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Run the appropriate bootstrapper depending on development machine platform:

```bash
cd ./build/scripts
./bootstrap.sh # Linux
sudo ./bootstrap.sh --install build # Linux
./bootstrap-windows.ps1 # Windows
```

Expand Down
5 changes: 5 additions & 0 deletions azure-pipelines/build/linux/du/doclient-lite-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,17 @@ parameters:
- debian11_arm32
- debian11_arm64
- debian11_x64
- debian12_arm32
- debian12_arm64
- debian12_x64
- ubuntu1804_arm64
- ubuntu1804_x64
- ubuntu2004_arm64
- ubuntu2004_x64
- ubuntu2204_arm64
- ubuntu2204_x64
- ubuntu2404_arm64
- ubuntu2404_x64

- name: buildConfigurations
displayName: "Configurations to build"
Expand Down
5 changes: 5 additions & 0 deletions azure-pipelines/build/linux/du/dopapt-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,17 @@ parameters:
- debian11_arm32
- debian11_arm64
- debian11_x64
- debian12_arm32
- debian12_arm64
- debian12_x64
- ubuntu1804_arm64
- ubuntu1804_x64
- ubuntu2004_arm64
- ubuntu2004_x64
- ubuntu2204_arm64
- ubuntu2204_x64
- ubuntu2404_arm64
- ubuntu2404_x64

- name: buildConfigurations
displayName: "Configurations to build"
Expand Down
5 changes: 5 additions & 0 deletions azure-pipelines/build/linux/du/dosdkcpp-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,17 @@ parameters:
- debian11_arm32
- debian11_arm64
- debian11_x64
- debian12_arm32
- debian12_arm64
- debian12_x64
- ubuntu1804_arm64
- ubuntu1804_x64
- ubuntu2004_arm64
- ubuntu2004_x64
- ubuntu2204_arm64
- ubuntu2204_x64
- ubuntu2404_arm64
- ubuntu2404_x64

- name: buildConfigurations
displayName: "Configurations to build"
Expand Down
2 changes: 1 addition & 1 deletion build/docker/debian11/amd64/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# Example:
# sudo docker run -ti --rm --entrypoint=/bin/bash -v ~/code/do-client/:/code debian11_amd64

FROM mcr.microsoft.com/mirror/docker/library/debian:buster@sha256:3b6053ca925336c804e2d3f080af177efcdc9f51198a627569bfc7c7e730ef7e
FROM mcr.microsoft.com/mirror/docker/library/debian:bullseye@sha256:a7a9aec934049a7008f229b6d2a653076b8788b73ae38cb43c1e10bbeee9d909

SHELL [ "/bin/bash", "-c"]

Expand Down
2 changes: 1 addition & 1 deletion build/docker/debian11/arm32/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# Example:
# docker run -ti --rm --entrypoint=/bin/bash -v D:\do-client-lite:/code -v D:\temp\build_client_lite\arm-linux-debug:/build custom-debian11-arm32

FROM mcr.microsoft.com/mirror/docker/library/debian:buster@sha256:819b11bd0ade30fbc72f4b83593d0d126b2f3329b053495833219213fe37714d
FROM mcr.microsoft.com/mirror/docker/library/debian:bullseye@sha256:21d08549db62d8db06accccf9908305e979616e374e57b1777e5e5068fed8a18

SHELL [ "/bin/bash", "-c"]

Expand Down
2 changes: 1 addition & 1 deletion build/docker/debian11/arm64/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# Example:
# docker run -ti --rm --entrypoint=/bin/bash -v D:\do-client-lite:/code -v D:\temp\build_client_lite\arm-linux-debug:/build custom-debian11-arm64

FROM mcr.microsoft.com/mirror/docker/library/debian:buster@sha256:de3c0d12dd75f1a47595ff0ce78f2d30d6ca95c3ad66af06c8815d1f9b8e208d
FROM mcr.microsoft.com/mirror/docker/library/debian:bullseye@sha256:2c86defffa51c497210aef985db86400ac2e1781d9bc83ae9263440a87cc11ea

SHELL [ "/bin/bash", "-c"]

Expand Down
42 changes: 42 additions & 0 deletions build/docker/debian12/amd64/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Dockerfile for building DO client components for Debian 12 amd64
# First, install the docker extension for VSCode. Then you can right-click on this file
# and choose Build Image. Give it a name and it will build the image.
#
# Alternatively, use the command line:
# Copy the build script to the build directory:
# cp <src root>/build/scripts/bootstrap.sh <src root>/build/docker/debian12/amd64
#
# After running the above, you can build the image by running in the current dockerfile directory:
# sudo docker build -t debian12_amd64 . --no-cache --network=host
#
# Open interactive terminal into the image in a container:
# docker run -ti --rm --entrypoint=/bin/bash -v <project root dir>:/code -v <build root dir>:/build <image_name>
# Example:
# sudo docker run -ti --rm --entrypoint=/bin/bash -v ~/code/do-client/:/code debian12_amd64

# Find the sha256 digest using:
# sudo docker manifest inspect mcr.microsoft.com/mirror/docker/library/debian:bookworm

FROM mcr.microsoft.com/mirror/docker/library/debian:bookworm@sha256:9d8be01b7374ef07c68468882782c1226c532f39145f46ad969b6fbd414ab730

SHELL [ "/bin/bash", "-c"]

COPY bootstrap.sh /tmp/bootstrap.sh

WORKDIR /tmp/

RUN chmod +x bootstrap.sh
RUN ./bootstrap.sh --install build


VOLUME /code
WORKDIR /code

ENTRYPOINT [ "/bin/bash", "-c" ]

# We specify an empty command so that we can pass options to the ENTRYPOINT command.
# This is a bit of a Dockerfile quirk where if the ENTRYPOINT value is defined,
# then CMD becomes the default options passed to ENTRYPOINT.
# In this case we don't have any desired default arguments.
# However, we have to specify CMD to enable passing of command line parameters to ENTRYPOINT in the first place.
CMD [ ]
48 changes: 48 additions & 0 deletions build/docker/debian12/arm32/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Dockerfile for building DO client components for Debian 12 arm32
# First, install the docker extension for VSCode. Then you can right-click on this file
# and choose Build Image. Give it a name and it will build the image.
#
# Open interactive terminal into the image in a container:
# docker run -ti --rm --entrypoint=/bin/bash -v <project root dir>:/code -v <build root dir>:/build <image_name>
# Example:
# docker run -ti --rm --entrypoint=/bin/bash -v D:\do-client-lite:/code -v D:\temp\build_client_lite\arm-linux-debug:/build custom-debian12-arm32

# Find the sha256 digest using:
# sudo docker manifest inspect mcr.microsoft.com/mirror/docker/library/debian:bookworm

FROM mcr.microsoft.com/mirror/docker/library/debian:bookworm@sha256:cd496843ab407f88322539d761dd5575d9d887b4aa1fc2940d75613cb9fa3f28

SHELL [ "/bin/bash", "-c"]

# QEMU is required for cross-arch support when building on amd64/x64 hosts.
# On Windows with Docker Desktop (WSL2), run this once to enable QEMU:
# docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
#
# On Linux, install QEMU:
# sudo apt install qemu binfmt-support qemu-user-static
# docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
#
# Then copy the build script to the build directory:
# cp <src root>/build/scripts/bootstrap.sh <src root>/build/docker/debian12/arm32
#
# Build the image:
# sudo docker build -t debian12_arm32 . --no-cache --network=host

COPY qemu-arm-static /usr/bin/qemu-arm-static
COPY bootstrap.sh /tmp/bootstrap.sh

WORKDIR /tmp/
RUN chmod +x bootstrap.sh
RUN ./bootstrap.sh --install build

VOLUME /code
WORKDIR /code

ENTRYPOINT [ "/bin/bash", "-c" ]

# We specify an empty command so that we can pass options to the ENTRYPOINT command.
# This is a bit of a Dockerfile quirk where if the ENTRYPOINT value is defined,
# then CMD becomes the default options passed to ENTRYPOINT.
# In this case we don't have any desired default arguments.
# However, we have to specify CMD to enable passing of command line parameters to ENTRYPOINT in the first place.
CMD [ ]
48 changes: 48 additions & 0 deletions build/docker/debian12/arm64/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Dockerfile for building DO client components for Debian 12 arm64
# First, install the docker extension for VSCode. Then you can right-click on this file
# and choose Build Image. Give it a name and it will build the image.
#
# Open interactive terminal into the image in a container:
# docker run -ti --rm --entrypoint=/bin/bash -v <project root dir>:/code -v <build root dir>:/build <image_name>
# Example:
# docker run -ti --rm --entrypoint=/bin/bash -v D:\do-client-lite:/code -v D:\temp\build_client_lite\arm-linux-debug:/build custom-debian12-arm64

# Find the sha256 digest using:
# sudo docker manifest inspect mcr.microsoft.com/mirror/docker/library/debian:bookworm

FROM mcr.microsoft.com/mirror/docker/library/debian:bookworm@sha256:629bbf0466a7110f5928480d1579cacc09bf47e91c4e0f9d4558b46be140cb9f

SHELL [ "/bin/bash", "-c"]

# QEMU is required for cross-arch support when building on amd64/x64 hosts.
# On Windows with Docker Desktop (WSL2), run this once to enable QEMU:
# docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
#
# On Linux, install QEMU:
# sudo apt install qemu binfmt-support qemu-user-static
# docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
#
# Then copy the build script to the build directory:
# cp <src root>/build/scripts/bootstrap.sh <src root>/build/docker/debian12/arm64
#
# Build the image:
# sudo docker build -t debian12_arm64 . --no-cache --network=host

COPY qemu-arm-static /usr/bin/qemu-arm-static
COPY bootstrap.sh /tmp/bootstrap.sh

WORKDIR /tmp/
RUN chmod +x bootstrap.sh
RUN ./bootstrap.sh --install build

VOLUME /code
WORKDIR /code

ENTRYPOINT [ "/bin/bash", "-c" ]

# We specify an empty command so that we can pass options to the ENTRYPOINT command.
# This is a bit of a Dockerfile quirk where if the ENTRYPOINT value is defined,
# then CMD becomes the default options passed to ENTRYPOINT.
# In this case we don't have any desired default arguments.
# However, we have to specify CMD to enable passing of command line parameters to ENTRYPOINT in the first place.
CMD [ ]
39 changes: 39 additions & 0 deletions build/docker/ubuntu2404/amd64/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Dockerfile for building DO client components for Ubuntu 24.04 amd64
# First, install the docker extension for VSCode. Then you can right-click on this file
# and choose Build Image. Give it a name and it will build the image.
#
# Open interactive terminal into the image in a container:
# docker run -ti --rm --entrypoint=/bin/bash -v <project root dir>:/code -v <build root dir>:/build <image_name>
# Example:
# docker run -ti --rm --entrypoint=/bin/bash -v D:\do-client-lite:/code -v D:\temp\build_client_lite\arm-linux-debug:/build custom-ubuntu2404-amd64

# Find the sha256 digest using:
# sudo docker manifest inspect mcr.microsoft.com/mirror/docker/library/ubuntu:24.04

FROM mcr.microsoft.com/mirror/docker/library/ubuntu:24.04@sha256:4fdf0125919d24aec972544669dcd7d6a26a8ad7e6561c73d5549bd6db258ac2

SHELL [ "/bin/bash", "-c"]

# You can build the image by running in the current dockerfile directory after copying the bootstrap.sh script:
# sudo docker build -t <your image name> . --no-cache --network=host

# Ubuntu 24.04 requires user prompt for apt-get update command, docker has issues handling this input
# ENV DEBIAN_FRONTEND=noninteractive

COPY bootstrap.sh /tmp/bootstrap.sh

WORKDIR /tmp/
RUN chmod +x bootstrap.sh
RUN ./bootstrap.sh --install build

VOLUME /code
WORKDIR /code

ENTRYPOINT [ "/bin/bash", "-c"]

# We specify an empty command so that we can pass options to the ENTRYPOINT command.
# This is a bit of a Dockerfile quirk where if the ENTRYPOINT value is defined,
# then CMD becomes the default options passed to ENTRYPOINT.
# In this case we don't have any desired default arguments.
# However, we have to specify CMD to enable passing of command line parameters to ENTRYPOINT in the first place.
CMD [ ]
50 changes: 50 additions & 0 deletions build/docker/ubuntu2404/arm64/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Dockerfile for building DO client components for Ubuntu 24.04 arm64
# First, install the docker extension for VSCode. Then you can right-click on this file
# and choose Build Image. Give it a name and it will build the image.
#
# Open interactive terminal into the image in a container:
# docker run -ti --rm --entrypoint=/bin/bash -v <project root dir>:/code -v <build root dir>:/build <image_name>
# Example:
# docker run -ti --rm --entrypoint=/bin/bash -v D:\do-client-lite:/code -v D:\temp\build_client_lite\arm-linux-debug:/build custom-ubuntu2404-arm64

# Find the sha256 digest using:
# sudo docker manifest inspect mcr.microsoft.com/mirror/docker/library/ubuntu:24.04

FROM mcr.microsoft.com/mirror/docker/library/ubuntu:24.04@sha256:955364933d0d91afa6e10fb045948c16d2b191114aa54bed3ab5430d8bbc58cc
SHELL [ "/bin/bash", "-c"]

# QEMU is a Linux emulator which enables cross-arch support in docker
# In order to build this image on a Linux host, need to install QEMU:
#
# sudo apt-get install qemu-user
# update-binfmts --display
# sudo apt install qemu binfmt-support qemu-user-static
# cp /usr/bin/qemu-aarch64-static <src root>/build/docker/ubuntu2404/arm64
#
# Then copy the build script to the build directory
# cp <src root>/build/bootstrap.sh <src root>build/docker/ubuntu2404/arm64
#
# After running the above, you can build the image by running in the current dockerfile directory
# sudo docker build -t <your image name> . --no-cache --network=host

# Ubuntu 24.04 requires user prompt for apt-get update command, docker has issues handling this input
ENV DEBIAN_FRONTEND=noninteractive

COPY qemu-aarch64-static /usr/bin/qemu-aarch64-static
COPY bootstrap.sh /tmp/bootstrap.sh

WORKDIR /tmp/
RUN chmod +x bootstrap.sh
RUN ./bootstrap.sh --install build

VOLUME /code
WORKDIR /code

ENTRYPOINT [ "/bin/bash", "-c"]

# We specify an empty command so that we can pass options to the ENTRYPOINT command.
# This is a bit of a Dockerfile quirk where if the ENTRYPOINT value is defined,
# then CMD becomes the default options passed to ENTRYPOINT.
# In this case we don't have any desired default arguments.
# However, we have to specify CMD to enable passing of command line parameters to ENTRYPOINT in the first place.
CMD [ ]
7 changes: 4 additions & 3 deletions build/scripts/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,10 @@ function installBuildDependencies
mkdir /tmp/gtest
pushd /tmp/gtest

if [[ ($DISTRO == "ubuntu" && ($VER == "20.04" || $VER == "22.04")) || ($DISTRO == "debian" && ($VER == "10" || $VER == "11" || $VER == "12")) ]];
if [[ ($DISTRO == "ubuntu" && ($VER == "20.04" || $VER == "22.04" || $VER == "24.04"))
|| ($DISTRO == "debian" && ($VER == "10" || $VER == "11" || $VER == "12")) ]];
then
if [[ $VER == "22.04" || $VER == "12" ]]; then release="v1.13.0"; else release="release-1.10.0"; fi;
if [[ $VER == "22.04" || $VER == "24.04" || $VER == "12" ]]; then release="v1.13.0"; else release="release-1.10.0"; fi;

# The latest native-version of gtest on the latest versions of ubuntu and debian currently has a bug where
# CMakeLists doesn't declare an install target, causing 'make install' to fail.
Expand Down Expand Up @@ -167,7 +168,7 @@ function installAll

function isSupportedLinux()
{
if [[ ($DISTRO == "ubuntu" && ($VER == "18.04" || $VER == "20.04" || $VER == "22.04"))
if [[ ($DISTRO == "ubuntu" && ($VER == "18.04" || $VER == "20.04" || $VER == "22.04" || $VER == "24.04"))
|| ($DISTRO == "debian" && ($VER == "10" || $VER == "11" || $VER == "12")) ]];
then
return 0
Expand Down
1 change: 1 addition & 0 deletions client-lite/test/test_data.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#pragma once

#include <cstdint>
#include <string>

extern const uint64_t g_prodFileSizeBytes;
Expand Down
14 changes: 13 additions & 1 deletion common/cmake/Findlibproxy.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,17 @@ include(FindPackageHandleStandardArgs)
find_path(
libproxy_INCLUDE_DIR
NAMES proxy.h
PATH_SUFFIXES include
PATH_SUFFIXES include libproxy
)

find_library(libproxy_LIBRARY proxy)

# On Ubuntu 24.04+, libproxy headers include glib-object.h
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(GLIB2 QUIET gobject-2.0)
endif()

find_package_handle_standard_args(
libproxy
DEFAULT_MSG
Expand All @@ -26,6 +32,12 @@ if(libproxy_FOUND)
set(libproxy_INCLUDE_DIRS ${libproxy_INCLUDE_DIR})
set(libproxy_LIBRARIES ${libproxy_LIBRARY})

# Add glib include dirs and libraries if found (required on Ubuntu 24.04+)
if(GLIB2_FOUND)
list(APPEND libproxy_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS})
list(APPEND libproxy_LIBRARIES ${GLIB2_LIBRARIES})
endif()

message(STATUS "lib: ${libproxy_LIBRARY}, found: ${libproxy_FOUND}")

if(NOT TARGET libproxy::proxy)
Expand Down
Loading
Loading