Updates...
This commit is contained in:
parent
7bb0098cd8
commit
36b1662945
16 changed files with 679 additions and 41 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
||||||
workspace.code-workspace
|
workspace.code-workspace
|
||||||
|
samples
|
||||||
|
|
17
.vscode/launch.json
vendored
Normal file
17
.vscode/launch.json
vendored
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"cwd": "${workspaceRoot}",
|
||||||
|
"name": "Listen for rdebug-ide",
|
||||||
|
"type": "Ruby",
|
||||||
|
"request": "attach",
|
||||||
|
"remoteHost": "127.0.0.1",
|
||||||
|
"remotePort": "1234",
|
||||||
|
"remoteWorkspaceRoot": "${workspaceRoot}"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
7
.vscode/settings.json
vendored
Normal file
7
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"files.exclude": {
|
||||||
|
"alpine": true,
|
||||||
|
"debian": true,
|
||||||
|
"ubuntu": true
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,18 +3,17 @@ FROM alpine:${ALPINE_VERSION} AS builder
|
||||||
WORKDIR /tdlib
|
WORKDIR /tdlib
|
||||||
RUN apk update && apk upgrade && apk add --update alpine-sdk linux-headers git zlib-dev openssl-dev gperf php cmake
|
RUN apk update && apk upgrade && apk add --update alpine-sdk linux-headers git zlib-dev openssl-dev gperf php cmake
|
||||||
RUN git clone https://github.com/tdlib/td.git .
|
RUN git clone https://github.com/tdlib/td.git .
|
||||||
ARG TDLIB_VER
|
ARG TDLIB_TAG
|
||||||
RUN git checkout "tags/v${TDLIB_VER}"
|
ARG TDLIB_COMMIT
|
||||||
|
RUN if [ "$TDLIB_TAG" ]; then \
|
||||||
|
git checkout "tags/${TDLIB_TAG}"; \
|
||||||
|
else \
|
||||||
|
git checkout "${TDLIB_COMMIT}"; \
|
||||||
|
fi
|
||||||
RUN rm -rf build && mkdir build
|
RUN rm -rf build && mkdir build
|
||||||
WORKDIR /tdlib/build
|
WORKDIR /tdlib/build
|
||||||
RUN cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib ..
|
RUN cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib ..
|
||||||
RUN cmake --build . --target prepare_cross_compiling
|
|
||||||
WORKDIR /tdlib
|
|
||||||
RUN php SplitSource.php
|
|
||||||
WORKDIR /tdlib/build
|
|
||||||
RUN cmake --build . --target install
|
RUN cmake --build . --target install
|
||||||
WORKDIR /tdlib
|
|
||||||
RUN php SplitSource.php --undo
|
|
||||||
|
|
||||||
FROM alpine:${ALPINE_VERSION}
|
FROM alpine:${ALPINE_VERSION}
|
||||||
WORKDIR /tdlib
|
WORKDIR /tdlib
|
||||||
|
|
26
alpine/Dockerfile-low-ram
Normal file
26
alpine/Dockerfile-low-ram
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
ARG ALPINE_VERSION
|
||||||
|
FROM alpine:${ALPINE_VERSION} AS builder
|
||||||
|
WORKDIR /tdlib
|
||||||
|
RUN apk update && apk upgrade && apk add --update alpine-sdk linux-headers git zlib-dev openssl-dev gperf php cmake
|
||||||
|
RUN git clone https://github.com/tdlib/td.git .
|
||||||
|
ARG TDLIB_TAG
|
||||||
|
ARG TDLIB_COMMIT
|
||||||
|
RUN if [ "$TDLIB_TAG" ]; then \
|
||||||
|
git checkout "tags/${TDLIB_TAG}"; \
|
||||||
|
else \
|
||||||
|
git checkout "${TDLIB_COMMIT}"; \
|
||||||
|
fi
|
||||||
|
RUN rm -rf build && mkdir build
|
||||||
|
WORKDIR /tdlib/build
|
||||||
|
RUN cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib ..
|
||||||
|
RUN cmake --build . --target prepare_cross_compiling
|
||||||
|
WORKDIR /tdlib
|
||||||
|
RUN php SplitSource.php
|
||||||
|
WORKDIR /tdlib/build
|
||||||
|
RUN cmake --build . --target install
|
||||||
|
WORKDIR /tdlib
|
||||||
|
RUN php SplitSource.php --undo
|
||||||
|
|
||||||
|
FROM alpine:${ALPINE_VERSION}
|
||||||
|
WORKDIR /tdlib
|
||||||
|
COPY --from=builder /tdlib/tdlib /tdlib
|
10
alpine/Dockerfile-so
Normal file
10
alpine/Dockerfile-so
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
ARG ALPINE_VERSION
|
||||||
|
ARG TDLIB_IMAGE
|
||||||
|
FROM ${TDLIB_IMAGE} AS tdlib
|
||||||
|
RUN mkdir /tdlib-so
|
||||||
|
WORKDIR /tdlib-so
|
||||||
|
RUN find /tdlib/lib -regex '.*\.so.*' -print0 | xargs -0 -I % cp -P % .
|
||||||
|
|
||||||
|
FROM alpine:${ALPINE_VERSION}
|
||||||
|
WORKDIR /tdlib-so
|
||||||
|
COPY --from=tdlib /tdlib-so .
|
113
alpine/build.sh
113
alpine/build.sh
|
@ -1,16 +1,117 @@
|
||||||
#! /usr/bin/env sh
|
#! /usr/bin/env sh
|
||||||
|
|
||||||
if [ -z $ALPINE_VERSION ]
|
# Parse arguments
|
||||||
|
|
||||||
|
help () {
|
||||||
|
echo 'build.sh -- Alpine image'
|
||||||
|
echo
|
||||||
|
echo ' -v --alpine $ALPINE_VERSION:'
|
||||||
|
echo ' specify version of Alpine Docker image'
|
||||||
|
echo ' -t --tag $TDLIB_TAG:'
|
||||||
|
echo ' specify the tdlib repository tag'
|
||||||
|
echo ' -c --commit $TDLIB_COMMIT:'
|
||||||
|
echo ' specify the tdlib repository commit hash'
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
unknown_param () {
|
||||||
|
echo 'build.sh: Unknown parameter $1'
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]
|
||||||
|
do
|
||||||
|
|
||||||
|
param="$1"
|
||||||
|
shift
|
||||||
|
case "$param" in
|
||||||
|
"-v")
|
||||||
|
;&
|
||||||
|
"--alpine")
|
||||||
|
export ALPINE_VERSION=$1
|
||||||
|
echo "ALPINE_VERSION=$ALPINE_VERSION"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-h")
|
||||||
|
;&
|
||||||
|
"--help")
|
||||||
|
help
|
||||||
|
;;
|
||||||
|
"-t")
|
||||||
|
;&
|
||||||
|
"--tag")
|
||||||
|
export TDLIB_TAG=$1
|
||||||
|
echo "TDLIB_TAG=$TDLIB_TAG"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-c")
|
||||||
|
;&
|
||||||
|
"--commit")
|
||||||
|
export TDLIB_COMMIT=$1
|
||||||
|
echo "TDLIB_COMMIT=$TDLIB_COMMIT"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
unknown_param "$param"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$ALPINE_VERSION" ]
|
||||||
then
|
then
|
||||||
echo "Please specify a version by setting the ALPINE_VERSION env var"
|
echo "build.sh: Please specify a version using -v"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $# -eq 1 ]
|
ram=$(free -m | grep -oP '\d+' | head -n 1)
|
||||||
|
if [ $ram -lt 3584 ] # 3.5 GB RAM = 3584 MB
|
||||||
then
|
then
|
||||||
export TDLIB_VER="$1"
|
dockerfile=Dockerfile-low-ram
|
||||||
else
|
else
|
||||||
export TDLIB_VER="1.7.0"
|
dockerfile=Dockerfile
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker build -t "tdlib:$TDLIB_VER-alpine-$ALPINE_VERSION" --build-arg TDLIB_VER --build-arg ALPINE_VERSION $(dirname $0)
|
if [ "$TDLIB_TAG" ]
|
||||||
|
then
|
||||||
|
if [ -z "$IMAGE_TAG" ]
|
||||||
|
then
|
||||||
|
export IMAGE_TAG="tdlib:$TDLIB_TAG-alpine-$ALPINE_VERSION"
|
||||||
|
echo "IMAGE_TAG=$IMAGE_TAG"
|
||||||
|
fi
|
||||||
|
docker build \
|
||||||
|
-t "$IMAGE_TAG" \
|
||||||
|
--build-arg TDLIB_TAG \
|
||||||
|
--build-arg ALPINE_VERSION \
|
||||||
|
-f $dockerfile \
|
||||||
|
$(dirname $0)
|
||||||
|
elif [ "$TDLIB_COMMIT" ]
|
||||||
|
then
|
||||||
|
if [ -z "$IMAGE_TAG" ]
|
||||||
|
then
|
||||||
|
export IMAGE_TAG="tdlib:$TDLIB_COMMIT-alpine-$ALPINE_VERSION"
|
||||||
|
echo "IMAGE_TAG=$IMAGE_TAG"
|
||||||
|
fi
|
||||||
|
docker build \
|
||||||
|
-t "$IMAGE_TAG" \
|
||||||
|
--build-arg TDLIB_COMMIT \
|
||||||
|
--build-arg ALPINE_VERSION \
|
||||||
|
-f $dockerfile \
|
||||||
|
$(dirname $0)
|
||||||
|
else
|
||||||
|
echo 'build.sh: no commit or tag supplied'
|
||||||
|
echo ' TIP: Find tags here: https://github.com/tdlib/td/tags'
|
||||||
|
echo ' TIP: Find commits here: https://github.com/tdlib/td/commits/master'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $SO_IMAGE_TAG ]
|
||||||
|
then
|
||||||
|
export SO_IMAGE_TAG="$IMAGE_TAG-so"
|
||||||
|
fi
|
||||||
|
echo "SO_IMAGE_TAG=$SO_IMAGE_TAG"
|
||||||
|
docker build \
|
||||||
|
-t "$SO_IMAGE_TAG" \
|
||||||
|
--build-arg "TDLIB_IMAGE=$IMAGE_TAG" \
|
||||||
|
--build-arg ALPINE_VERSION \
|
||||||
|
-f Dockerfile-so \
|
||||||
|
.
|
||||||
|
|
203
build-all.rb
Executable file
203
build-all.rb
Executable file
|
@ -0,0 +1,203 @@
|
||||||
|
#! /usr/bin/env ruby
|
||||||
|
|
||||||
|
os_versions = {
|
||||||
|
alpine: [],
|
||||||
|
debian: [],
|
||||||
|
ubuntu: [],
|
||||||
|
}
|
||||||
|
|
||||||
|
tdlib_versions = []
|
||||||
|
|
||||||
|
image_names = []
|
||||||
|
|
||||||
|
puts 'Alpine versions? (end with empty line)'
|
||||||
|
loop do
|
||||||
|
line = gets
|
||||||
|
if line.nil?
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
version, *aliases = line.strip.split('|')
|
||||||
|
if version.nil?
|
||||||
|
break
|
||||||
|
end
|
||||||
|
if aliases.empty?
|
||||||
|
aliases.append "alpine-#{version}"
|
||||||
|
end
|
||||||
|
os_versions[:alpine].append({
|
||||||
|
version: version,
|
||||||
|
aliases: aliases,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
puts 'Debian versions? (end with empty line)'
|
||||||
|
loop do
|
||||||
|
line = gets
|
||||||
|
if line.nil?
|
||||||
|
break
|
||||||
|
end
|
||||||
|
version, *aliases = line.strip.split('|')
|
||||||
|
if version.nil?
|
||||||
|
break
|
||||||
|
end
|
||||||
|
if aliases.empty?
|
||||||
|
aliases.append "debian-#{version}"
|
||||||
|
end
|
||||||
|
os_versions[:debian].append({
|
||||||
|
version: version,
|
||||||
|
aliases: aliases,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
puts 'Ubuntu versions? (end with empty line)'
|
||||||
|
loop do
|
||||||
|
line = gets
|
||||||
|
if line.nil?
|
||||||
|
break
|
||||||
|
end
|
||||||
|
version, *aliases = line.strip.split('|')
|
||||||
|
if version.nil?
|
||||||
|
break
|
||||||
|
end
|
||||||
|
if aliases.empty?
|
||||||
|
aliases.append "ubuntu-#{version}"
|
||||||
|
end
|
||||||
|
os_versions[:ubuntu].append({
|
||||||
|
version: version,
|
||||||
|
aliases: aliases,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
puts 'tdlib commits? (end with empty line; tag:XXX to insert tag name)'
|
||||||
|
loop do
|
||||||
|
line = gets
|
||||||
|
if line.nil?
|
||||||
|
break
|
||||||
|
end
|
||||||
|
commit, *aliases = line.strip.split('|')
|
||||||
|
if commit.nil?
|
||||||
|
break
|
||||||
|
end
|
||||||
|
if commit.start_with? 'tag:'
|
||||||
|
tag = commit[4..]
|
||||||
|
commit = nil
|
||||||
|
end
|
||||||
|
if aliases.empty?
|
||||||
|
if commit.nil?
|
||||||
|
aliases.append tag
|
||||||
|
else
|
||||||
|
aliases.append commit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
tdlib_versions.append({
|
||||||
|
tag: tag,
|
||||||
|
commit: commit,
|
||||||
|
aliases: aliases,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
puts 'Image names? (end with empty line)'
|
||||||
|
loop do
|
||||||
|
line = gets
|
||||||
|
if line.nil?
|
||||||
|
break
|
||||||
|
end
|
||||||
|
image_names.append(line.strip)
|
||||||
|
end
|
||||||
|
if image_names.empty?
|
||||||
|
image_names.append "tdlib"
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_script os
|
||||||
|
case os
|
||||||
|
when :alpine
|
||||||
|
'./alpine/build.sh'
|
||||||
|
when :debian
|
||||||
|
'./debian/build.sh'
|
||||||
|
when :ubuntu
|
||||||
|
'./ubuntu/build.sh'
|
||||||
|
else
|
||||||
|
fail "Unknown OS: #{os}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_tdlib_ver_print tdlib_ver
|
||||||
|
if not tdlib_ver[:tag].nil?
|
||||||
|
"tags/#{tdlib_ver[:tag]}"
|
||||||
|
else
|
||||||
|
tdlib_ver[:commit]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
failures = 0
|
||||||
|
os_versions.each_pair do |os, os_versions|
|
||||||
|
script = get_script os
|
||||||
|
os_versions.each do |os_version|
|
||||||
|
tdlib_versions.each do |tdlib_version|
|
||||||
|
puts "\x1b[94mNow building \x1b[92m#{os}:#{os_version[:version]}\x1b[94m, TDLIB: \x1b[92m#{get_tdlib_ver_print(tdlib_version)}\x1b[39m"
|
||||||
|
if not tdlib_version[:tag].nil?
|
||||||
|
success = system(
|
||||||
|
{"IMAGE_TAG" => "tdlib:ruby_temp_img", "SO_IMAGE_TAG" => "tdlib:ruby_temp_img_so"},
|
||||||
|
"./#{File.basename("./build.sh")}",
|
||||||
|
"-v",
|
||||||
|
os_version[:version],
|
||||||
|
"-t",
|
||||||
|
tdlib_version[:tag],
|
||||||
|
chdir: File.dirname(File.realpath(script)),
|
||||||
|
exception: true,
|
||||||
|
)
|
||||||
|
else
|
||||||
|
success = system(
|
||||||
|
{"IMAGE_TAG" => "tdlib:ruby_temp_img", "SO_IMAGE_TAG" => "tdlib:ruby_temp_img_so"},
|
||||||
|
"./#{File.basename("./build.sh")}",
|
||||||
|
"-v",
|
||||||
|
os_version[:version],
|
||||||
|
"-c",
|
||||||
|
tdlib_version[:commit],
|
||||||
|
chdir: File.dirname(File.realpath(script)),
|
||||||
|
exception: true,
|
||||||
|
)
|
||||||
|
end
|
||||||
|
if success
|
||||||
|
puts "Image build, tagging..."
|
||||||
|
image_names.each do |img_name|
|
||||||
|
os_version[:aliases].each do |os_alias|
|
||||||
|
tdlib_version[:aliases].each do |tdlib_alias|
|
||||||
|
tag = "#{img_name}:#{tdlib_alias}-#{os_alias}"
|
||||||
|
system(
|
||||||
|
"docker",
|
||||||
|
"tag",
|
||||||
|
"tdlib:ruby_temp_img",
|
||||||
|
tag
|
||||||
|
)
|
||||||
|
puts "\x1b[37m- \x1b[92m#{tag}\x1b[39m"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
image_names.each do |img_name|
|
||||||
|
os_version[:aliases].each do |os_alias|
|
||||||
|
tdlib_version[:aliases].each do |tdlib_alias|
|
||||||
|
tag = "#{img_name}:so-#{tdlib_alias}-#{os_alias}"
|
||||||
|
system(
|
||||||
|
"docker",
|
||||||
|
"tag",
|
||||||
|
"tdlib:ruby_temp_img_so",
|
||||||
|
tag
|
||||||
|
)
|
||||||
|
puts "\x1b[37m- \x1b[92m#{tag}\x1b[39m"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
system("docker", "image", "rm", "tdlib:ruby_temp_img")
|
||||||
|
system("docker", "image", "rm", "tdlib:ruby_temp_img_so")
|
||||||
|
else
|
||||||
|
$stderr.puts "Failed!"
|
||||||
|
failures += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if failures != 0
|
||||||
|
exit 1
|
||||||
|
end
|
15
debian/Dockerfile
vendored
15
debian/Dockerfile
vendored
|
@ -4,18 +4,17 @@ WORKDIR /tdlib
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt-get -y update && apt-get -y upgrade && apt-get -y install make git zlib1g-dev libssl-dev gperf php-cli cmake clang libc++-dev libc++abi-dev
|
RUN apt-get -y update && apt-get -y upgrade && apt-get -y install make git zlib1g-dev libssl-dev gperf php-cli cmake clang libc++-dev libc++abi-dev
|
||||||
RUN git clone https://github.com/tdlib/td.git .
|
RUN git clone https://github.com/tdlib/td.git .
|
||||||
ARG TDLIB_VER
|
ARG TDLIB_TAG
|
||||||
RUN git checkout "tags/v${TDLIB_VER}"
|
ARG TDLIB_COMMIT
|
||||||
|
RUN if [ "$TDLIB_TAG" ]; then \
|
||||||
|
git checkout "tags/${TDLIB_TAG}"; \
|
||||||
|
else \
|
||||||
|
git checkout "${TDLIB_COMMIT}"; \
|
||||||
|
fi
|
||||||
RUN rm -rf build && mkdir build
|
RUN rm -rf build && mkdir build
|
||||||
WORKDIR /tdlib/build
|
WORKDIR /tdlib/build
|
||||||
RUN CXXFLAGS="-stdlib=libc++" CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib ..
|
RUN CXXFLAGS="-stdlib=libc++" CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib ..
|
||||||
RUN cmake --build . --target prepare_cross_compiling
|
|
||||||
WORKDIR /tdlib
|
|
||||||
RUN php SplitSource.php
|
|
||||||
WORKDIR /tdlib/build
|
|
||||||
RUN cmake --build . --target install
|
RUN cmake --build . --target install
|
||||||
WORKDIR /tdlib
|
|
||||||
RUN php SplitSource.php --undo
|
|
||||||
|
|
||||||
FROM debian:${DEBIAN_VERSION}
|
FROM debian:${DEBIAN_VERSION}
|
||||||
WORKDIR /tdlib
|
WORKDIR /tdlib
|
||||||
|
|
27
debian/Dockerfile-low-ram
vendored
Normal file
27
debian/Dockerfile-low-ram
vendored
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
ARG DEBIAN_VERSION
|
||||||
|
FROM debian:${DEBIAN_VERSION} AS builder
|
||||||
|
WORKDIR /tdlib
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
RUN apt-get -y update && apt-get -y upgrade && apt-get -y install make git zlib1g-dev libssl-dev gperf php-cli cmake clang libc++-dev libc++abi-dev
|
||||||
|
RUN git clone https://github.com/tdlib/td.git .
|
||||||
|
ARG TDLIB_TAG
|
||||||
|
ARG TDLIB_COMMIT
|
||||||
|
RUN if [ "$TDLIB_TAG" ]; then \
|
||||||
|
git checkout "tags/${TDLIB_TAG}"; \
|
||||||
|
else \
|
||||||
|
git checkout "${TDLIB_COMMIT}"; \
|
||||||
|
fi
|
||||||
|
RUN rm -rf build && mkdir build
|
||||||
|
WORKDIR /tdlib/build
|
||||||
|
RUN CXXFLAGS="-stdlib=libc++" CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib ..
|
||||||
|
RUN cmake --build . --target prepare_cross_compiling
|
||||||
|
WORKDIR /tdlib
|
||||||
|
RUN php SplitSource.php
|
||||||
|
WORKDIR /tdlib/build
|
||||||
|
RUN cmake --build . --target install
|
||||||
|
WORKDIR /tdlib
|
||||||
|
RUN php SplitSource.php --undo
|
||||||
|
|
||||||
|
FROM debian:${DEBIAN_VERSION}
|
||||||
|
WORKDIR /tdlib
|
||||||
|
COPY --from=builder /tdlib/tdlib /tdlib
|
10
debian/Dockerfile-so
vendored
Normal file
10
debian/Dockerfile-so
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
ARG DEBIAN_VERSION
|
||||||
|
ARG TDLIB_IMAGE
|
||||||
|
FROM ${TDLIB_IMAGE} AS tdlib
|
||||||
|
RUN mkdir /tdlib-so
|
||||||
|
WORKDIR /tdlib-so
|
||||||
|
RUN find /tdlib/lib -regex '.*\.so.*' -print0 | xargs -0 -I % cp -P % .
|
||||||
|
|
||||||
|
FROM debian:${DEBIAN_VERSION}
|
||||||
|
WORKDIR /tdlib-so
|
||||||
|
COPY --from=tdlib /tdlib-so .
|
111
debian/build.sh
vendored
111
debian/build.sh
vendored
|
@ -1,16 +1,117 @@
|
||||||
#! /usr/bin/env sh
|
#! /usr/bin/env sh
|
||||||
|
|
||||||
|
# Parse arguments
|
||||||
|
|
||||||
|
help () {
|
||||||
|
echo 'build.sh -- Ubuntu image'
|
||||||
|
echo
|
||||||
|
echo ' -v --debian $DEBIAN_VERSION:'
|
||||||
|
echo ' specify version of Debian Docker image'
|
||||||
|
echo ' -t --tag $TDLIB_TAG:'
|
||||||
|
echo ' specify the tdlib repository tag'
|
||||||
|
echo ' -c --commit $TDLIB_COMMIT:'
|
||||||
|
echo ' specify the tdlib repository commit hash'
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
unknown_param () {
|
||||||
|
echo 'build.sh: Unknown parameter $1'
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]
|
||||||
|
do
|
||||||
|
|
||||||
|
param="$1"
|
||||||
|
shift
|
||||||
|
case "$param" in
|
||||||
|
"-v")
|
||||||
|
;&
|
||||||
|
"--debian")
|
||||||
|
export DEBIAN_VERSION=$1
|
||||||
|
echo "DEBIAN_VERSION=$DEBIAN_VERSION"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-h")
|
||||||
|
;&
|
||||||
|
"--help")
|
||||||
|
help
|
||||||
|
;;
|
||||||
|
"-t")
|
||||||
|
;&
|
||||||
|
"--tag")
|
||||||
|
export TDLIB_TAG=$1
|
||||||
|
echo "TDLIB_TAG=$TDLIB_TAG"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-c")
|
||||||
|
;&
|
||||||
|
"--commit")
|
||||||
|
export TDLIB_COMMIT=$1
|
||||||
|
echo "TDLIB_COMMIT=$TDLIB_COMMIT"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
unknown_param "$param"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
if [ -z $DEBIAN_VERSION ]
|
if [ -z $DEBIAN_VERSION ]
|
||||||
then
|
then
|
||||||
echo "Please specify a version by setting the DEBIAN_VERSION env var"
|
echo "build.sh: Please specify a version using -v"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $# -eq 1 ]
|
ram=$(free -m | grep -oP '\d+' | head -n 1)
|
||||||
|
if [ $ram -lt 3584 ] # 3.5 GB RAM = 3584 MB
|
||||||
then
|
then
|
||||||
export TDLIB_VER="$1"
|
dockerfile=Dockerfile-low-ram
|
||||||
else
|
else
|
||||||
export TDLIB_VER="1.7.0"
|
dockerfile=Dockerfile
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker build -t "tdlib:$TDLIB_VER-$DEBIAN_VERSION" --build-arg TDLIB_VER --build-arg DEBIAN_VERSION $(dirname $0)
|
if [ "$TDLIB_TAG" ]
|
||||||
|
then
|
||||||
|
if [ -z "$IMAGE_TAG" ]
|
||||||
|
then
|
||||||
|
export IMAGE_TAG="tdlib:$TDLIB_TAG-$DEBIAN_VERSION"
|
||||||
|
echo "IMAGE_TAG=$IMAGE_TAG"
|
||||||
|
fi
|
||||||
|
docker build \
|
||||||
|
-t "$IMAGE_TAG" \
|
||||||
|
--build-arg TDLIB_TAG \
|
||||||
|
--build-arg DEBIAN_VERSION \
|
||||||
|
-f $dockerfile \
|
||||||
|
$(dirname $0)
|
||||||
|
elif [ "$TDLIB_COMMIT" ]
|
||||||
|
then
|
||||||
|
if [ -z "$IMAGE_TAG" ]
|
||||||
|
then
|
||||||
|
export IMAGE_TAG="tdlib:$TDLIB_COMMIT-$DEBIAN_VERSION"
|
||||||
|
echo "IMAGE_TAG=$IMAGE_TAG"
|
||||||
|
fi
|
||||||
|
docker build \
|
||||||
|
-t "$IMAGE_TAG" \
|
||||||
|
--build-arg TDLIB_COMMIT \
|
||||||
|
--build-arg DEBIAN_VERSION \
|
||||||
|
-f $dockerfile \
|
||||||
|
$(dirname $0)
|
||||||
|
else
|
||||||
|
echo 'build.sh: no commit or tag supplied'
|
||||||
|
echo ' TIP: Find tags here: https://github.com/tdlib/td/tags'
|
||||||
|
echo ' TIP: Find commits here: https://github.com/tdlib/td/commits/master'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $SO_IMAGE_TAG ]
|
||||||
|
then
|
||||||
|
export SO_IMAGE_TAG="$IMAGE_TAG-so"
|
||||||
|
fi
|
||||||
|
echo "SO_IMAGE_TAG=$SO_IMAGE_TAG"
|
||||||
|
docker build \
|
||||||
|
-t "$SO_IMAGE_TAG" \
|
||||||
|
--build-arg "TDLIB_IMAGE=$IMAGE_TAG" \
|
||||||
|
--build-arg DEBIAN_VERSION \
|
||||||
|
-f Dockerfile-so \
|
||||||
|
.
|
||||||
|
|
|
@ -4,18 +4,17 @@ WORKDIR /tdlib
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt-get -y update && apt-get -y upgrade && apt-get -y install make git zlib1g-dev libssl-dev gperf php-cli cmake clang-10 libc++-dev libc++abi-dev
|
RUN apt-get -y update && apt-get -y upgrade && apt-get -y install make git zlib1g-dev libssl-dev gperf php-cli cmake clang-10 libc++-dev libc++abi-dev
|
||||||
RUN git clone https://github.com/tdlib/td.git .
|
RUN git clone https://github.com/tdlib/td.git .
|
||||||
ARG TDLIB_VER
|
ARG TDLIB_TAG
|
||||||
RUN git checkout "tags/v${TDLIB_VER}"
|
ARG TDLIB_COMMIT
|
||||||
|
RUN if [ "$TDLIB_TAG" ]; then \
|
||||||
|
git checkout "tags/${TDLIB_TAG}"; \
|
||||||
|
else \
|
||||||
|
git checkout "${TDLIB_COMMIT}"; \
|
||||||
|
fi
|
||||||
RUN rm -rf build && mkdir build
|
RUN rm -rf build && mkdir build
|
||||||
WORKDIR /tdlib/build
|
WORKDIR /tdlib/build
|
||||||
RUN CXXFLAGS="-stdlib=libc++" CC=/usr/bin/clang-10 CXX=/usr/bin/clang++-10 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib -DTD_ENABLE_LTO=ON -DCMAKE_AR=/usr/bin/llvm-ar-10 -DCMAKE_NM=/usr/bin/llvm-nm-10 -DCMAKE_OBJDUMP=/usr/bin/llvm-objdump-10 -DCMAKE_RANLIB=/usr/bin/llvm-ranlib-10 ..
|
RUN CXXFLAGS="-stdlib=libc++" CC=/usr/bin/clang-10 CXX=/usr/bin/clang++-10 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib -DTD_ENABLE_LTO=ON -DCMAKE_AR=/usr/bin/llvm-ar-10 -DCMAKE_NM=/usr/bin/llvm-nm-10 -DCMAKE_OBJDUMP=/usr/bin/llvm-objdump-10 -DCMAKE_RANLIB=/usr/bin/llvm-ranlib-10 ..
|
||||||
RUN cmake --build . --target prepare_cross_compiling
|
|
||||||
WORKDIR /tdlib
|
|
||||||
RUN php SplitSource.php
|
|
||||||
WORKDIR /tdlib/build
|
|
||||||
RUN cmake --build . --target install
|
RUN cmake --build . --target install
|
||||||
WORKDIR /tdlib
|
|
||||||
RUN php SplitSource.php --undo
|
|
||||||
|
|
||||||
FROM ubuntu:${UBUNTU_VERSION}
|
FROM ubuntu:${UBUNTU_VERSION}
|
||||||
WORKDIR /tdlib
|
WORKDIR /tdlib
|
||||||
|
|
27
ubuntu/Dockerfile-low-ram
Normal file
27
ubuntu/Dockerfile-low-ram
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
ARG UBUNTU_VERSION
|
||||||
|
FROM ubuntu:${UBUNTU_VERSION} AS builder
|
||||||
|
WORKDIR /tdlib
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
RUN apt-get -y update && apt-get -y upgrade && apt-get -y install make git zlib1g-dev libssl-dev gperf php-cli cmake clang-10 libc++-dev libc++abi-dev
|
||||||
|
RUN git clone https://github.com/tdlib/td.git .
|
||||||
|
ARG TDLIB_TAG
|
||||||
|
ARG TDLIB_COMMIT
|
||||||
|
RUN if [ "$TDLIB_TAG" ]; then \
|
||||||
|
git checkout "tags/${TDLIB_TAG}"; \
|
||||||
|
else \
|
||||||
|
git checkout "${TDLIB_COMMIT}"; \
|
||||||
|
fi
|
||||||
|
RUN rm -rf build && mkdir build
|
||||||
|
WORKDIR /tdlib/build
|
||||||
|
RUN CXXFLAGS="-stdlib=libc++" CC=/usr/bin/clang-10 CXX=/usr/bin/clang++-10 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib -DTD_ENABLE_LTO=ON -DCMAKE_AR=/usr/bin/llvm-ar-10 -DCMAKE_NM=/usr/bin/llvm-nm-10 -DCMAKE_OBJDUMP=/usr/bin/llvm-objdump-10 -DCMAKE_RANLIB=/usr/bin/llvm-ranlib-10 ..
|
||||||
|
RUN cmake --build . --target prepare_cross_compiling
|
||||||
|
WORKDIR /tdlib
|
||||||
|
RUN php SplitSource.php
|
||||||
|
WORKDIR /tdlib/build
|
||||||
|
RUN cmake --build . --target install
|
||||||
|
WORKDIR /tdlib
|
||||||
|
RUN php SplitSource.php --undo
|
||||||
|
|
||||||
|
FROM ubuntu:${UBUNTU_VERSION}
|
||||||
|
WORKDIR /tdlib
|
||||||
|
COPY --from=builder /tdlib/tdlib /tdlib
|
10
ubuntu/Dockerfile-so
Normal file
10
ubuntu/Dockerfile-so
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
ARG UBUNTU_VERSION
|
||||||
|
ARG TDLIB_IMAGE
|
||||||
|
FROM ${TDLIB_IMAGE} AS tdlib
|
||||||
|
RUN mkdir /tdlib-so
|
||||||
|
WORKDIR /tdlib-so
|
||||||
|
RUN find /tdlib/lib -regex '.*\.so.*' -print0 | xargs -0 -I % cp -P % .
|
||||||
|
|
||||||
|
FROM ubuntu:${UBUNTU_VERSION}
|
||||||
|
WORKDIR /tdlib-so
|
||||||
|
COPY --from=tdlib /tdlib-so .
|
111
ubuntu/build.sh
111
ubuntu/build.sh
|
@ -1,16 +1,117 @@
|
||||||
#! /usr/bin/env sh
|
#! /usr/bin/env sh
|
||||||
|
|
||||||
|
# Parse arguments
|
||||||
|
|
||||||
|
help () {
|
||||||
|
echo 'build.sh -- Ubuntu image'
|
||||||
|
echo
|
||||||
|
echo ' -v --ubuntu $UBUNTU_VERSION:'
|
||||||
|
echo ' specify version of Ubuntu Docker image'
|
||||||
|
echo ' -t --tag $TDLIB_TAG:'
|
||||||
|
echo ' specify the tdlib repository tag'
|
||||||
|
echo ' -c --commit $TDLIB_COMMIT:'
|
||||||
|
echo ' specify the tdlib repository commit hash'
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
unknown_param () {
|
||||||
|
echo 'build.sh: Unknown parameter $1'
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]
|
||||||
|
do
|
||||||
|
|
||||||
|
param="$1"
|
||||||
|
shift
|
||||||
|
case "$param" in
|
||||||
|
"-v")
|
||||||
|
;&
|
||||||
|
"--ubuntu")
|
||||||
|
export UBUNTU_VERSION=$1
|
||||||
|
echo "UBUNTU_VERSION=$UBUNTU_VERSION"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-h")
|
||||||
|
;&
|
||||||
|
"--help")
|
||||||
|
help
|
||||||
|
;;
|
||||||
|
"-t")
|
||||||
|
;&
|
||||||
|
"--tag")
|
||||||
|
export TDLIB_TAG=$1
|
||||||
|
echo "TDLIB_TAG=$TDLIB_TAG"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-c")
|
||||||
|
;&
|
||||||
|
"--commit")
|
||||||
|
export TDLIB_COMMIT=$1
|
||||||
|
echo "TDLIB_COMMIT=$TDLIB_COMMIT"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
unknown_param "$param"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
if [ -z $UBUNTU_VERSION ]
|
if [ -z $UBUNTU_VERSION ]
|
||||||
then
|
then
|
||||||
echo "Please specify a version by setting the UBUNTU_VERSION env var"
|
echo "build.sh: Please specify a version using -v"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $# -eq 1 ]
|
ram=$(free -m | grep -oP '\d+' | head -n 1)
|
||||||
|
if [ $ram -lt 3584 ] # 3.5 GB RAM = 3584 MB
|
||||||
then
|
then
|
||||||
export TDLIB_VER="$1"
|
dockerfile=Dockerfile-low-ram
|
||||||
else
|
else
|
||||||
export TDLIB_VER="1.7.0"
|
dockerfile=Dockerfile
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker build -t "tdlib:$TDLIB_VER-$UBUNTU_VERSION" --build-arg TDLIB_VER --build-arg UBUNTU_VERSION $(dirname $0)
|
if [ "$TDLIB_TAG" ]
|
||||||
|
then
|
||||||
|
if [ -z "$IMAGE_TAG" ]
|
||||||
|
then
|
||||||
|
export IMAGE_TAG="tdlib:$TDLIB_TAG-$UBUNTU_VERSION"
|
||||||
|
fi
|
||||||
|
echo "IMAGE_TAG=$IMAGE_TAG"
|
||||||
|
docker build \
|
||||||
|
-t "$IMAGE_TAG" \
|
||||||
|
--build-arg TDLIB_TAG \
|
||||||
|
--build-arg UBUNTU_VERSION \
|
||||||
|
-f $dockerfile \
|
||||||
|
$(dirname $0)
|
||||||
|
elif [ "$TDLIB_COMMIT" ]
|
||||||
|
then
|
||||||
|
if [ -z "$IMAGE_TAG" ]
|
||||||
|
then
|
||||||
|
export IMAGE_TAG="tdlib:$TDLIB_COMMIT-$UBUNTU_VERSION"
|
||||||
|
fi
|
||||||
|
echo "IMAGE_TAG=$IMAGE_TAG"
|
||||||
|
docker build \
|
||||||
|
-t "$IMAGE_TAG" \
|
||||||
|
--build-arg TDLIB_COMMIT \
|
||||||
|
--build-arg UBUNTU_VERSION \
|
||||||
|
-f $dockerfile \
|
||||||
|
$(dirname $0)
|
||||||
|
else
|
||||||
|
echo 'build.sh: no commit or tag supplied'
|
||||||
|
echo ' TIP: Find tags here: https://github.com/tdlib/td/tags'
|
||||||
|
echo ' TIP: Find commits here: https://github.com/tdlib/td/commits/master'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $SO_IMAGE_TAG ]
|
||||||
|
then
|
||||||
|
export SO_IMAGE_TAG="$IMAGE_TAG-so"
|
||||||
|
fi
|
||||||
|
echo "SO_IMAGE_TAG=$SO_IMAGE_TAG"
|
||||||
|
docker build \
|
||||||
|
-t "$SO_IMAGE_TAG" \
|
||||||
|
--build-arg "TDLIB_IMAGE=$IMAGE_TAG" \
|
||||||
|
--build-arg UBUNTU_VERSION \
|
||||||
|
-f Dockerfile-so \
|
||||||
|
.
|
||||||
|
|
Loading…
Add table
Reference in a new issue