commit 862b7abbacac9e8a5d0178a5691e5a9dab296aa6 Author: peri4 Date: Tue May 5 21:58:43 2026 +0300 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..90ec22b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.svn diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..5adc5d5 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,71 @@ +@Library('SHS.Platforms') _ +node { + properties([ + parameters( + [booleanParam(name: 'RPi_make_sysroot', defaultValue: false, description: 'Rebuild raspbian sysroot, or only execute Dockerfile'), booleanParam(name: 'no_docker_cache', defaultValue: false, description: 'Build dockers without use docker cache')] + ) + ]) + def jobs = 4 + if (env.JOBS_COUNT) { + jobs = "${env.JOBS_COUNT}" + } + def jobs_qt = 2 + if (env.JOBS_QT_COUNT) { + jobs_qt = "${env.JOBS_QT_COUNT}" + } + def docker_cache_arg = "" + if (Boolean.valueOf(no_docker_cache)) { + docker_cache_arg = "--no-cache" + } + stage("Download SRC") { + checkout scm + } + + def pl = new org.SHS.Platforms(this) + pl.get() + + stage("Debian-base") { + docker.build("${env.DOCKER_PREFIX}/debian-base", "./debian-base ${docker_cache_arg}") + } + + if (pl.root().platforms.OSX.enabled) { + stage("OSXcross") { + docker.build("${env.DOCKER_PREFIX}/osxcross", "./osxcross ${docker_cache_arg} --build-arg XCODE_XIP=172.17.0.1/Xcode_10.3.xip") + } + } + + if (pl.root().platforms["Raspbian 10"].enabled) { + stage("Raspbian SYSROOT") { + if (Boolean.valueOf(RPi_make_sysroot)) { + echo 'Building Raspbian sysroot ...' + sh 'cd ./pi && bash ./umount_sysroot.sh && bash ./mount_sysroot.sh' + sh 'mkdir -p $HOME/rpi_image' + docker.image('${env.DOCKER_PREFIX}/debian-base').inside('-u root:root -v $HOME/rpi_image:/soft/rpi_image') { + sh 'cd ./pi && bash make_sysroot.sh' + } + sh 'cd ./pi && bash ./umount_sysroot.sh' + } + sh 'cp -vf $HOME/rpi_image/sysroot.tar.bz2 ./pi/' + } + } + + pl.forEach ({ dist -> + def args = "./${dist.docker.directory} ${docker_cache_arg}" + for (arg in dist.docker.build_options) { + args += " --build-arg ${arg.key}=\"${arg.value}\"" + } + args += " --build-arg JOBS_COUNT=${jobs}" + args += " --build-arg JOBS_QT_COUNT=${jobs_qt}" + def dprefix = "${env.DOCKER_PREFIX}" + if (dprefix != "" && !dprefix.endsWith("/")) dprefix += "/" + args += " --build-arg DOCKER_PREFIX=${dprefix}" + //print "${env.DOCKER_PREFIX}/${dist.docker.image_basename} -> ${args}" + docker.build("${env.DOCKER_PREFIX}/${dist.docker.image_basename}", args) + }, + ondemand: true + ) + + stage("docker prune") { + sh 'docker system prune -f' + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..b23ad93 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Docker instrustions + +There are instructions for build various docker images. They used as base for build https://git.shstk.ru/SHS/shstk docker images. + +Also provide Jenkinsfile for automatic build diff --git a/android/Dockerfile b/android/Dockerfile new file mode 100644 index 0000000..b16b1f5 --- /dev/null +++ b/android/Dockerfile @@ -0,0 +1,125 @@ +ARG DOCKER_PREFIX=wapmobil/ +FROM ${DOCKER_PREFIX}debian-base + +ARG JOBS_COUNT=4 +ARG QT_DOWNLOAD_SERVER=shstk.ru/files + +ENV CUR_SODIUM_VERSION=1.0.18 +ENV CUR_FFTW_VERSION=3.3.8 +ENV CUR_QT_VERSION_MAJOR=5.14 +ENV CUR_QT_VERSION=5.14.1 + + +# dev soft for our SDK +RUN mkdir -p /usr/share/man/man1 && apt-get update \ + && apt-get install -y cpio libglu1-mesa-dev libgl1-mesa-dev libwayland-dev libncurses-dev flex bison gperf \ + python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools \ + ccache libffi-dev libssl-dev doxygen graphviz libx11-dev libxkbcommon-dev libpkgconfig-perl libfreetype6-dev libfontconfig1-dev \ + lzma-dev liblzma-dev libxml2-dev libbz2-dev libmpc-dev libmpfr-dev libgmp-dev libicu-dev libusb-1.0-0-dev libreadline-dev \ + build-essential android-sdk openjdk-11-jdk && rm -rf /var/cache/apt/archives/* + + +# Android SDK and NDK +WORKDIR /soft/android + +ENV ANDROID_HOME=/usr/lib/android-sdk +ENV ANDROID_NDK_HOME=${ANDROID_HOME}/ndk-bundle +ENV ANDROID_TOOLCHAIN=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake +ENV NDK_PLATFORM="android-21" + +RUN wget -nv -O commandlinetools.zip https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip?hl=ru \ +&& unzip -o commandlinetools.zip -d ${ANDROID_HOME} && rm -f commandlinetools.zip +RUN yes | ${ANDROID_HOME}/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --licenses +RUN ${ANDROID_HOME}/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --update +RUN ${ANDROID_HOME}/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "platforms;android-21" "platforms;android-29" "platforms;android-30" "platforms;android-31" "platforms;android-32" "platforms;android-33" "platforms;android-34" "platforms;android-35" "ndk-bundle" "build-tools;28.0.3" "platform-tools" "tools" + +COPY android.toolchain.cmake.add /soft/android/ +RUN cat /soft/android/android.toolchain.cmake.add >> ${ANDROID_TOOLCHAIN} +RUN mkdir -p /soft/android/armeabi-v7a && mkdir -p /soft/android/arm64-v8a && mkdir -p /soft/android/x86 && mkdir -p /soft/android/x86_64 + + +# sodium +WORKDIR /soft +RUN curl -s https://download.libsodium.org/libsodium/releases/libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + -o libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && tar -xf libsodium-${CUR_SODIUM_VERSION}.tar.gz -C /soft \ + && rm -f libsodium-${CUR_SODIUM_VERSION}.tar.gz +WORKDIR /soft/libsodium-${CUR_SODIUM_VERSION} + +RUN TARGET_ARCH=armv7-a \ + CFLAGS="-O3 -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -marm -march=armv7-a" \ + ARCH=arm \ + HOST_COMPILER=arm-linux-androideabi \ + dist-build/android-build.sh && \ + cp -rfv /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-armv7-a/* /soft/android/armeabi-v7a/ && \ + rm -rf /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-* && \ + make distclean && rm -rf ./android-toolchain* +RUN TARGET_ARCH=armv8-a \ + CFLAGS="-O3 -march=armv8-a" \ + ARCH=arm64 \ + HOST_COMPILER=aarch64-linux-android \ + dist-build/android-build.sh && \ + cp -rfv /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-armv8-a/* /soft/android/arm64-v8a/ && \ + rm -rf /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-* && \ + make distclean && rm -rf ./android-toolchain* +RUN TARGET_ARCH=i686 \ + CFLAGS="-O3 -march=i686" \ + ARCH=x86 \ + HOST_COMPILER=i686-linux-android \ + dist-build/android-build.sh && \ + cp -rfv /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-i686/* /soft/android/x86/ && \ + rm -rf /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-* && \ + make distclean && rm -rf ./android-toolchain* +RUN TARGET_ARCH=westmere \ + CFLAGS="-O3 -march=westmere" \ + ARCH=x86_64 \ + HOST_COMPILER=x86_64-linux-android \ + dist-build/android-build.sh && \ + cp -rfv /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-westmere/* /soft/android/x86_64/ && \ + rm -rf /soft/libsodium-${CUR_SODIUM_VERSION}/libsodium-android-* && \ + make distclean && rm -rf ./android-toolchain* +WORKDIR /soft +RUN rm -rf /soft/libsodium-* + + +# fftw3 +WORKDIR /soft +RUN wget -nv http://www.fftw.org/fftw-${CUR_FFTW_VERSION}.tar.gz \ + && tar -xf fftw-${CUR_FFTW_VERSION}.tar.gz -C /soft \ + && rm -f fftw-${CUR_FFTW_VERSION}.tar.gz +WORKDIR /soft/fftw-${CUR_FFTW_VERSION}_build + +ENV _CUR_ABI=armeabi-v7a +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* + +ENV _CUR_ABI=arm64-v8a +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* + +ENV _CUR_ABI=x86 +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* + +ENV _CUR_ABI=x86_64 +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* +RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN} -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} /soft/fftw-${CUR_FFTW_VERSION} && make install -j${JOBS_COUNT} && rm -rf ./* + + +# Qt +WORKDIR /soft/android + +RUN wget -nv http://${QT_DOWNLOAD_SERVER}/qt-android-${CUR_QT_VERSION}.zip \ + && unzip -o qt-android-${CUR_QT_VERSION}.zip -d /soft/android/qt \ + && rm -f qt-android-${CUR_QT_VERSION}.zip +WORKDIR /soft/android/qt/lib/cmake/Qt5 +COPY Qt5Config.patch /soft/android/qt/lib/cmake/Qt5 +RUN patch < Qt5Config.patch + +ENV BUILD_TYPE=Release + +WORKDIR /soft diff --git a/android/Qt5Config.patch b/android/Qt5Config.patch new file mode 100644 index 0000000..dc2e048 --- /dev/null +++ b/android/Qt5Config.patch @@ -0,0 +1,18 @@ +--- Qt5Config.cmake 2020-03-09 19:23:16.000000000 +0300 ++++ ./1/Qt5Config.cmake 2020-04-05 15:27:08.135011149 +0300 +@@ -25,11 +25,14 @@ + include(${CMAKE_CURRENT_LIST_DIR}/Qt5ModuleLocation.cmake) + + foreach(module ${Qt5_FIND_COMPONENTS}) +- find_package(Qt5${module} ++ set(_ppref_ "${CMAKE_FIND_ROOT_PATH}") ++ set(CMAKE_FIND_ROOT_PATH "/") ++ find_package(Qt5${module} + ${_Qt5_FIND_PARTS_QUIET} + ${_Qt5_FIND_PARTS_REQUIRED} + PATHS ${_qt5_module_paths} NO_DEFAULT_PATH + ) ++ set(CMAKE_FIND_ROOT_PATH "${_ppref_}") + if (NOT Qt5${module}_FOUND) + string(CONFIGURE ${_qt5_module_location_template} _expected_module_location @ONLY) + diff --git a/android/android.toolchain.cmake.add b/android/android.toolchain.cmake.add new file mode 100644 index 0000000..4720e5e --- /dev/null +++ b/android/android.toolchain.cmake.add @@ -0,0 +1,6 @@ +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY FIRST) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE FIRST) +set(CMAKE_PREFIX_PATH /soft/android/${ANDROID_ABI}) +list(APPEND CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH}/lib) +include_directories(${CMAKE_PREFIX_PATH}/include) diff --git a/astra1.7/.bashrc b/astra1.7/.bashrc new file mode 100644 index 0000000..400abbd --- /dev/null +++ b/astra1.7/.bashrc @@ -0,0 +1,113 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/astra1.7/Dockerfile b/astra1.7/Dockerfile new file mode 100644 index 0000000..248ca57 --- /dev/null +++ b/astra1.7/Dockerfile @@ -0,0 +1,55 @@ +ARG image_from +FROM ${image_from} + +ARG image_prepare_script +ARG JOBS_COUNT=4 + +ENV QT_SELECT=5 +ENV LANG=en_US.utf8 +ENV CUR_FFTW_VERSION=3.3.10 +ENV CUR_MICROHTTPD_VERSION=1.0.2 + +RUN apt-get update && apt-get install -y ca-certificates gpg + +# configs +COPY .bashrc /root/.bashrc +COPY inputrc /etc/inputrc +COPY os-release /usr/lib/os-release +COPY astra.list /etc/apt/sources.list.d/astra.list +COPY key.gpg /soft/key.gpg +RUN echo 'root:12345' | chpasswd + +# prepare current distributive +RUN cat /soft/key.gpg | apt-key add - +RUN apt-get update +COPY *.sh /soft/ +RUN if [ -n "${image_prepare_script}" ]; then \ + bash /soft/${image_prepare_script} ${QT_FROM_SOURCE}; \ + fi + +ENV BUILD_TYPE=Release + +# fftw3 +WORKDIR /soft +RUN wget -nv http://www.fftw.org/fftw-${CUR_FFTW_VERSION}.tar.gz \ + && tar -xf fftw-${CUR_FFTW_VERSION}.tar.gz -C /soft \ + && rm -f fftw-${CUR_FFTW_VERSION}.tar.gz \ + && mkdir -p /soft/build/fftw3 && cd /soft/build/fftw3 \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DBUILD_SHARED_LIBS=0 /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DBUILD_SHARED_LIBS=0 /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DBUILD_SHARED_LIBS=0 /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && rm -rf /soft/fftw-* + +# microhttpd +WORKDIR /soft/ +RUN wget -nv https://mirror.tochlab.net/pub/gnu/libmicrohttpd/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && tar -xf /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz -C /soft/ \ + && rm /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && mkdir -p /soft/build/microhttpd && cd /soft/build/microhttpd \ + && sh -c 'CFLAGS="-O3 -fPIC" LDFLAGS="-O3 -fPIC" /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}/configure --prefix=/usr/local/ --enable-shared=no --enable-static=yes && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/build/microhttpd && rm -rf /soft/libmicrohttpd-* + +WORKDIR /soft diff --git a/astra1.7/astra.list b/astra1.7/astra.list new file mode 100644 index 0000000..4981dea --- /dev/null +++ b/astra1.7/astra.list @@ -0,0 +1,5 @@ +deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free +deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free + +deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free +deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free diff --git a/astra1.7/inputrc b/astra1.7/inputrc new file mode 100644 index 0000000..230e66b --- /dev/null +++ b/astra1.7/inputrc @@ -0,0 +1,67 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info rluserman' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on + +# To allow the use of 8bit-characters like the german umlauts, uncomment +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +# try to enable the application keypad when it is called. Some systems +# need this to enable the arrow keys. +# set enable-keypad on + +# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys + +# do not bell on tab-completion +# set bell-style none +# set bell-style visible + +# some defaults / modifications for the emacs mode +$if mode=emacs + +# allow the use of the Home/End keys +"\e[1~": beginning-of-line +"\e[4~": end-of-line + +# allow the use of the Delete/Insert keys +"\e[3~": delete-char +"\e[2~": quoted-insert + +# mappings for "page up" and "page down" to step to the beginning/end +# of the history +# "\e[5~": beginning-of-history +# "\e[6~": end-of-history + +# alternate mappings for "page up" and "page down" to search the history +"\e[5~": history-search-backward +"\e[6~": history-search-forward + +# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving +"\e[1;5C": forward-word +"\e[1;5D": backward-word +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +$if term=rxvt +"\e[7~": beginning-of-line +"\e[8~": end-of-line +"\eOc": forward-word +"\eOd": backward-word +$endif + +# for non RH/Debian xterm, can't hurt for RH/Debian xterm +# "\eOH": beginning-of-line +# "\eOF": end-of-line + +# for freebsd console +# "\e[H": beginning-of-line +# "\e[F": end-of-line + +$endif diff --git a/astra1.7/install_apt.sh b/astra1.7/install_apt.sh new file mode 100644 index 0000000..570f12e --- /dev/null +++ b/astra1.7/install_apt.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +apt-get update + +# locales +apt-get install -y locales +localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + +TZ=Europe/Moscow +ln -snf /usr/share/zoneinfo/$TZ /etc/localtime +echo $TZ > /etc/timezone + +# base soft +apt-get install -y \ +"^libxcb.*" \ +bison \ +ccache \ +cpio \ +curl \ +debconf \ +debhelper \ +default-libmysqlclient-dev \ +doxygen \ +dpkg \ +flex \ +g++ \ +git \ +gperf \ +graphviz \ +htop \ +iputils-ping \ +libbz2-dev \ +libffi-dev \ +libfontconfig1-dev \ +libfreetype6-dev \ +libgl1-mesa-dev \ +libglew-dev \ +libglu1-mesa-dev \ +libgmp-dev \ +libicu-dev \ +liblzma-dev \ +libmpc-dev \ +libmpfr-dev \ +libncurses-dev \ +libpkgconfig-perl \ +libpq-dev \ +libreadline-dev \ +libssl-dev \ +libusb-1.0-0-dev \ +libwayland-dev \ +libx11-dev \ +libx11-xcb-dev \ +libxkbcommon-dev \ +libxkbcommon-x11-dev \ +libxml2-dev \ +libxrender-dev \ +lsb-release \ +lzma-dev \ +mc \ +md5deep \ +nano \ +net-tools \ +ninja-build \ +ocl-icd-opencl-dev \ +p7zip-full \ +patchelf \ +python3 \ +python3-click \ +python3-cryptography \ +python3-future \ +python3-pip \ +python3-pyelftools \ +python3-pyparsing \ +python3-serial \ +python3-setuptools \ +screen \ +subversion \ +unzip \ +wget \ +zip \ +zlib1g-dev \ +qtbase5-dev-tools \ +qtconnectivity5-dev \ +qtbase5-dev \ +qttools5-dev \ +qtscript5-dev \ +qtdeclarative5-dev \ +qtpositioning5-dev \ +qtmultimedia5-dev \ +libqt5datavisualization5-dev \ +libqt5networkauth5-dev \ +libqt5opengl5-dev \ +qtscript5-dev \ +libqt5serialport5-dev \ +libqt5serialbus5-dev \ +libqt5sensors5-dev \ +libqt5svg5-dev \ +libqt5websockets5-dev \ +libqt5x11extras5-dev \ +libqt5xmlpatterns5-dev \ +libqt5charts5-dev \ +qtbase5-private-dev \ +qttools5-private-dev \ +cmake \ +libsodium-dev \ +libassimp-dev \ +discount \ +libhdf5-dev \ +libcurl4-openssl-dev \ +libpcsclite-dev + +# cleanup +rm -rf /var/cache/apt/archives/* diff --git a/astra1.7/key.gpg b/astra1.7/key.gpg new file mode 100644 index 0000000..7fb2f2c --- /dev/null +++ b/astra1.7/key.gpg @@ -0,0 +1,76 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=qIiz +-----END PGP PUBLIC KEY BLOCK----- diff --git a/astra1.7/os-release b/astra1.7/os-release new file mode 100644 index 0000000..c8c75a6 --- /dev/null +++ b/astra1.7/os-release @@ -0,0 +1,8 @@ +PRETTY_NAME="Astra Linux" +NAME="Astra Linux" +ID=astra +ID_LIKE=debian +HOME_URL="https://astralinux.ru" +SUPPORT_URL="https://astralinux.ru/support" +VERSION_ID=1.7 +VERSION_CODENAME=1.7_x86-64 diff --git a/astra1.8/.bashrc b/astra1.8/.bashrc new file mode 100644 index 0000000..400abbd --- /dev/null +++ b/astra1.8/.bashrc @@ -0,0 +1,113 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/astra1.8/Dockerfile b/astra1.8/Dockerfile new file mode 100644 index 0000000..65565a0 --- /dev/null +++ b/astra1.8/Dockerfile @@ -0,0 +1,55 @@ +ARG image_from +FROM ${image_from} + +ARG image_prepare_script +ARG JOBS_COUNT=4 + +ENV QT_SELECT=5 +ENV LANG=en_US.utf8 +ENV CUR_FFTW_VERSION=3.3.10 +ENV CUR_MICROHTTPD_VERSION=1.0.2 + +RUN apt-get update && apt-get install -y ca-certificates gpg + +# configs +COPY .bashrc /root/.bashrc +COPY inputrc /etc/inputrc +COPY os-release /usr/lib/os-release +COPY astra.list /etc/apt/sources.list.d/astra.list +COPY key.gpg /soft/key.gpg +RUN echo 'root:12345' | chpasswd + +# prepare current distributive +RUN cat /soft/key.gpg | apt-key add - +RUN apt-get update +COPY *.sh /soft/ +RUN if [ -n "${image_prepare_script}" ]; then \ + bash /soft/${image_prepare_script} ${QT_FROM_SOURCE}; \ + fi + +ENV BUILD_TYPE=Release + +# fftw3 +WORKDIR /soft +RUN wget -nv http://www.fftw.org/fftw-${CUR_FFTW_VERSION}.tar.gz \ + && tar -xf fftw-${CUR_FFTW_VERSION}.tar.gz -C /soft \ + && rm -f fftw-${CUR_FFTW_VERSION}.tar.gz \ + && mkdir -p /soft/build/fftw3 && cd /soft/build/fftw3 \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DBUILD_SHARED_LIBS=0 /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DBUILD_SHARED_LIBS=0 /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DBUILD_SHARED_LIBS=0 /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && rm -rf /soft/fftw-* + +# microhttpd +WORKDIR /soft/ +RUN wget -nv https://mirror.tochlab.net/pub/gnu/libmicrohttpd/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && tar -xf /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz -C /soft/ \ + && rm /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && mkdir -p /soft/build/microhttpd && cd /soft/build/microhttpd \ + && sh -c 'CFLAGS="-O3 -fPIC" LDFLAGS="-O3 -fPIC" /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}/configure --prefix=/usr/local/ --enable-shared=no --enable-static=yes && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/build/microhttpd && rm -rf /soft/libmicrohttpd-* + +WORKDIR /soft diff --git a/astra1.8/astra.list b/astra1.8/astra.list new file mode 100644 index 0000000..f9adfc5 --- /dev/null +++ b/astra1.8/astra.list @@ -0,0 +1,2 @@ +deb https://download.astralinux.ru/astra/stable/1.8_x86-64/repository-main/ 1.8_x86-64 main contrib non-free non-free-firmware +deb https://download.astralinux.ru/astra/stable/1.8_x86-64/repository-extended/ 1.8_x86-64 main contrib non-free non-free-firmware diff --git a/astra1.8/inputrc b/astra1.8/inputrc new file mode 100644 index 0000000..230e66b --- /dev/null +++ b/astra1.8/inputrc @@ -0,0 +1,67 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info rluserman' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on + +# To allow the use of 8bit-characters like the german umlauts, uncomment +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +# try to enable the application keypad when it is called. Some systems +# need this to enable the arrow keys. +# set enable-keypad on + +# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys + +# do not bell on tab-completion +# set bell-style none +# set bell-style visible + +# some defaults / modifications for the emacs mode +$if mode=emacs + +# allow the use of the Home/End keys +"\e[1~": beginning-of-line +"\e[4~": end-of-line + +# allow the use of the Delete/Insert keys +"\e[3~": delete-char +"\e[2~": quoted-insert + +# mappings for "page up" and "page down" to step to the beginning/end +# of the history +# "\e[5~": beginning-of-history +# "\e[6~": end-of-history + +# alternate mappings for "page up" and "page down" to search the history +"\e[5~": history-search-backward +"\e[6~": history-search-forward + +# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving +"\e[1;5C": forward-word +"\e[1;5D": backward-word +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +$if term=rxvt +"\e[7~": beginning-of-line +"\e[8~": end-of-line +"\eOc": forward-word +"\eOd": backward-word +$endif + +# for non RH/Debian xterm, can't hurt for RH/Debian xterm +# "\eOH": beginning-of-line +# "\eOF": end-of-line + +# for freebsd console +# "\e[H": beginning-of-line +# "\e[F": end-of-line + +$endif diff --git a/astra1.8/install_apt.sh b/astra1.8/install_apt.sh new file mode 100644 index 0000000..570f12e --- /dev/null +++ b/astra1.8/install_apt.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +apt-get update + +# locales +apt-get install -y locales +localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + +TZ=Europe/Moscow +ln -snf /usr/share/zoneinfo/$TZ /etc/localtime +echo $TZ > /etc/timezone + +# base soft +apt-get install -y \ +"^libxcb.*" \ +bison \ +ccache \ +cpio \ +curl \ +debconf \ +debhelper \ +default-libmysqlclient-dev \ +doxygen \ +dpkg \ +flex \ +g++ \ +git \ +gperf \ +graphviz \ +htop \ +iputils-ping \ +libbz2-dev \ +libffi-dev \ +libfontconfig1-dev \ +libfreetype6-dev \ +libgl1-mesa-dev \ +libglew-dev \ +libglu1-mesa-dev \ +libgmp-dev \ +libicu-dev \ +liblzma-dev \ +libmpc-dev \ +libmpfr-dev \ +libncurses-dev \ +libpkgconfig-perl \ +libpq-dev \ +libreadline-dev \ +libssl-dev \ +libusb-1.0-0-dev \ +libwayland-dev \ +libx11-dev \ +libx11-xcb-dev \ +libxkbcommon-dev \ +libxkbcommon-x11-dev \ +libxml2-dev \ +libxrender-dev \ +lsb-release \ +lzma-dev \ +mc \ +md5deep \ +nano \ +net-tools \ +ninja-build \ +ocl-icd-opencl-dev \ +p7zip-full \ +patchelf \ +python3 \ +python3-click \ +python3-cryptography \ +python3-future \ +python3-pip \ +python3-pyelftools \ +python3-pyparsing \ +python3-serial \ +python3-setuptools \ +screen \ +subversion \ +unzip \ +wget \ +zip \ +zlib1g-dev \ +qtbase5-dev-tools \ +qtconnectivity5-dev \ +qtbase5-dev \ +qttools5-dev \ +qtscript5-dev \ +qtdeclarative5-dev \ +qtpositioning5-dev \ +qtmultimedia5-dev \ +libqt5datavisualization5-dev \ +libqt5networkauth5-dev \ +libqt5opengl5-dev \ +qtscript5-dev \ +libqt5serialport5-dev \ +libqt5serialbus5-dev \ +libqt5sensors5-dev \ +libqt5svg5-dev \ +libqt5websockets5-dev \ +libqt5x11extras5-dev \ +libqt5xmlpatterns5-dev \ +libqt5charts5-dev \ +qtbase5-private-dev \ +qttools5-private-dev \ +cmake \ +libsodium-dev \ +libassimp-dev \ +discount \ +libhdf5-dev \ +libcurl4-openssl-dev \ +libpcsclite-dev + +# cleanup +rm -rf /var/cache/apt/archives/* diff --git a/astra1.8/key.gpg b/astra1.8/key.gpg new file mode 100644 index 0000000..3b3bc41 --- /dev/null +++ b/astra1.8/key.gpg @@ -0,0 +1,76 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=LtGE +-----END PGP PUBLIC KEY BLOCK----- \ No newline at end of file diff --git a/astra1.8/os-release b/astra1.8/os-release new file mode 100644 index 0000000..af41178 --- /dev/null +++ b/astra1.8/os-release @@ -0,0 +1,8 @@ +PRETTY_NAME="Astra Linux" +NAME="Astra Linux" +ID=astra +ID_LIKE=debian +HOME_URL="https://astralinux.ru" +SUPPORT_URL="https://astralinux.ru/support" +VERSION_ID=1.8 +VERSION_CODENAME=1.8_x86-64 diff --git a/debian-base/.bashrc b/debian-base/.bashrc new file mode 100644 index 0000000..400abbd --- /dev/null +++ b/debian-base/.bashrc @@ -0,0 +1,113 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/debian-base/Dockerfile b/debian-base/Dockerfile new file mode 100644 index 0000000..dd50ef1 --- /dev/null +++ b/debian-base/Dockerfile @@ -0,0 +1,24 @@ +FROM debian:trixie-slim + +# locales +RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \ + && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 \ + && rm -rf /var/cache/apt/archives/* +ENV LANG=en_US.utf8 + +# configs +COPY .bashrc /root/.bashrc +COPY inputrc /etc/inputrc + +# base soft +RUN apt-get update && apt-get install -y subversion git zip unzip wget curl htop net-tools iputils-ping mc nano screen g++ patchelf p7zip-full ninja-build \ + && rm -rf /var/cache/apt/archives/* + +# last cmake from sources, into /opt +ENV CUR_CMAKE_VERSION=3.20.0 +WORKDIR /soft +RUN wget -nv https://github.com/Kitware/CMake/releases/download/v${CUR_CMAKE_VERSION}/cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh \ + && mkdir -p /opt/cmake \ + && bash ./cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh --skip-license --prefix=/opt/cmake \ + && rm -rf /soft/cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh +ENV PATH=/opt/cmake/bin:$PATH diff --git a/debian-base/inputrc b/debian-base/inputrc new file mode 100644 index 0000000..230e66b --- /dev/null +++ b/debian-base/inputrc @@ -0,0 +1,67 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info rluserman' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on + +# To allow the use of 8bit-characters like the german umlauts, uncomment +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +# try to enable the application keypad when it is called. Some systems +# need this to enable the arrow keys. +# set enable-keypad on + +# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys + +# do not bell on tab-completion +# set bell-style none +# set bell-style visible + +# some defaults / modifications for the emacs mode +$if mode=emacs + +# allow the use of the Home/End keys +"\e[1~": beginning-of-line +"\e[4~": end-of-line + +# allow the use of the Delete/Insert keys +"\e[3~": delete-char +"\e[2~": quoted-insert + +# mappings for "page up" and "page down" to step to the beginning/end +# of the history +# "\e[5~": beginning-of-history +# "\e[6~": end-of-history + +# alternate mappings for "page up" and "page down" to search the history +"\e[5~": history-search-backward +"\e[6~": history-search-forward + +# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving +"\e[1;5C": forward-word +"\e[1;5D": backward-word +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +$if term=rxvt +"\e[7~": beginning-of-line +"\e[8~": end-of-line +"\eOc": forward-word +"\eOd": backward-word +$endif + +# for non RH/Debian xterm, can't hurt for RH/Debian xterm +# "\eOH": beginning-of-line +# "\eOF": end-of-line + +# for freebsd console +# "\e[H": beginning-of-line +# "\e[F": end-of-line + +$endif diff --git a/debian-native/Dockerfile b/debian-native/Dockerfile new file mode 100644 index 0000000..918cbe7 --- /dev/null +++ b/debian-native/Dockerfile @@ -0,0 +1,7 @@ +ARG DOCKER_PREFIX=wapmobil/ +FROM ${DOCKER_PREFIX}debian-base +RUN apt-get update && apt-get install -y dpkg debconf debhelper md5deep lsb-release libicu-dev libfftw3-dev libsodium-dev libassimp-dev libmarkdown2-dev ocl-icd-opencl-dev zlib1g-dev qtbase5-dev-tools qttools5-dev qtscript5-dev qtdeclarative5-dev qtpositioning5-dev qtmultimedia5-dev libqt5datavisualization5-dev qtbase5-private-dev qttools5-private-dev qt5-default libglew-dev doxygen graphviz liblua5.3-dev libmicrohttpd-dev libcurl4-openssl-dev && rm -rf /var/cache/apt/archives/* + +ENV BUILD_TYPE=Release + +WORKDIR /soft diff --git a/esp32/Dockerfile b/esp32/Dockerfile new file mode 100644 index 0000000..2a3e648 --- /dev/null +++ b/esp32/Dockerfile @@ -0,0 +1,20 @@ +FROM wapmobil/debian-base +WORKDIR /esp +RUN git clone --depth=1 -b release/v4.2 --recursive https://github.com/espressif/esp-idf.git +WORKDIR /esp/esp-idf +ENV IDF_TOOLS_PATH="/esp/espressif" +ENV IDF_PATH="/esp/esp-idf" +#RUN pip install --upgrade virtualenv==16.7.9 && ./install.sh +RUN apt-get update && apt-get install -y python3 python3-pip +RUN ./install.sh +RUN rm -rf /esp/espressif/dist + +COPY miniz.patch /esp/esp-idf/ +RUN patch -p 1 < miniz.patch + +WORKDIR /esp +ENV PATH=/esp/esp-idf/components/esptool_py/esptool:/esp/esp-idf/components/espcoredump:/esp/esp-idf/components/partition_table:/esp/esp-idf/components/app_update:/esp/espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin:/esp/espressif/tools/xtensa-esp32s2-elf/esp-2020r3-8.4.0/xtensa-esp32s2-elf/bin:/esp/espressif/tools/openocd-esp32/v0.10.0-esp32-20200709/openocd-esp32/bin:/esp/espressif/python_env/idf4.2_py2.7_env/bin:/esp/esp-idf/tools:/opt/cmake/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV IDF_PYTHON_ENV_PATH=/esp/espressif/python_env/idf4.2_py2.7_env +ENV OPENOCD_SCRIPTS=/esp/espressif/tools/openocd-esp32/v0.10.0-esp32-20200709/openocd-esp32/share/openocd/scripts +ENV IDF_TOOLS_EXPORT_CMD=/esp/esp-idf/export.sh +ENV IDF_TOOLS_INSTALL_CMD=/esp/esp-idf/install.sh diff --git a/esp32/miniz.patch b/esp32/miniz.patch new file mode 100644 index 0000000..6806881 --- /dev/null +++ b/esp32/miniz.patch @@ -0,0 +1,13 @@ +diff --git a/components/esp_rom/include/esp32/rom/miniz.h b/components/esp_rom/include/esp32/rom/miniz.h +index 773a0d0..96bc80f 100644 +--- a/components/esp_rom/include/esp32/rom/miniz.h ++++ b/components/esp_rom/include/esp32/rom/miniz.h +@@ -21,7 +21,7 @@ + #define MINIZ_NO_ARCHIVE_WRITING_APIS + + // Define MINIZ_NO_ZLIB_APIS to remove all ZLIB-style compression/decompression API's. +-#define MINIZ_NO_ZLIB_APIS ++//#define MINIZ_NO_ZLIB_APIS + + // Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. + #define MINIZ_NO_ZLIB_COMPATIBLE_NAMES diff --git a/images.vsdx b/images.vsdx new file mode 100644 index 0000000..d39dafc Binary files /dev/null and b/images.vsdx differ diff --git a/linux_cross/.bashrc b/linux_cross/.bashrc new file mode 100644 index 0000000..400abbd --- /dev/null +++ b/linux_cross/.bashrc @@ -0,0 +1,113 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/linux_cross/Dockerfile b/linux_cross/Dockerfile new file mode 100644 index 0000000..0a333a6 --- /dev/null +++ b/linux_cross/Dockerfile @@ -0,0 +1,63 @@ +ARG image_from +FROM --platform=linux/amd64 ${image_from} + +ARG JOBS_COUNT=4 +ARG image_prepare_script +ARG arch +ARG toolchain +ARG triplet + +# versions and environment +ENV CUR_CMAKE_VERSION=3.20.0 +ENV CUR_GOOGLETEST=v1.13.x + +ENV QT_SELECT=5 +ENV LANG=en_US.utf8 + + +# configs +COPY .bashrc /root/.bashrc +COPY inputrc /etc/inputrc +RUN echo 'root:12345' | chpasswd + +# prepare current distributive +COPY *.sh /soft/ +RUN if [ -n "${image_prepare_script}" ]; then \ + bash /soft/${image_prepare_script} ${arch} ${toolchain}; \ + fi +RUN rm /soft/*.sh -v + +# toolchain +WORKDIR /soft +COPY toolchain.cmake.in /soft/ +RUN sed -e s/\${PH_ARCH}/$arch/ -e s/\${PH_TRIPLET}/$triplet/ toolchain.cmake.in > toolchain.cmake +RUN rm toolchain.cmake.in +RUN mkdir -p /usr/${triplet}/lib +RUN mkdir -p /soft/target/lib +RUN ln -s /usr/lib/os-release /usr/${triplet}/lib/os-release +RUN ln -s /usr/lib/os-release /soft/target/lib/os-release + + +# last cmake from sources, into /opt +WORKDIR /soft +RUN wget -nv https://github.com/Kitware/CMake/releases/download/v${CUR_CMAKE_VERSION}/cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh \ + && mkdir -p /opt/cmake \ + && bash ./cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh --skip-license --prefix=/opt/cmake \ + && rm -rf /soft/cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh +ENV PATH=/opt/cmake/bin:$PATH + +# Remove invalid FindGtest.cmake +RUN cd "$(find /opt/cmake/share -name FindGTest.cmake -type f -printf '%h' -quit)" && rm FindGTest.cmake + + +# GTest +WORKDIR /soft +RUN git clone -b ${CUR_GOOGLETEST} https://github.com/google/googletest.git \ + && mkdir googletest/build && cd googletest/build \ + && cmake .. \ + && make -j${JOBS_COUNT} && make install && cd /soft && rm -rf googletest + + +ENV BUILD_TYPE=Release + +WORKDIR /soft diff --git a/linux_cross/discount.cmake.patch b/linux_cross/discount.cmake.patch new file mode 100644 index 0000000..15ada61 --- /dev/null +++ b/linux_cross/discount.cmake.patch @@ -0,0 +1,38 @@ +--- CMakeLists.txt 2019-04-15 18:28:20.000000000 +0300 ++++ CMakeLists_new.txt 2020-03-16 10:46:52.288128600 +0300 +@@ -20,6 +20,9 @@ + set(${PROJECT_NAME}_ONLY_LIBRARY OFF CACHE BOOL + "Set to ON to only build markdown library (default is OFF)") + ++set(${PROJECT_NAME}_CXX_BINDING OFF CACHE BOOL ++ "Set to ON to install header files with c++ wrappers (default is OFF)") ++ + # Check headers + include(CheckIncludeFile) + check_include_file(libgen.h HAVE_LIBGEN_H) +@@ -110,6 +113,13 @@ + configure_file("${_ROOT}/mkdio.h.in" + "${_ROOT}/mkdio.h" + @ONLY) ++if(${PROJECT_NAME}_CXX_BINDING) ++ message(STATUS "Applying c++ glue to mkdio.h") ++ file(READ "${_ROOT}/mkdio.h" _ROOT_MKDIO_H) ++ file(WRITE "${_ROOT}/mkdio.h" "#ifdef __cplusplus\nextern \"C\" {\n#endif\n") ++ file(APPEND "${_ROOT}/mkdio.h" "${_ROOT_MKDIO_H}") ++ file(APPEND "${_ROOT}/mkdio.h" "#ifdef __cplusplus\n}\n#endif\n") ++endif() + + include_directories("${_ROOT}") + +@@ -182,7 +192,10 @@ + target_include_directories(libmarkdown INTERFACE + $ + ) +- set(_TARGETS libmarkdown markdown) ++ set(_TARGETS libmarkdown) ++ if(NOT ${PROJECT_NAME}_ONLY_LIBRARY) ++ list(APPEND _TARGETS markdown) ++ endif() + if(${PROJECT_NAME}_INSTALL_SAMPLES) + list(APPEND _TARGETS mkd2html makepage) + endif() diff --git a/linux_cross/inputrc b/linux_cross/inputrc new file mode 100644 index 0000000..230e66b --- /dev/null +++ b/linux_cross/inputrc @@ -0,0 +1,67 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info rluserman' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on + +# To allow the use of 8bit-characters like the german umlauts, uncomment +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +# try to enable the application keypad when it is called. Some systems +# need this to enable the arrow keys. +# set enable-keypad on + +# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys + +# do not bell on tab-completion +# set bell-style none +# set bell-style visible + +# some defaults / modifications for the emacs mode +$if mode=emacs + +# allow the use of the Home/End keys +"\e[1~": beginning-of-line +"\e[4~": end-of-line + +# allow the use of the Delete/Insert keys +"\e[3~": delete-char +"\e[2~": quoted-insert + +# mappings for "page up" and "page down" to step to the beginning/end +# of the history +# "\e[5~": beginning-of-history +# "\e[6~": end-of-history + +# alternate mappings for "page up" and "page down" to search the history +"\e[5~": history-search-backward +"\e[6~": history-search-forward + +# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving +"\e[1;5C": forward-word +"\e[1;5D": backward-word +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +$if term=rxvt +"\e[7~": beginning-of-line +"\e[8~": end-of-line +"\eOc": forward-word +"\eOd": backward-word +$endif + +# for non RH/Debian xterm, can't hurt for RH/Debian xterm +# "\eOH": beginning-of-line +# "\eOF": end-of-line + +# for freebsd console +# "\e[H": beginning-of-line +# "\e[F": end-of-line + +$endif diff --git a/linux_cross/install_apt.sh b/linux_cross/install_apt.sh new file mode 100644 index 0000000..64c1d46 --- /dev/null +++ b/linux_cross/install_apt.sh @@ -0,0 +1,157 @@ +#!/bin/bash + +arch=$1 +toolchain=$2 + +export DEBIAN_FRONTEND=noninteractive + +find "/etc/apt/sources.list.d/" -type f -exec sed -i "s|http://[a-zA-Z0-9_.]\+/|http://mirror.yandex.ru/|g" {} \; + +dpkg --add-architecture $arch +apt-get update + +# locales +apt-get install -y locales apt-utils +localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + +TZ=Europe/Moscow +ln -snf /usr/share/zoneinfo/$TZ /etc/localtime +echo $TZ > /etc/timezone + +# base soft +apt-get install -y \ +"^libxcb.*" \ +bison \ +ccache \ +cpio \ +curl \ +debconf \ +debhelper \ +default-libmysqlclient-dev \ +doxygen \ +dpkg \ +flex \ +g++ \ +git \ +gperf \ +graphviz \ +htop \ +iputils-ping \ +libbz2-dev \ +libffi-dev \ +libfontconfig1-dev \ +libfreetype6-dev \ +libgl1-mesa-dev \ +libglew-dev \ +libglu1-mesa-dev \ +libgmp-dev \ +libicu-dev \ +liblzma-dev \ +libmpc-dev \ +libmpfr-dev \ +libncurses-dev \ +libpkgconfig-perl \ +libpq-dev \ +libreadline-dev \ +libssl-dev \ +libusb-1.0-0-dev \ +libwayland-dev \ +libx11-dev \ +libx11-xcb-dev \ +libxkbcommon-dev \ +libxkbcommon-x11-dev \ +libxml2-dev \ +libxrender-dev \ +lsb-release \ +mc \ +md5deep \ +nano \ +net-tools \ +ninja-build \ +ocl-icd-opencl-dev \ +p7zip-full \ +patchelf \ +python3 \ +screen \ +subversion \ +unzip \ +wget \ +zip \ +zlib1g-dev \ + + +apt-get install -y \ +qtmultimedia5-dev:$arch \ +qtbase5-private-dev:$arch \ +qttools5-private-dev:$arch \ +qtbase5-dev-tools \ + + +apt-get install -y \ +$toolchain \ +libbz2-dev:$arch \ +libffi-dev:$arch \ +libfontconfig1-dev:$arch \ +libfreetype6-dev:$arch \ +libfftw3-dev:$arch \ +libgl1-mesa-dev:$arch \ +libglew-dev:$arch \ +libglu1-mesa-dev:$arch \ +libgmp-dev:$arch \ +libicu-dev:$arch \ +liblzma-dev:$arch \ +libmpc-dev:$arch \ +libmpfr-dev:$arch \ +libncurses-dev:$arch \ +libpq-dev:$arch \ +libreadline-dev:$arch \ +libssl-dev:$arch \ +libusb-1.0-0-dev:$arch \ +libwayland-dev:$arch \ +libx11-dev:$arch \ +libx11-xcb-dev:$arch \ +libxkbcommon-dev:$arch \ +libxkbcommon-x11-dev:$arch \ +libxml2-dev:$arch \ +libxrender-dev:$arch \ +ocl-icd-opencl-dev:$arch \ +libsodium-dev:$arch \ +libassimp-dev:$arch \ +libmicrohttpd-dev:$arch \ +libhdf5-dev:$arch \ +libcurl4-openssl-dev:$arch \ +libpcsclite-dev:$arch \ +qtconnectivity5-dev:$arch \ +qtbase5-dev:$arch \ +qttools5-dev:$arch \ +qtscript5-dev:$arch \ +qtdeclarative5-dev:$arch \ +qtpositioning5-dev:$arch \ +libqt5datavisualization5-dev:$arch \ +libqt5networkauth5-dev:$arch \ +libqt5opengl5-dev:$arch \ +qtscript5-dev:$arch \ +libqt5serialport5-dev:$arch \ +libqt5serialbus5-dev:$arch \ +libqt5sensors5-dev:$arch \ +libqt5svg5-dev:$arch \ +libqt5websockets5-dev:$arch \ +libqt5x11extras5-dev:$arch \ +libqt5xmlpatterns5-dev:$arch \ +libqt5charts5-dev:$arch \ + + +apt-get install -y lzma-dev || true +apt-get install -y python3-future || true +apt-get install -y python3-click || true +apt-get install -y python3-cryptography || true +apt-get install -y python3-pip || true +apt-get install -y python3-pyelftools || true +apt-get install -y python3-pyparsing || true +apt-get install -y python3-serial || true +apt-get install -y python3-setuptools || true + +apt-get install -y libopencv-dev:$arch + +# cleanup +rm -rf /var/cache/apt/archives/* diff --git a/linux_cross/install_apt_ubuntu_24.04_arm64.sh b/linux_cross/install_apt_ubuntu_24.04_arm64.sh new file mode 100644 index 0000000..b8c0b5c --- /dev/null +++ b/linux_cross/install_apt_ubuntu_24.04_arm64.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +arch=$1 +toolchain=$2 + +cp -vf /soft/ubuntu.sources.24.04.arm64.sh /etc/apt/sources.list.d/ubuntu.sources + +bash /soft/install_apt.sh $arch $toolchain diff --git a/linux_cross/toolchain.cmake.in b/linux_cross/toolchain.cmake.in new file mode 100644 index 0000000..0346a64 --- /dev/null +++ b/linux_cross/toolchain.cmake.in @@ -0,0 +1,22 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR "${PH_ARCH}") +set(TRIPLET "${PH_TRIPLET}") + +set(TOOL_PREFIX "/usr/bin/${TRIPLET}") +set(CMAKE_LIBRARY_ARCHITECTURE "${TRIPLET}") +set(CMAKE_C_COMPILER "${TOOL_PREFIX}-gcc") +set(CMAKE_CXX_COMPILER "${TOOL_PREFIX}-g++") +set(CMAKE_RANLIB "${TOOL_PREFIX}-ranlib" CACHE FILEPATH "ranlib") +set(CMAKE_AR "${TOOL_PREFIX}-ar" CACHE FILEPATH "ar") +set(CMAKE_READELF "${TOOL_PREFIX}-readelf" CACHE FILEPATH "readelf") + +list(APPEND CMAKE_PREFIX_PATH "/soft/target") +set(CMAKE_FIND_ROOT_PATH "/usr/${TRIPLET}") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY FIRST) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE FIRST) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE FIRST) +set(PIP_BINDIR "/usr/local/bin") +set(PIP_DEPLOY_LIBDIR "/usr/lib/${TRIPLET}") +#include_directories("${CMAKE_PREFIX_PATH}/include" "${CMAKE_PREFIX_PATH}/include/${TRIPLET}") +cmake_policy(SET CMP0025 NEW) \ No newline at end of file diff --git a/linux_cross/ubuntu.sources.24.04.arm64.sh b/linux_cross/ubuntu.sources.24.04.arm64.sh new file mode 100644 index 0000000..46ad1af --- /dev/null +++ b/linux_cross/ubuntu.sources.24.04.arm64.sh @@ -0,0 +1,33 @@ +## See the sources.list(5) manual page for further settings. +Types: deb +URIs: http://mirror.yandex.ru/ubuntu/ +Suites: noble noble-updates noble-backports +Components: main universe restricted multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: amd64 + +## Ubuntu security updates. Aside from URIs and Suites, +## this should mirror your choices in the previous section. +Types: deb +URIs: http://mirror.yandex.ru/ubuntu/ +Suites: noble-security +Components: main universe restricted multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: amd64 + +## See the sources.list(5) manual page for further settings. +Types: deb +URIs: http://mirror.yandex.ru/ubuntu-ports/ +Suites: noble noble-updates noble-backports +Components: main universe restricted multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: arm64 + +## Ubuntu security updates. Aside from URIs and Suites, +## this should mirror your choices in the previous section. +Types: deb +URIs: http://mirror.yandex.ru/ubuntu-ports/ +Suites: noble-security +Components: main universe restricted multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +Architectures: arm64 diff --git a/linux_desktop/.bashrc b/linux_desktop/.bashrc new file mode 100644 index 0000000..400abbd --- /dev/null +++ b/linux_desktop/.bashrc @@ -0,0 +1,113 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/linux_desktop/Dockerfile b/linux_desktop/Dockerfile new file mode 100644 index 0000000..08b6737 --- /dev/null +++ b/linux_desktop/Dockerfile @@ -0,0 +1,140 @@ +ARG image_from +FROM ${image_from} + +ARG image_prepare_script +ARG JOBS_COUNT=4 +ARG JOBS_QT_COUNT=2 +ARG QT_FROM_SOURCE=1 +ARG VERSION_ID= + +# versions and environment +ENV CUR_CMAKE_VERSION=3.20.0 +ENV CUR_SODIUM_VERSION=1.0.21 +ENV CUR_FFTW_VERSION=3.3.10 +ENV CUR_ASSIMP_VERSION=4.1.0 +ENV CUR_DISCOUNT_VERSION=2.2.6 +ENV CUR_MICROHTTPD_VERSION=1.0.2 +ENV CUR_QT_VERSION_MAJOR=5.15 +ENV CUR_QT_VERSION=5.15.9 +ENV CUR_GOOGLETEST=v1.13.x + +ENV QT_SELECT=5 +ENV LANG=en_US.utf8 + + +# configs +COPY .bashrc /root/.bashrc +COPY inputrc /etc/inputrc +RUN echo 'root:12345' | chpasswd + +# prepare current distributive +COPY *.sh /soft/ +RUN if [ -n "${VERSION_ID}" ]; then \ + echo "VERSION_ID=\"${VERSION_ID}\"" >> /usr/lib/os-release; \ + fi +RUN if [ -n "${image_prepare_script}" ]; then \ + bash /soft/${image_prepare_script} ${QT_FROM_SOURCE}; \ + fi +RUN rm /soft/*.sh -v + + +# last cmake from sources, into /opt +WORKDIR /soft +RUN wget -nv https://github.com/Kitware/CMake/releases/download/v${CUR_CMAKE_VERSION}/cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh \ + && mkdir -p /opt/cmake \ + && bash ./cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh --skip-license --prefix=/opt/cmake \ + && rm -rf /soft/cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh +ENV PATH=/opt/cmake/bin:$PATH + +# Remove invalid FindGtest.cmake +RUN cd "$(find /opt/cmake/share -name FindGTest.cmake -type f -printf '%h' -quit)" && rm FindGTest.cmake + + +# GTest +WORKDIR /soft +RUN git clone -b ${CUR_GOOGLETEST} https://github.com/google/googletest.git \ + && mkdir googletest/build && cd googletest/build \ + && cmake .. \ + && make -j${JOBS_COUNT} && make install && cd /soft && rm -rf googletest + + +# sodium +WORKDIR /soft +RUN curl -s https://download.libsodium.org/libsodium/releases/libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + -o libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && tar -xf libsodium-${CUR_SODIUM_VERSION}.tar.gz -C /soft \ + && rm -f libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && mkdir -p /soft/build/sodium && cd /soft/build/sodium \ + && sh -c 'CFLAGS="-O3 -fPIC" LDFLAGS="-O3 -fPIC" /soft/libsodium-*/configure --prefix=/usr/local/ && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/build/sodium && rm -rf /soft/libsodium-* + + +# fftw3 +WORKDIR /soft +RUN wget -nv http://www.fftw.org/fftw-${CUR_FFTW_VERSION}.tar.gz \ + && tar -xf fftw-${CUR_FFTW_VERSION}.tar.gz -C /soft \ + && rm -f fftw-${CUR_FFTW_VERSION}.tar.gz \ + && mkdir -p /soft/build/fftw3 && cd /soft/build/fftw3 \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && rm -rf /soft/fftw-* + + +# assimp +WORKDIR /soft +RUN wget -nv https://github.com/assimp/assimp/archive/v${CUR_ASSIMP_VERSION}.tar.gz \ + && tar -xf v${CUR_ASSIMP_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_ASSIMP_VERSION}.tar.gz pax_global_header \ + && mkdir -p /soft/build/assimp && cd /soft/build/assimp \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DASSIMP_BUILD_ASSIMP_TOOLS=0 -DASSIMP_BUILD_TESTS=0 -DBUILD_FRAMEWORK=0 /soft/assimp-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* && rm -rf /soft/assimp-* + + +# markdown +WORKDIR /soft +RUN wget -nv https://github.com/Orc/discount/archive/v${CUR_DISCOUNT_VERSION}.tar.gz \ + && tar -xf v${CUR_DISCOUNT_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_DISCOUNT_VERSION}.tar.gz +RUN sed -i 's/DESTRUCTOR/ /' /soft/discount-${CUR_DISCOUNT_VERSION}/setup.c +WORKDIR /soft/discount-${CUR_DISCOUNT_VERSION}/cmake +COPY discount.cmake.patch /soft/discount-${CUR_DISCOUNT_VERSION}/cmake/cmake.patch +RUN patch < cmake.patch +WORKDIR /soft/linux/build/discount +RUN cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-${CUR_DISCOUNT_VERSION}/cmake && make -j2 && mv mktags .. && rm -rf ./* \ +&& mkdir -p /soft/build/discount && mv /soft/linux/build/mktags /soft/build/discount/mktags +WORKDIR /soft/build/discount +RUN cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-*/cmake \ +&& make install -j${JOBS_COUNT} && rm -rf ./* && rm -rf /soft/discount-* + + +# microhttpd +WORKDIR /soft/ +RUN wget -nv https://mirror.tochlab.net/pub/gnu/libmicrohttpd/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && tar -xf /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz -C /soft/ \ + && rm /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && mkdir -p /soft/build/microhttpd && cd /soft/build/microhttpd \ + && sh -c 'CFLAGS="-O3 -fPIC" LDFLAGS="-O3 -fPIC" /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}/configure --prefix=/usr/local/ --enable-shared=no --enable-static=yes && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/build/microhttpd && rm -rf /soft/libmicrohttpd-* + + +# Qt +WORKDIR /soft +RUN if [ "${QT_FROM_SOURCE}" = "1" ]; then \ + wget -nv http://qt-mirror.dannhauer.de/archive/qt/${CUR_QT_VERSION_MAJOR}/${CUR_QT_VERSION}/single/qt-everywhere-opensource-src-${CUR_QT_VERSION}.tar.xz \ + && tar xf qt-everywhere-opensource-src-${CUR_QT_VERSION}.tar.xz -C /soft \ + && rm -f qt-everywhere-opensource-src-${CUR_QT_VERSION}.tar.xz \ + && mkdir -p /soft/build/qt && cd /soft/build/qt \ + && /soft/qt-everywhere-src-${CUR_QT_VERSION}/configure -opensource -confirm-license -release -shared -no-pch -extprefix "/usr/local" \ + -opengl desktop -qt-libpng -system-zlib -qt-pcre -make tools -nomake tests -nomake examples -no-compile-examples -skip qtwebengine \ + -skip qtwebglplugin -skip doc -skip qt3d -skip qtactiveqt -skip qtquick3d -openssl-linked -xcb \ + && make -j${JOBS_QT_COUNT} && make install && rm -rf ./* && rm -rf /soft/qt-everywhere-src-*; \ + fi + + +ENV BUILD_TYPE=Release + +WORKDIR /soft diff --git a/linux_desktop/discount.cmake.patch b/linux_desktop/discount.cmake.patch new file mode 100644 index 0000000..15ada61 --- /dev/null +++ b/linux_desktop/discount.cmake.patch @@ -0,0 +1,38 @@ +--- CMakeLists.txt 2019-04-15 18:28:20.000000000 +0300 ++++ CMakeLists_new.txt 2020-03-16 10:46:52.288128600 +0300 +@@ -20,6 +20,9 @@ + set(${PROJECT_NAME}_ONLY_LIBRARY OFF CACHE BOOL + "Set to ON to only build markdown library (default is OFF)") + ++set(${PROJECT_NAME}_CXX_BINDING OFF CACHE BOOL ++ "Set to ON to install header files with c++ wrappers (default is OFF)") ++ + # Check headers + include(CheckIncludeFile) + check_include_file(libgen.h HAVE_LIBGEN_H) +@@ -110,6 +113,13 @@ + configure_file("${_ROOT}/mkdio.h.in" + "${_ROOT}/mkdio.h" + @ONLY) ++if(${PROJECT_NAME}_CXX_BINDING) ++ message(STATUS "Applying c++ glue to mkdio.h") ++ file(READ "${_ROOT}/mkdio.h" _ROOT_MKDIO_H) ++ file(WRITE "${_ROOT}/mkdio.h" "#ifdef __cplusplus\nextern \"C\" {\n#endif\n") ++ file(APPEND "${_ROOT}/mkdio.h" "${_ROOT_MKDIO_H}") ++ file(APPEND "${_ROOT}/mkdio.h" "#ifdef __cplusplus\n}\n#endif\n") ++endif() + + include_directories("${_ROOT}") + +@@ -182,7 +192,10 @@ + target_include_directories(libmarkdown INTERFACE + $ + ) +- set(_TARGETS libmarkdown markdown) ++ set(_TARGETS libmarkdown) ++ if(NOT ${PROJECT_NAME}_ONLY_LIBRARY) ++ list(APPEND _TARGETS markdown) ++ endif() + if(${PROJECT_NAME}_INSTALL_SAMPLES) + list(APPEND _TARGETS mkd2html makepage) + endif() diff --git a/linux_desktop/inputrc b/linux_desktop/inputrc new file mode 100644 index 0000000..230e66b --- /dev/null +++ b/linux_desktop/inputrc @@ -0,0 +1,67 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info rluserman' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on + +# To allow the use of 8bit-characters like the german umlauts, uncomment +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +# try to enable the application keypad when it is called. Some systems +# need this to enable the arrow keys. +# set enable-keypad on + +# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys + +# do not bell on tab-completion +# set bell-style none +# set bell-style visible + +# some defaults / modifications for the emacs mode +$if mode=emacs + +# allow the use of the Home/End keys +"\e[1~": beginning-of-line +"\e[4~": end-of-line + +# allow the use of the Delete/Insert keys +"\e[3~": delete-char +"\e[2~": quoted-insert + +# mappings for "page up" and "page down" to step to the beginning/end +# of the history +# "\e[5~": beginning-of-history +# "\e[6~": end-of-history + +# alternate mappings for "page up" and "page down" to search the history +"\e[5~": history-search-backward +"\e[6~": history-search-forward + +# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving +"\e[1;5C": forward-word +"\e[1;5D": backward-word +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +$if term=rxvt +"\e[7~": beginning-of-line +"\e[8~": end-of-line +"\eOc": forward-word +"\eOd": backward-word +$endif + +# for non RH/Debian xterm, can't hurt for RH/Debian xterm +# "\eOH": beginning-of-line +# "\eOF": end-of-line + +# for freebsd console +# "\e[H": beginning-of-line +# "\e[F": end-of-line + +$endif diff --git a/linux_desktop/install_apt.sh b/linux_desktop/install_apt.sh new file mode 100644 index 0000000..9f0b767 --- /dev/null +++ b/linux_desktop/install_apt.sh @@ -0,0 +1,120 @@ +#!/bin/bash + +export DEBIAN_FRONTEND=noninteractive + +find "/etc/apt/sources.list.d/" -type f -exec sed -i "s|http://[a-zA-Z0-9_.]\+/|http://mirror.yandex.ru/|g" {} \; + +apt-get update + +# locales +apt-get install -y locales +localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + +TZ=Europe/Moscow +ln -snf /usr/share/zoneinfo/$TZ /etc/localtime +echo $TZ > /etc/timezone + +# base soft +apt-get install -y \ +"^libxcb.*" \ +bison \ +ccache \ +cpio \ +curl \ +debconf \ +debhelper \ +default-libmysqlclient-dev \ +doxygen \ +dpkg \ +flex \ +g++ \ +git \ +gperf \ +graphviz \ +htop \ +iputils-ping \ +libbz2-dev \ +libffi-dev \ +libfontconfig1-dev \ +libfreetype6-dev \ +libgl1-mesa-dev \ +libglew-dev \ +libglu1-mesa-dev \ +libgmp-dev \ +libicu-dev \ +libmpc-dev \ +libmpfr-dev \ +libncurses-dev \ +libpkgconfig-perl \ +libpq-dev \ +libreadline-dev \ +libssl-dev \ +libusb-1.0-0-dev \ +libwayland-dev \ +libx11-dev \ +libx11-xcb-dev \ +libxkbcommon-dev \ +libxkbcommon-x11-dev \ +libxml2-dev \ +libxrender-dev \ +lsb-release \ +mc \ +md5deep \ +nano \ +net-tools \ +ninja-build \ +ocl-icd-opencl-dev \ +p7zip-full \ +patchelf \ +python3 \ +screen \ +subversion \ +unzip \ +wget \ +zip \ +zlib1g-dev \ +libhdf5-dev \ +libcurl4-openssl-dev \ +libpcsclite-dev + +# install qt if not build it from source +if [[ -n "$1" && "$1" != "1" ]]; then + apt-get install -y \ + qtbase5-dev-tools \ + qtbase5-dev \ + qttools5-dev \ + qtscript5-dev \ + qtdeclarative5-dev \ + qtpositioning5-dev \ + qtmultimedia5-dev \ + libqt5datavisualization5-dev \ + libqt5networkauth5-dev \ + libqt5opengl5-dev \ + qtscript5-dev \ + libqt5serialport5-dev \ + libqt5sensors5-dev \ + libqt5svg5-dev \ + libqt5websockets5-dev \ + libqt5x11extras5-dev \ + libqt5xmlpatterns5-dev \ + libqt5charts5-dev \ + qtbase5-private-dev \ + qttools5-private-dev +fi + +apt-get install -y qtconnectivity5-dev || true +apt-get install -y libqt5serialbus5-dev || true +apt-get install -y lzma-dev || true +apt-get install -y python3-future || true +apt-get install -y python3-click || true +apt-get install -y python3-cryptography || true +apt-get install -y python3-pip || true +apt-get install -y python3-pyelftools || true +apt-get install -y python3-pyparsing || true +apt-get install -y python3-serial || true +apt-get install -y python3-setuptools || true + +apt-get install -y libopencv-dev + +# cleanup +rm -rf /var/cache/apt/archives/* diff --git a/linux_desktop/install_apt_qt6.sh b/linux_desktop/install_apt_qt6.sh new file mode 100644 index 0000000..f213dbe --- /dev/null +++ b/linux_desktop/install_apt_qt6.sh @@ -0,0 +1,106 @@ +#!/bin/bash + +export DEBIAN_FRONTEND=noninteractive + +find "/etc/apt/sources.list.d/" -type f -exec sed -i "s|http://[a-zA-Z0-9_.]\+/|http://mirror.yandex.ru/|g" {} \; + +apt-get update + +# locales +apt-get install -y locales +localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + +TZ=Europe/Moscow +ln -snf /usr/share/zoneinfo/$TZ /etc/localtime +echo $TZ > /etc/timezone + +# base soft +apt-get install -y \ +"^libxcb.*" \ +bison \ +ccache \ +cpio \ +curl \ +debconf \ +debhelper \ +default-libmysqlclient-dev \ +doxygen \ +dpkg \ +flex \ +g++ \ +git \ +gperf \ +graphviz \ +htop \ +iputils-ping \ +libbz2-dev \ +libffi-dev \ +libfontconfig1-dev \ +libfreetype6-dev \ +libgl1-mesa-dev \ +libglew-dev \ +libglu1-mesa-dev \ +libgmp-dev \ +libicu-dev \ +libmpc-dev \ +libmpfr-dev \ +libncurses-dev \ +libpkgconfig-perl \ +libpq-dev \ +libreadline-dev \ +libssl-dev \ +libusb-1.0-0-dev \ +libwayland-dev \ +libx11-dev \ +libx11-xcb-dev \ +libxkbcommon-dev \ +libxkbcommon-x11-dev \ +libxml2-dev \ +libxrender-dev \ +lsb-release \ +mc \ +md5deep \ +nano \ +net-tools \ +ninja-build \ +ocl-icd-opencl-dev \ +p7zip-full \ +patchelf \ +python3 \ +screen \ +subversion \ +unzip \ +wget \ +zip \ +zlib1g-dev \ +libhdf5-dev \ +libcurl4-openssl-dev \ +libpcsclite-dev + +# install qt if not build it from source +if [[ -n "$1" && "$1" != "1" ]]; then + apt-get install -y \ + qt6-tools-dev \ + qt6-tools-private-dev \ + qt6-declarative-dev \ + qt6-positioning-dev \ + qt6-datavisualization-dev \ + qt6-serialport-dev \ + qt6-serialbus-dev \ + qt6-charts-dev +fi + +apt-get install -y lzma-dev || true +apt-get install -y python3-future || true +apt-get install -y python3-click || true +apt-get install -y python3-cryptography || true +apt-get install -y python3-pip || true +apt-get install -y python3-pyelftools || true +apt-get install -y python3-pyparsing || true +apt-get install -y python3-serial || true +apt-get install -y python3-setuptools || true + +apt-get install -y libopencv-dev + +# cleanup +rm -rf /var/cache/apt/archives/* diff --git a/osx/Dockerfile b/osx/Dockerfile new file mode 100644 index 0000000..5715f0a --- /dev/null +++ b/osx/Dockerfile @@ -0,0 +1,113 @@ +ARG DOCKER_PREFIX=wapmobil/ +FROM ${DOCKER_PREFIX}osxcross +ARG JOBS_COUNT=4 +ARG JOBS_QT_COUNT=2 + +COPY toolchain-Darwin.cmake /soft/ + +ENV CUR_SODIUM_VERSION=1.0.21 +ENV CUR_FFTW_VERSION=3.3.8 +ENV CUR_ASSIMP_VERSION=4.1.0 +ENV CUR_DISCOUNT_VERSION=2.2.6 +ENV CUR_MICROHTTPD_VERSION=0.9.72 +ENV CUR_QT_VERSION_MAJOR=5.15 +ENV CUR_QT_VERSION=5.15.9 +ENV QT_SELECT=5 +ENV _DARWIN=apple-darwin18 +ENV CROSS_COMPILE=x86_64-${_DARWIN}- + +# sodium +WORKDIR /soft +RUN curl -s https://download.libsodium.org/libsodium/releases/libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + -o libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && tar -xf libsodium-${CUR_SODIUM_VERSION}.tar.gz -C /soft \ + && rm -f libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && mkdir -p /soft/osx/build/sodium && cd /soft/osx/build/sodium \ + && sh -c 'CFLAGS="-arch x86_64 -mmacosx-version-min=10.8 -march=core2 -O3" LDFLAGS="-arch x86_64 -mmacosx-version-min=10.8 -march=core2" LD=${CROSS_COMPILE}ld CC=${CROSS_COMPILE}clang CXX=${CROSS_COMPILE}clang++ /soft/libsodium-${CUR_SODIUM_VERSION}/configure --host=x86_64-${_DARWIN} --prefix=/soft/osx/ && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/osx/build/sodium && rm -rf /soft/libsodium-* \ + && /soft/osxcross/target/bin/x86_64-${_DARWIN}-install_name_tool -id @rpath/libsodium.23.dylib /soft/osx/lib/libsodium.23.dylib + + +# fftw3 +WORKDIR /soft +RUN wget -nv http://www.fftw.org/fftw-${CUR_FFTW_VERSION}.tar.gz \ + && tar -xf fftw-${CUR_FFTW_VERSION}.tar.gz -C /soft \ + && rm -f fftw-${CUR_FFTW_VERSION}.tar.gz \ + && mkdir -p /soft/osx/build/fftw3 && cd /soft/osx/build/fftw3 \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/osx -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/osx -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/osx -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && rm -rf /soft/fftw-* +RUN /soft/osxcross/target/bin/x86_64-${_DARWIN}-install_name_tool -id @rpath/libfftw3.dylib /soft/osx/lib/libfftw3.dylib +RUN /soft/osxcross/target/bin/x86_64-${_DARWIN}-install_name_tool -id @rpath/libfftw3f.dylib /soft/osx/lib/libfftw3f.dylib +RUN /soft/osxcross/target/bin/x86_64-${_DARWIN}-install_name_tool -id @rpath/libfftw3l.dylib /soft/osx/lib/libfftw3l.dylib + + +# assimp +WORKDIR /soft +RUN wget -nv https://github.com/assimp/assimp/archive/v${CUR_ASSIMP_VERSION}.tar.gz \ + && tar -xf v${CUR_ASSIMP_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_ASSIMP_VERSION}.tar.gz pax_global_header \ + && mkdir -p /soft/osx/build/assimp && cd /soft/osx/build/assimp \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/osx -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DASSIMP_BUILD_ASSIMP_TOOLS=0 -DASSIMP_BUILD_TESTS=0 -DBUILD_FRAMEWORK=0 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/assimp-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* && rm -rf /soft/assimp-* +RUN /soft/osxcross/target/bin/x86_64-${_DARWIN}-install_name_tool -id @rpath/libassimp.4.dylib /soft/osx/lib/libassimp.4.dylib + + +# markdown +WORKDIR /soft +RUN wget -nv https://github.com/Orc/discount/archive/v${CUR_DISCOUNT_VERSION}.tar.gz \ + && tar -xf v${CUR_DISCOUNT_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_DISCOUNT_VERSION}.tar.gz +RUN sed -i 's/DESTRUCTOR/ /' /soft/discount-${CUR_DISCOUNT_VERSION}/setup.c +WORKDIR /soft/discount-${CUR_DISCOUNT_VERSION}/cmake +COPY discount.cmake.patch /soft/discount-${CUR_DISCOUNT_VERSION}/cmake/cmake.patch +RUN patch < cmake.patch +WORKDIR /soft/linux/build/discount +RUN cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-${CUR_DISCOUNT_VERSION}/cmake && make -j2 && mv mktags .. && rm -rf ./* \ +&& mkdir -p /soft/osx/build/discount && mv /soft/linux/build/mktags /soft/osx/build/discount/mktags +WORKDIR /soft/osx/build/discount +RUN cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/soft/osx -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-*/cmake \ + && make install -j${JOBS_COUNT} && rm -rf ./* && rm -rf /soft/discount-* + + +# microhttpd +WORKDIR /soft/ +RUN wget -nv https://mirror.tochlab.net/pub/gnu/libmicrohttpd/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && tar -xf /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz -C /soft/ \ + && rm /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && mkdir -p /soft/osx/build/microhttpd && cd /soft/osx/build/microhttpd \ + && sh -c 'CFLAGS="-arch x86_64 -mmacosx-version-min=10.8 -march=core2 -O3" LDFLAGS="-arch x86_64 -mmacosx-version-min=10.8 -march=core2" LD=${CROSS_COMPILE}ld CC=${CROSS_COMPILE}clang CXX=${CROSS_COMPILE}clang++ /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}/configure --host=x86_64-${_DARWIN} --prefix=/soft/osx/ --enable-shared=no --enable-static=yes && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/osx/build/microhttpd && rm -rf /soft/libmicrohttpd-* + + +# Qt +ENV SYSROOT=/soft/osxcross/target/SDK/MacOSX10.14.sdk +ENV CROSS_COMPILE=/soft/osxcross/target/bin/x86_64-${_DARWIN}- +WORKDIR /soft +RUN wget -nv http://qt-mirror.dannhauer.de/archive/qt/${CUR_QT_VERSION_MAJOR}/${CUR_QT_VERSION}/single/qt-everywhere-opensource-src-${CUR_QT_VERSION}.tar.xz \ + && tar -xf qt-everywhere-opensource-src-${CUR_QT_VERSION}.tar.xz -C /soft \ + && rm -f qt-everywhere-opensource-src-${CUR_QT_VERSION}.tar.xz \ + && mkdir -p /soft/osx/build/qt && cd /soft/osx/build/qt \ + && sh -c 'echo "#!/bin/sh" > /usr/bin/xcode-select' \ + && sh -c 'echo "echo ${SYSROOT}" >> /usr/bin/xcode-select' \ + && chmod +x /usr/bin/xcode-select \ + && sh -c 'echo "#!/bin/sh" > /usr/bin/xcrun' \ + && sh -c 'echo "/soft/osxcross/target/bin/xcrun \"\$@\" 2>/dev/null" >> /usr/bin/xcrun' \ + && chmod +x /usr/bin/xcrun \ + && sed -i 's/license/version/' /soft/qt-everywhere-src-${CUR_QT_VERSION}/qtbase/mkspecs/features/mac/default_pre.prf \ + && /soft/qt-everywhere-src-${CUR_QT_VERSION}/configure -opensource -confirm-license -release -shared -no-pch -xplatform macx-clang -extprefix "/soft/osx" \ + -sysroot ${SYSROOT} -gcc-sysroot -sdk macosx -device-option CROSS_COMPILE=${CROSS_COMPILE} \ + -qt-libpng -system-zlib -qt-pcre \ + -make tools -nomake tests -nomake examples -no-compile-examples \ + -skip qtwebengine -skip qtwebglplugin -skip doc -skip qt3d \ + && make -j${JOBS_QT_COUNT} && make install && rm -rf ./* && rm -rf /soft/qt-everywhere-src-* + + +ENV BUILD_TYPE=Release + +WORKDIR /soft + diff --git a/osx/Dockerfile_arm.txt b/osx/Dockerfile_arm.txt new file mode 100644 index 0000000..c1b4403 --- /dev/null +++ b/osx/Dockerfile_arm.txt @@ -0,0 +1,214 @@ +ARG DOCKER_PREFIX=wapmobil/ +FROM ${DOCKER_PREFIX}osxcross +ARG JOBS_COUNT=4 +ARG JOBS_QT_COUNT=2 + +COPY toolchain-Darwin.cmake /soft/ + +ENV CUR_SODIUM_VERSION=1.0.18 +ENV CUR_FFTW_VERSION=3.3.8 +ENV CUR_ASSIMP_VERSION=4.1.0 +ENV CUR_DISCOUNT_VERSION=2.2.6 +ENV CUR_MICROHTTPD_VERSION=0.9.72 +ENV CUR_QT_VERSION_MAJOR=5.15 +ENV CUR_QT_VERSION=5.15.2 +ENV QT_SELECT=5 +ENV _DARWIN=apple-darwin20.4 + + + + +ENV ARCH=x86_64 +ENV CROSS_COMPILE=${ARCH}-${_DARWIN}- + +# sodium +WORKDIR /soft +RUN curl -s https://download.libsodium.org/libsodium/releases/libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + -o libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && tar -xf libsodium-${CUR_SODIUM_VERSION}.tar.gz -C /soft \ + && rm -f libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && mkdir -p /soft/osx/build/sodium && cd /soft/osx/build/sodium \ + && sh -c 'CFLAGS="-arch ${ARCH} -mmacosx-version-min=10.8 -march=core2 -O3" LDFLAGS="-arch ${ARCH} -mmacosx-version-min=10.8 -march=core2" LD=${CROSS_COMPILE}ld CC=${CROSS_COMPILE}clang CXX=${CROSS_COMPILE}clang++ /soft/libsodium-${CUR_SODIUM_VERSION}/configure --host=${ARCH}-${_DARWIN} --prefix=/soft/osx/${ARCH}/ && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/osx/build/sodium && rm -rf /soft/libsodium-* \ + && /soft/osxcross/target/bin/${ARCH}-${_DARWIN}-install_name_tool -id @rpath/libsodium.23.dylib /soft/osx/${ARCH}/lib/libsodium.23.dylib + + +ENV ARCH=aarch64 +ENV CROSS_COMPILE=${ARCH}-${_DARWIN}- + +# sodium +WORKDIR /soft +RUN curl -s https://download.libsodium.org/libsodium/releases/libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + -o libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && tar -xf libsodium-${CUR_SODIUM_VERSION}.tar.gz -C /soft \ + && rm -f libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && mkdir -p /soft/osx/build/sodium && cd /soft/osx/build/sodium \ + && sh -c 'CFLAGS="-arch arm64 -mmacosx-version-min=10.8 -O3" LDFLAGS="-arch arm64 -mmacosx-version-min=10.8" LD=${CROSS_COMPILE}ld CC=${CROSS_COMPILE}clang CXX=${CROSS_COMPILE}clang++ /soft/libsodium-${CUR_SODIUM_VERSION}/configure --host=${ARCH}-${_DARWIN} --prefix=/soft/osx/${ARCH}/ && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/osx/build/sodium && rm -rf /soft/libsodium-* \ + && /soft/osxcross/target/bin/${ARCH}-${_DARWIN}-install_name_tool -id @rpath/libsodium.23.dylib /soft/osx/${ARCH}/lib/libsodium.23.dylib + + + + +ENV ARCH=x86_64 +ENV CROSS_COMPILE=${ARCH}-${_DARWIN}- + +# fftw3 +WORKDIR /soft +RUN wget -nv http://www.fftw.org/fftw-${CUR_FFTW_VERSION}.tar.gz \ + && tar -xf fftw-${CUR_FFTW_VERSION}.tar.gz -C /soft \ + && rm -f fftw-${CUR_FFTW_VERSION}.tar.gz \ + && mkdir -p /soft/osx/build/fftw3 && cd /soft/osx/build/fftw3 \ + && cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_INSTALL_PREFIX=/soft/osx/${ARCH} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_INSTALL_PREFIX=/soft/osx/${ARCH} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_INSTALL_PREFIX=/soft/osx/${ARCH} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && rm -rf /soft/fftw-* +RUN /soft/osxcross/target/bin/${ARCH}-${_DARWIN}-install_name_tool -id @rpath/libfftw3.dylib /soft/osx/${ARCH}/lib/libfftw3.dylib +RUN /soft/osxcross/target/bin/${ARCH}-${_DARWIN}-install_name_tool -id @rpath/libfftw3f.dylib /soft/osx/${ARCH}/lib/libfftw3f.dylib +RUN /soft/osxcross/target/bin/${ARCH}-${_DARWIN}-install_name_tool -id @rpath/libfftw3l.dylib /soft/osx/${ARCH}/lib/libfftw3l.dylib + + +ENV ARCH=aarch64 +ENV CROSS_COMPILE=${ARCH}-${_DARWIN}- + +# fftw3 +WORKDIR /soft +RUN wget -nv http://www.fftw.org/fftw-${CUR_FFTW_VERSION}.tar.gz \ + && tar -xf fftw-${CUR_FFTW_VERSION}.tar.gz -C /soft \ + && rm -f fftw-${CUR_FFTW_VERSION}.tar.gz \ + && mkdir -p /soft/osx/build/fftw3 && cd /soft/osx/build/fftw3 \ + && cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_INSTALL_PREFIX=/soft/osx/${ARCH} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_INSTALL_PREFIX=/soft/osx/${ARCH} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_INSTALL_PREFIX=/soft/osx/${ARCH} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && rm -rf /soft/fftw-* +RUN /soft/osxcross/target/bin/${ARCH}-${_DARWIN}-install_name_tool -id @rpath/libfftw3.dylib /soft/osx/${ARCH}/lib/libfftw3.dylib +RUN /soft/osxcross/target/bin/${ARCH}-${_DARWIN}-install_name_tool -id @rpath/libfftw3f.dylib /soft/osx/${ARCH}/lib/libfftw3f.dylib +RUN /soft/osxcross/target/bin/${ARCH}-${_DARWIN}-install_name_tool -id @rpath/libfftw3l.dylib /soft/osx/${ARCH}/lib/libfftw3l.dylib + + + + +ENV ARCH=x86_64 +ENV CROSS_COMPILE=${ARCH}-${_DARWIN}- + +# assimp +WORKDIR /soft +RUN wget -nv https://github.com/assimp/assimp/archive/v${CUR_ASSIMP_VERSION}.tar.gz \ + && tar -xf v${CUR_ASSIMP_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_ASSIMP_VERSION}.tar.gz pax_global_header \ + && mkdir -p /soft/osx/build/assimp && cd /soft/osx/build/assimp \ + && cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_INSTALL_PREFIX=/soft/osx/${ARCH} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DASSIMP_BUILD_ASSIMP_TOOLS=0 -DASSIMP_BUILD_TESTS=0 -DBUILD_FRAMEWORK=0 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/assimp-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* && rm -rf /soft/assimp-* +RUN /soft/osxcross/target/bin/${ARCH}-${_DARWIN}-install_name_tool -id @rpath/libassimp.4.dylib /soft/osx/${ARCH}/lib/libassimp.4.dylib + + +ENV ARCH=aarch64 +ENV CROSS_COMPILE=${ARCH}-${_DARWIN}- + +# assimp +WORKDIR /soft +RUN wget -nv https://github.com/assimp/assimp/archive/v${CUR_ASSIMP_VERSION}.tar.gz \ + && tar -xf v${CUR_ASSIMP_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_ASSIMP_VERSION}.tar.gz pax_global_header \ + && mkdir -p /soft/osx/build/assimp && cd /soft/osx/build/assimp \ + && cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_INSTALL_PREFIX=/soft/osx/${ARCH} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DASSIMP_BUILD_ASSIMP_TOOLS=0 -DASSIMP_BUILD_TESTS=0 -DBUILD_FRAMEWORK=0 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake /soft/assimp-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* && rm -rf /soft/assimp-* +RUN /soft/osxcross/target/bin/${ARCH}-${_DARWIN}-install_name_tool -id @rpath/libassimp.4.dylib /soft/osx/${ARCH}/lib/libassimp.4.dylib + + + + +# markdown +WORKDIR /soft +RUN wget -nv https://github.com/Orc/discount/archive/v${CUR_DISCOUNT_VERSION}.tar.gz \ + && tar -xf v${CUR_DISCOUNT_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_DISCOUNT_VERSION}.tar.gz +RUN sed -i 's/DESTRUCTOR/ /' /soft/discount-${CUR_DISCOUNT_VERSION}/setup.c +WORKDIR /soft/discount-${CUR_DISCOUNT_VERSION}/cmake +COPY discount.cmake.patch /soft/discount-${CUR_DISCOUNT_VERSION}/cmake/cmake.patch +RUN patch < cmake.patch +WORKDIR /soft/linux/build/discount +RUN cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-${CUR_DISCOUNT_VERSION}/cmake && make -j2 && mv mktags .. && rm -rf ./* \ +&& mkdir -p /soft/osx/build/discount && mv /soft/linux/build/mktags /soft/osx/build/discount/mktags + + +ENV ARCH=x86_64 +ENV CROSS_COMPILE=${ARCH}-${_DARWIN}- + +WORKDIR /soft/osx/build/discount +RUN cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/soft/osx/${ARCH} -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-*/cmake \ + && make install -j${JOBS_COUNT} && rm -rf ./* + + +ENV ARCH=aarch64 +ENV CROSS_COMPILE=${ARCH}-${_DARWIN}- + +# markdown +RUN cmake -DCMAKE_SYSTEM_PROCESSOR=${ARCH} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/soft/osx/${ARCH} -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-*/cmake \ + && make install -j${JOBS_COUNT} && rm -rf ./* && rm -rf /soft/discount-* + + + + +ENV ARCH=x86_64 +ENV CROSS_COMPILE=${ARCH}-${_DARWIN}- + +# microhttpd +WORKDIR /soft/ +RUN wget -nv https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && tar -xf /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz -C /soft/ \ + && rm /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && mkdir -p /soft/osx/build/microhttpd && cd /soft/osx/build/microhttpd \ + && sh -c 'CFLAGS="-arch ${ARCH} -mmacosx-version-min=10.8 -march=core2 -O3" LDFLAGS="-arch ${ARCH} -mmacosx-version-min=10.8 -march=core2" LD=${CROSS_COMPILE}ld CC=${CROSS_COMPILE}clang CXX=${CROSS_COMPILE}clang++ /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}/configure --host=${ARCH}-${_DARWIN} --prefix=/soft/osx/${ARCH}/ --enable-shared=no --enable-static=yes && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/osx/build/microhttpd && rm -rf /soft/libmicrohttpd-* + + +ENV ARCH=aarch64 +ENV CROSS_COMPILE=${ARCH}-${_DARWIN}- + +# microhttpd +WORKDIR /soft/ +RUN wget -nv https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && tar -xf /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz -C /soft/ \ + && rm /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && mkdir -p /soft/osx/build/microhttpd && cd /soft/osx/build/microhttpd \ + && sh -c 'CFLAGS="-arch arm64 -mmacosx-version-min=10.8 -O3" LDFLAGS="-arch arm64 -mmacosx-version-min=10.8" LD=${CROSS_COMPILE}ld CC=${CROSS_COMPILE}clang CXX=${CROSS_COMPILE}clang++ /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}/configure --host=${ARCH}-${_DARWIN} --prefix=/soft/osx/${ARCH}/ --enable-shared=no --enable-static=yes && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/osx/build/microhttpd && rm -rf /soft/libmicrohttpd-* + + + + +ENV ARCH=x86_64 + +# Qt +ENV SYSROOT=/soft/osxcross/target/SDK/MacOSX11.3.sdk +ENV CROSS_COMPILE=/soft/osxcross/target/bin/${ARCH}-${_DARWIN}- +WORKDIR /soft +RUN wget -nv http://download.qt.io/official_releases/qt/${CUR_QT_VERSION_MAJOR}/${CUR_QT_VERSION}/single/qt-everywhere-src-${CUR_QT_VERSION}.tar.xz \ + && tar -xf qt-everywhere-src-${CUR_QT_VERSION}.tar.xz -C /soft \ + && rm -f qt-everywhere-src-${CUR_QT_VERSION}.tar.xz \ + && mkdir -p /soft/osx/build/qt && cd /soft/osx/build/qt \ + && sh -c 'echo "#!/bin/sh" > /usr/bin/xcode-select' \ + && sh -c 'echo "echo ${SYSROOT}" >> /usr/bin/xcode-select' \ + && chmod +x /usr/bin/xcode-select \ + && sh -c 'echo "#!/bin/sh" > /usr/bin/xcrun' \ + && sh -c 'echo "/soft/osxcross/target/bin/xcrun \"\$@\" 2>/dev/null" >> /usr/bin/xcrun' \ + && chmod +x /usr/bin/xcrun \ + && sed -i 's/license/version/' /soft/qt-everywhere-src-${CUR_QT_VERSION}/qtbase/mkspecs/features/mac/default_pre.prf \ + && /soft/qt-everywhere-src-${CUR_QT_VERSION}/configure -opensource -confirm-license -release -shared -no-pch -xplatform macx-clang -extprefix "/soft/osx/${ARCH}" \ + -sysroot ${SYSROOT} -gcc-sysroot -sdk macosx -device-option CROSS_COMPILE=${CROSS_COMPILE} \ + -qt-libpng -system-zlib -qt-pcre \ + -make tools -nomake tests -nomake examples -no-compile-examples \ + -skip qtwebengine -skip qtwebglplugin -skip doc -skip qt3d \ + && make -j${JOBS_QT_COUNT} && make install && rm -rf ./* && rm -rf /soft/qt-everywhere-src-* + + +WORKDIR /soft + +C:/sdk/MinGW/x64/bin;C:/sdk/Qt_5.15.0_x64/bin;C:/sdk/CMake/bin;C:/sdk/llvm-10.0.0_x64/bin;C:/Windows/system32;C:/Perl64/site/bin;C:/Perl64/bin;C:/Users/peri4/AppData/Local/Programs/Python/Python37-32/Scripts/;C:/Users/peri4/AppData/Local/Programs/Python/Python37-32/;c:/Ruby25/bin/ \ No newline at end of file diff --git a/osx/discount.cmake.patch b/osx/discount.cmake.patch new file mode 100644 index 0000000..15ada61 --- /dev/null +++ b/osx/discount.cmake.patch @@ -0,0 +1,38 @@ +--- CMakeLists.txt 2019-04-15 18:28:20.000000000 +0300 ++++ CMakeLists_new.txt 2020-03-16 10:46:52.288128600 +0300 +@@ -20,6 +20,9 @@ + set(${PROJECT_NAME}_ONLY_LIBRARY OFF CACHE BOOL + "Set to ON to only build markdown library (default is OFF)") + ++set(${PROJECT_NAME}_CXX_BINDING OFF CACHE BOOL ++ "Set to ON to install header files with c++ wrappers (default is OFF)") ++ + # Check headers + include(CheckIncludeFile) + check_include_file(libgen.h HAVE_LIBGEN_H) +@@ -110,6 +113,13 @@ + configure_file("${_ROOT}/mkdio.h.in" + "${_ROOT}/mkdio.h" + @ONLY) ++if(${PROJECT_NAME}_CXX_BINDING) ++ message(STATUS "Applying c++ glue to mkdio.h") ++ file(READ "${_ROOT}/mkdio.h" _ROOT_MKDIO_H) ++ file(WRITE "${_ROOT}/mkdio.h" "#ifdef __cplusplus\nextern \"C\" {\n#endif\n") ++ file(APPEND "${_ROOT}/mkdio.h" "${_ROOT_MKDIO_H}") ++ file(APPEND "${_ROOT}/mkdio.h" "#ifdef __cplusplus\n}\n#endif\n") ++endif() + + include_directories("${_ROOT}") + +@@ -182,7 +192,10 @@ + target_include_directories(libmarkdown INTERFACE + $ + ) +- set(_TARGETS libmarkdown markdown) ++ set(_TARGETS libmarkdown) ++ if(NOT ${PROJECT_NAME}_ONLY_LIBRARY) ++ list(APPEND _TARGETS markdown) ++ endif() + if(${PROJECT_NAME}_INSTALL_SAMPLES) + list(APPEND _TARGETS mkd2html makepage) + endif() diff --git a/osx/lua-5.3.5_MacOS1013_lib.tar.gz b/osx/lua-5.3.5_MacOS1013_lib.tar.gz new file mode 100644 index 0000000..38d3d28 Binary files /dev/null and b/osx/lua-5.3.5_MacOS1013_lib.tar.gz differ diff --git a/osx/toolchain-Darwin.cmake b/osx/toolchain-Darwin.cmake new file mode 100644 index 0000000..2394e77 --- /dev/null +++ b/osx/toolchain-Darwin.cmake @@ -0,0 +1,24 @@ +set(CMAKE_SYSTEM_NAME Darwin) +set(CMAKE_SYSTEM_PROCESSOR x86_64) + +set(OSXCROSS_TARGET_DIR "/soft/osxcross/target") +set(_DAWRIN_VERSION "apple-darwin18") + +set(CMAKE_C_COMPILER ${OSXCROSS_TARGET_DIR}/bin/${CMAKE_SYSTEM_PROCESSOR}-${_DAWRIN_VERSION}-clang ) +set(CMAKE_CXX_COMPILER ${OSXCROSS_TARGET_DIR}/bin/${CMAKE_SYSTEM_PROCESSOR}-${_DAWRIN_VERSION}-clang++ ) +set(CMAKE_RANLIB ${OSXCROSS_TARGET_DIR}/bin/${CMAKE_SYSTEM_PROCESSOR}-${_DAWRIN_VERSION}-ranlib CACHE FILEPATH "ranlib" ) +set(CMAKE_AR ${OSXCROSS_TARGET_DIR}/bin/${CMAKE_SYSTEM_PROCESSOR}-${_DAWRIN_VERSION}-ar CACHE FILEPATH "ar" ) +set(CMAKE_INSTALL_NAME_TOOL ${OSXCROSS_TARGET_DIR}/bin/${CMAKE_SYSTEM_PROCESSOR}-${_DAWRIN_VERSION}-install_name_tool CACHE FILEPATH "install_name_tool" ) +set(CMAKE_OTOOL ${OSXCROSS_TARGET_DIR}/bin/${CMAKE_SYSTEM_PROCESSOR}-${_DAWRIN_VERSION}-otool CACHE FILEPATH "otool" ) +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,@executable_path/../Frameworks,-rpath,@executable_path/lib,-rpath,@loader_path/../lib") + +list(APPEND CMAKE_PREFIX_PATH "/soft/osx") +set(CMAKE_FIND_ROOT_PATH ${OSXCROSS_TARGET_DIR}/${CMAKE_SYSTEM_PROCESSOR}-${_DAWRIN_VERSION} ${OSXCROSS_TARGET_DIR}/SDK/MacOSX10.14.sdk ${CMAKE_PREFIX_PATH}/lib) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY FIRST) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE FIRST) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE FIRST) +include_directories(${CMAKE_PREFIX_PATH}/include) +#link_directories(${CMAKE_PREFIX_PATH}/lib) +cmake_policy(SET CMP0025 NEW) diff --git a/osxcross/Dockerfile b/osxcross/Dockerfile new file mode 100644 index 0000000..c73c0f6 --- /dev/null +++ b/osxcross/Dockerfile @@ -0,0 +1,32 @@ +ARG DOCKER_PREFIX=wapmobil/ +FROM ${DOCKER_PREFIX}debian-base +ARG XCODE_XIP=shstk.ru/files/Xcode_10.3.xip + +# dev soft for our SDK +RUN apt-get update && apt-get install -y cpio libglu1-mesa-dev libgl1-mesa-dev libwayland-dev libncurses-dev flex bison gperf \ + python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools \ + python3 python3-pip python3-setuptools \ + ccache libffi-dev libssl-dev doxygen graphviz libx11-dev libxkbcommon-dev libpkgconfig-perl libfreetype6-dev libfontconfig1-dev \ + lzma-dev liblzma-dev libxml2-dev libbz2-dev libmpc-dev libmpfr-dev libgmp-dev libicu-dev libusb-1.0-0-dev libreadline-dev \ + clang cpio libglu1-mesa-dev libxml2-dev libssl-dev liblzma-dev libbz2-dev genisoimage \ + && rm -rf /var/cache/apt/archives/* + +ENV PATH=/soft/osxcross/target/bin:$PATH +ENV UNATTENDED=1 +WORKDIR /soft +RUN git clone --depth=1 https://git.shstk.ru/mirrors/osxcross.git \ + && wget -nv http://${XCODE_XIP} -O Xcode.xip && osxcross/tools/gen_sdk_package_pbzx.sh ./Xcode.xip && rm -rvf /soft/Xcode.xip \ + && cd /soft/osxcross && mv Mac*.sdk.tar.xz tarballs/ \ + && ./build.sh \ + && ln -s llvm-config-7 /usr/bin/llvm-config \ + && ./build_compiler_rt.sh \ + && mkdir -p /usr/lib/llvm-7/lib/clang/7.0.1/include \ + && mkdir -p /usr/lib/llvm-7/lib/clang/7.0.1/lib/darwin \ + && cp -rv /soft/osxcross/build/compiler-rt/compiler-rt/include/sanitizer /usr/lib/llvm-7/lib/clang/7.0.1/include \ + && cp -v /soft/osxcross/build/compiler-rt/compiler-rt/build/lib/darwin/*.a /usr/lib/llvm-7/lib/clang/7.0.1/lib/darwin \ + && cp -v /soft/osxcross/build/compiler-rt/compiler-rt/build/lib/darwin/*.dylib /usr/lib/llvm-7/lib/clang/7.0.1/lib/darwin \ + && rm -rvf /soft/osxcross/tarballs/* \ + && rm -rvf /soft/osxcross/build/* + +ENV PATH=/soft/osxcross/target/bin:/opt/cmake/bin:$PATH +WORKDIR /soft diff --git a/pi/.dockerignore b/pi/.dockerignore new file mode 100644 index 0000000..ceeb05b --- /dev/null +++ b/pi/.dockerignore @@ -0,0 +1 @@ +/tmp diff --git a/pi/Dockerfile b/pi/Dockerfile new file mode 100644 index 0000000..ee5cab1 --- /dev/null +++ b/pi/Dockerfile @@ -0,0 +1,109 @@ +ARG DOCKER_PREFIX=wapmobil/ +FROM ${DOCKER_PREFIX}debian +ARG JOBS_COUNT=4 +ARG JOBS_QT_COUNT=2 + +WORKDIR /soft/picross + +RUN apt-get update && apt-get install -y g++-arm-linux-gnueabihf && rm -rf /var/cache/apt/archives/* + +COPY sysroot.tar.bz2 sysroot.tar.bz2 +COPY toolchain-RPi.cmake /soft/ + +WORKDIR /soft/pi +RUN tar -xjf /soft/picross/sysroot.tar.bz2 && rm /soft/picross/sysroot.tar.bz2 + + +WORKDIR /soft + +ENV _TARGET=linux-gnueabihf +ENV CROSS_COMPILE=arm-${_TARGET}- + + +# sodium +WORKDIR /soft +RUN curl https://download.libsodium.org/libsodium/releases/libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + -o libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && tar -xf libsodium-${CUR_SODIUM_VERSION}.tar.gz -C /soft \ + && rm -f libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && mkdir -p /soft/pi/build/sodium && cd /soft/pi/build/sodium \ + && sh -c 'CFLAGS="-O3" LDFLAGS="-O3" LD=${CROSS_COMPILE}ld CC=${CROSS_COMPILE}gcc CXX=${CROSS_COMPILE}g++ /soft/libsodium-*/configure --host=arm-${_TARGET} --prefix=/soft/pi/usr && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/pi/build/sodium && rm -rf /soft/libsodium-* + + +# fftw3 +WORKDIR /soft +RUN wget -nv http://www.fftw.org/fftw-${CUR_FFTW_VERSION}.tar.gz \ + && tar -xf fftw-${CUR_FFTW_VERSION}.tar.gz -C /soft \ + && rm -f fftw-${CUR_FFTW_VERSION}.tar.gz \ + && mkdir -p /soft/pi/build/fftw3 && cd /soft/pi/build/fftw3 \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/pi/usr -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-RPi.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/pi/usr -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-RPi.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/pi/usr -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-RPi.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && rm -rf /soft/fftw-* + + +# assimp +WORKDIR /soft +RUN wget -nv https://github.com/assimp/assimp/archive/v${CUR_ASSIMP_VERSION}.tar.gz \ + && tar -xf v${CUR_ASSIMP_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_ASSIMP_VERSION}.tar.gz pax_global_header \ + && mkdir -p /soft/pi/build/assimp && cd /soft/pi/build/assimp \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/pi/usr -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DASSIMP_BUILD_ASSIMP_TOOLS=0 -DASSIMP_BUILD_TESTS=0 -DBUILD_FRAMEWORK=0 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-RPi.cmake /soft/assimp-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* && rm -rf /soft/assimp-* + + +# markdown +WORKDIR /soft +RUN wget -nv https://github.com/Orc/discount/archive/v${CUR_DISCOUNT_VERSION}.tar.gz \ + && tar -xf v${CUR_DISCOUNT_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_DISCOUNT_VERSION}.tar.gz +RUN sed -i 's/DESTRUCTOR/ /' /soft/discount-${CUR_DISCOUNT_VERSION}/setup.c +WORKDIR /soft/discount-${CUR_DISCOUNT_VERSION}/cmake +COPY discount.cmake.patch /soft/discount-${CUR_DISCOUNT_VERSION}/cmake/cmake.patch +RUN patch < cmake.patch +WORKDIR /soft/linux/build/discount +RUN cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-${CUR_DISCOUNT_VERSION}/cmake && make -j2 && mv mktags .. && rm -rf ./* \ +&& mkdir -p /soft/pi/build/discount && mv /soft/linux/build/mktags /soft/pi/build/discount/mktags +WORKDIR /soft/pi/build/discount +RUN cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/soft/pi/usr -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-RPi.cmake -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-*/cmake && make install -j${JOBS_COUNT} && rm -rf ./* + + +# microhttpd +WORKDIR /soft/ +RUN wget -nv https://mirror.tochlab.net/pub/gnu/libmicrohttpd/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && tar -xf /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz -C /soft/ \ + && rm /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}.tar.gz \ + && mkdir -p /soft/pi/build/microhttpd && cd /soft/pi/build/microhttpd \ + && sh -c 'CFLAGS="-O3" LDFLAGS="-O3" LD=${CROSS_COMPILE}ld CC=${CROSS_COMPILE}gcc CXX=${CROSS_COMPILE}g++ /soft/libmicrohttpd-${CUR_MICROHTTPD_VERSION}/configure --host=arm-${_TARGET} --prefix=/soft/pi/usr --enable-shared=no --enable-static=yes --enable-tests=no --enable-examples=no && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/pi/build/microhttpd && rm -rf /soft/libmicrohttpd-* + + +# Qt +WORKDIR /soft +ENV SYSROOT=/soft/pi +RUN ln -s /usr/bin/arm-linux-gnueabihf-g++ /usr/bin/arm-linux-gnueabi-g++ +RUN ln -s /usr/bin/arm-linux-gnueabihf-gcc /usr/bin/arm-linux-gnueabi-gcc +RUN ln -s /usr/bin/arm-linux-gnueabihf-ar /usr/bin/arm-linux-gnueabi-ar +RUN ln -s /usr/bin/arm-linux-gnueabihf-nm /usr/bin/arm-linux-gnueabi-nm +RUN ln -s /usr/bin/arm-linux-gnueabihf-strip /usr/bin/arm-linux-gnueabi-strip +RUN ln -s /usr/bin/arm-linux-gnueabihf-objcopy /usr/bin/arm-linux-gnueabi-objcopy +RUN wget -nv http://qt-mirror.dannhauer.de/archive/qt/${CUR_QT_VERSION_MAJOR}/${CUR_QT_VERSION}/single/qt-everywhere-opensource-src-${CUR_QT_VERSION}.tar.xz \ + && tar -xf qt-everywhere-opensource-src-${CUR_QT_VERSION}.tar.xz -C /soft \ + && rm -f qt-everywhere-opensource-src-${CUR_QT_VERSION}.tar.xz \ + && mkdir -p /soft/build/qt && cd /soft/build/qt \ + && /soft/qt-everywhere-src-${CUR_QT_VERSION}/configure \ + -opensource -confirm-license -release -shared -no-pch -xplatform "linux-arm-gnueabi-g++" -extprefix "/soft/pi/usr" \ + -sysroot ${SYSROOT} -gcc-sysroot -device-option CROSS_COMPILE=${CROSS_COMPILE} \ + MYSQL_INCDIR=/soft/pi/usr/include/mysql MYSQL_LIBDIR=/soft/pi/usr/lib/arm-linux-gnueabihf \ + -opengl desktop -qt-libpng -system-zlib -qt-pcre -make tools -nomake tests -nomake examples -no-compile-examples \ + -skip qtwebengine -skip qtwebglplugin -skip doc -skip qt3d -skip qtactiveqt -skip qtquick3d -openssl-linked -xcb \ + && make -j${JOBS_QT_COUNT} && make install && rm -rf ./* && rm -rf /soft/qt-everywhere-src-* + + +ENV BUILD_TYPE=Release + +WORKDIR /soft diff --git a/pi/discount.cmake.patch b/pi/discount.cmake.patch new file mode 100644 index 0000000..15ada61 --- /dev/null +++ b/pi/discount.cmake.patch @@ -0,0 +1,38 @@ +--- CMakeLists.txt 2019-04-15 18:28:20.000000000 +0300 ++++ CMakeLists_new.txt 2020-03-16 10:46:52.288128600 +0300 +@@ -20,6 +20,9 @@ + set(${PROJECT_NAME}_ONLY_LIBRARY OFF CACHE BOOL + "Set to ON to only build markdown library (default is OFF)") + ++set(${PROJECT_NAME}_CXX_BINDING OFF CACHE BOOL ++ "Set to ON to install header files with c++ wrappers (default is OFF)") ++ + # Check headers + include(CheckIncludeFile) + check_include_file(libgen.h HAVE_LIBGEN_H) +@@ -110,6 +113,13 @@ + configure_file("${_ROOT}/mkdio.h.in" + "${_ROOT}/mkdio.h" + @ONLY) ++if(${PROJECT_NAME}_CXX_BINDING) ++ message(STATUS "Applying c++ glue to mkdio.h") ++ file(READ "${_ROOT}/mkdio.h" _ROOT_MKDIO_H) ++ file(WRITE "${_ROOT}/mkdio.h" "#ifdef __cplusplus\nextern \"C\" {\n#endif\n") ++ file(APPEND "${_ROOT}/mkdio.h" "${_ROOT_MKDIO_H}") ++ file(APPEND "${_ROOT}/mkdio.h" "#ifdef __cplusplus\n}\n#endif\n") ++endif() + + include_directories("${_ROOT}") + +@@ -182,7 +192,10 @@ + target_include_directories(libmarkdown INTERFACE + $ + ) +- set(_TARGETS libmarkdown markdown) ++ set(_TARGETS libmarkdown) ++ if(NOT ${PROJECT_NAME}_ONLY_LIBRARY) ++ list(APPEND _TARGETS markdown) ++ endif() + if(${PROJECT_NAME}_INSTALL_SAMPLES) + list(APPEND _TARGETS mkd2html makepage) + endif() diff --git a/pi/fix_links.sh b/pi/fix_links.sh new file mode 100644 index 0000000..9e9c9db --- /dev/null +++ b/pi/fix_links.sh @@ -0,0 +1,20 @@ +#! /bin/bash +set -e +# Fix absolute symlinks to RPi sysroot +# Run script in raspbian root +PREF="/lib/arm-linux-gnueabihf" +DIR="usr/lib/arm-linux-gnueabihf/" +#"/soft/pi/lib/arm-linux-gnueabihf/" +#NEWDIR="/soft/picross/pitools/arm-bcm2708/arm-linux-gnueabihf/arm-linux-gnueabihf/sysroot/lib/" + +PLEN=`expr length "$PREF"` +for f in `find $DIR -maxdepth 1 -type l` +do + L=`readlink $f` + D=`expr substr "$L" 1 $PLEN` + if [[ "$D" = "$PREF" ]] + then + echo "Relink $f" + ln -sf "../../..$L" "$f" + fi +done diff --git a/pi/make_sysroot.sh b/pi/make_sysroot.sh new file mode 100644 index 0000000..a879312 --- /dev/null +++ b/pi/make_sysroot.sh @@ -0,0 +1,17 @@ +#! /bin/bash +set -e +home=$(pwd) +rm -vf $home/sysroot.tar.bz2 +apt-get update --allow-releaseinfo-change && apt-get install -y rsync +mkdir /raspbian +rsync -a $home/raspbian / + +rm /raspbian/etc/ld.so.preload +cp -vf /etc/resolv.conf /raspbian/etc/resolv.conf +chroot /raspbian /bin/bash -c "date && cat /etc/resolv.conf && ping 8.8.8.8 -c 4 && ping archive.raspberrypi.org -c 4" +chroot /raspbian /bin/bash -c "apt-get update --allow-releaseinfo-change && apt-get upgrade -y && apt-get install -y libicu-dev zlib1g-dev libglew-dev libffi-dev libssl-dev libmpc-dev libmpfr-dev libgmp-dev lzma-dev liblzma-dev libxml2-dev libbz2-dev zip \"^libxcb.*\" libx11-xcb-dev libxkbcommon-x11-dev libglu1-mesa-dev libxrender-dev mariadb-client mariadb-common mysql-common libmariadb-dev-compat libmariadbclient-dev libpq-dev ninja-build" + +cd /raspbian +bash $home/fix_links.sh +tar -cjf /soft/rpi_image/sysroot.tar.bz2 lib/arm-linux-gnueabihf usr/lib usr/include usr/share var/lib/dpkg/ etc/*-release +chmod 777 /soft/rpi_image/sysroot.tar.bz2 diff --git a/pi/mount_sysroot.sh b/pi/mount_sysroot.sh new file mode 100644 index 0000000..f356b80 --- /dev/null +++ b/pi/mount_sysroot.sh @@ -0,0 +1,12 @@ +#! /bin/bash +set -e +mkdir -p ./tmp ./raspbian +cd ./tmp +wget -nv https://downloads.raspberrypi.org/raspbian_lite_latest -O raspbian_lite_latest.zip +rm -vf *raspbian*.img +unzip ./raspbian_lite_latest.zip +sudo losetup -P /dev/loop9 `ls *raspbian*.img` +cd .. +sudo mount /dev/loop9p2 ./raspbian + +#docker run -v $(pwd):/raspbian --rm wapmobil/debian bash make_sysroot.sh diff --git a/pi/toolchain-RPi.cmake b/pi/toolchain-RPi.cmake new file mode 100644 index 0000000..51f15d2 --- /dev/null +++ b/pi/toolchain-RPi.cmake @@ -0,0 +1,26 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR arm) + +set(triple "arm-linux-gnueabihf") +set(RPI_TOOLCHAIN "/usr/bin/${triple}") +#set(CMAKE_SYSROOT "/soft/pi/usr") + +set(CMAKE_LIBRARY_ARCHITECTURE ${triple}) +set(CMAKE_C_COMPILER ${RPI_TOOLCHAIN}-gcc) +set(CMAKE_CXX_COMPILER ${RPI_TOOLCHAIN}-g++) +set(CMAKE_RANLIB ${RPI_TOOLCHAIN}-ranlib CACHE FILEPATH "ranlib") +set(CMAKE_AR ${RPI_TOOLCHAIN}-ar CACHE FILEPATH "ar") +set(CMAKE_READELF ${RPI_TOOLCHAIN}-readelf CACHE FILEPATH "readelf") +set(CMAKE_DPKG_WORKDIR /soft/pi/var/lib/dpkg/) + +list(APPEND CMAKE_PREFIX_PATH "/soft/pi/usr") +#set(CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH}/lib/${triple}) +#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY FIRST) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE FIRST) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE FIRST) +set(CMAKE_EXE_LINKER_FLAGS "-Wl,-rpath-link,/soft/pi/lib/${triple}") +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") +include_directories(${CMAKE_PREFIX_PATH}/include ${CMAKE_PREFIX_PATH}/include/${triple}) +cmake_policy(SET CMP0025 NEW) diff --git a/pi/umount_sysroot.sh b/pi/umount_sysroot.sh new file mode 100644 index 0000000..48a4e4b --- /dev/null +++ b/pi/umount_sysroot.sh @@ -0,0 +1,10 @@ +#! /bin/bash +set -e +x=$(ls /dev | grep loop9p2 | wc -l) +if [ $x -ne 0 ] +then + echo "delete loop" + sudo umount ./raspbian || true + sudo losetup -d /dev/loop9 || true +fi +rm -rf ./tmp ./raspbian || true diff --git a/pip/Dockerfile b/pip/Dockerfile new file mode 100644 index 0000000..273be27 --- /dev/null +++ b/pip/Dockerfile @@ -0,0 +1,7 @@ +FROM debian:stable-slim +RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \ + && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 +ENV LANG=en_US.utf8 +RUN apt-get update && apt-get install -y cmake g++ git libsodium-dev +WORKDIR /soft +RUN git clone --depth 1 https://git.shstk.ru/SHS/pip.git && cd /soft/build && cmake -DICU=0 ../pip && make install -j4 && cd /soft && rm -rf ./* diff --git a/shs_server/Dockerfile b/shs_server/Dockerfile new file mode 100644 index 0000000..ac8560f --- /dev/null +++ b/shs_server/Dockerfile @@ -0,0 +1,22 @@ +FROM ubuntu:latest + +# locales +RUN apt-get update && apt-get install -y locales wget gnupg && rm -rf /var/lib/apt/lists/* \ + && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 \ + && rm -rf /var/cache/apt/archives/* +ENV LANG=en_US.utf8 + +ENV TZ=Europe/Moscow +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# install shs-server +RUN wget -qO - https://ppa.shstk.ru/SHS.gpg | apt-key add - +RUN echo "deb [arch=amd64] https://ppa.shstk.ru/ focal main" | tee /etc/apt/sources.list.d/SHS.list +RUN apt-get update && apt-get install -y shs-server && rm -rf /var/cache/apt/archives/* + +# run shs-server +EXPOSE 13361/tcp +EXPOSE 13380/udp +EXPOSE 13392/udp +EXPOSE 13390/udp +ENTRYPOINT exec SHS_Server -platform minimal --no-graphics --help diff --git a/shs_server/Jenkinsfile b/shs_server/Jenkinsfile new file mode 100644 index 0000000..2657f4e --- /dev/null +++ b/shs_server/Jenkinsfile @@ -0,0 +1,12 @@ +node { + stage("Download SRC") { + checkout scm + } + stage("build and push") { + def img = docker.build("${env.DOCKER_PREFIX}/shs-server", ". --no-cache") + img.push() + } + stage("docker prune") { + sh 'docker system prune -f' + } +} diff --git a/stm32/.bashrc b/stm32/.bashrc new file mode 100644 index 0000000..400abbd --- /dev/null +++ b/stm32/.bashrc @@ -0,0 +1,113 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/stm32/Dockerfile b/stm32/Dockerfile new file mode 100644 index 0000000..b37f968 --- /dev/null +++ b/stm32/Dockerfile @@ -0,0 +1,14 @@ +FROM debian:stable-slim + +# locales +RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \ + && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 +ENV LANG=en_US.utf8 + +# configs +COPY .bashrc /root/.bashrc +COPY inputrc /etc/inputrc + +# base soft +RUN apt-get update && apt-get install -y gcc-arm-none-eabi make git && rm -rf /var/cache/apt/archives/* + diff --git a/stm32/inputrc b/stm32/inputrc new file mode 100644 index 0000000..230e66b --- /dev/null +++ b/stm32/inputrc @@ -0,0 +1,67 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info rluserman' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on + +# To allow the use of 8bit-characters like the german umlauts, uncomment +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +# try to enable the application keypad when it is called. Some systems +# need this to enable the arrow keys. +# set enable-keypad on + +# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys + +# do not bell on tab-completion +# set bell-style none +# set bell-style visible + +# some defaults / modifications for the emacs mode +$if mode=emacs + +# allow the use of the Home/End keys +"\e[1~": beginning-of-line +"\e[4~": end-of-line + +# allow the use of the Delete/Insert keys +"\e[3~": delete-char +"\e[2~": quoted-insert + +# mappings for "page up" and "page down" to step to the beginning/end +# of the history +# "\e[5~": beginning-of-history +# "\e[6~": end-of-history + +# alternate mappings for "page up" and "page down" to search the history +"\e[5~": history-search-backward +"\e[6~": history-search-forward + +# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving +"\e[1;5C": forward-word +"\e[1;5D": backward-word +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +$if term=rxvt +"\e[7~": beginning-of-line +"\e[8~": end-of-line +"\eOc": forward-word +"\eOd": backward-word +$endif + +# for non RH/Debian xterm, can't hurt for RH/Debian xterm +# "\eOH": beginning-of-line +# "\eOF": end-of-line + +# for freebsd console +# "\e[H": beginning-of-line +# "\e[F": end-of-line + +$endif diff --git a/texas/.bashrc b/texas/.bashrc new file mode 100644 index 0000000..400abbd --- /dev/null +++ b/texas/.bashrc @@ -0,0 +1,113 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/texas/Dockerfile b/texas/Dockerfile new file mode 100644 index 0000000..ae2ae1d --- /dev/null +++ b/texas/Dockerfile @@ -0,0 +1,21 @@ +FROM debian:stable-slim + +# locales +RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \ + && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 +ENV LANG=en_US.utf8 + +# configs +COPY .bashrc /root/.bashrc +COPY inputrc /etc/inputrc + +# base soft +RUN apt-get update && apt-get install -y curl wget make git && rm -rf /var/cache/apt/archives/* + +# mmwave SDK +WORKDIR /soft +RUN dpkg --add-architecture i386 +RUN apt-get update && apt-get install -y build-essential mono-runtime libc6:i386 && rm -rf /var/cache/apt/archives/* +COPY mmwave_sdk_03_05_00_04-Linux-x86-Install.bin /soft/mmwave_sdk.bin +RUN /soft/mmwave_sdk.bin --prefix /soft/ti --mode unattended +RUN rm -f /soft/mmwave_sdk.bin diff --git a/texas/inputrc b/texas/inputrc new file mode 100644 index 0000000..230e66b --- /dev/null +++ b/texas/inputrc @@ -0,0 +1,67 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info rluserman' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on + +# To allow the use of 8bit-characters like the german umlauts, uncomment +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +# try to enable the application keypad when it is called. Some systems +# need this to enable the arrow keys. +# set enable-keypad on + +# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys + +# do not bell on tab-completion +# set bell-style none +# set bell-style visible + +# some defaults / modifications for the emacs mode +$if mode=emacs + +# allow the use of the Home/End keys +"\e[1~": beginning-of-line +"\e[4~": end-of-line + +# allow the use of the Delete/Insert keys +"\e[3~": delete-char +"\e[2~": quoted-insert + +# mappings for "page up" and "page down" to step to the beginning/end +# of the history +# "\e[5~": beginning-of-history +# "\e[6~": end-of-history + +# alternate mappings for "page up" and "page down" to search the history +"\e[5~": history-search-backward +"\e[6~": history-search-forward + +# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving +"\e[1;5C": forward-word +"\e[1;5D": backward-word +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +$if term=rxvt +"\e[7~": beginning-of-line +"\e[8~": end-of-line +"\eOc": forward-word +"\eOd": backward-word +$endif + +# for non RH/Debian xterm, can't hurt for RH/Debian xterm +# "\eOH": beginning-of-line +# "\eOF": end-of-line + +# for freebsd console +# "\e[H": beginning-of-line +# "\e[F": end-of-line + +$endif diff --git a/windows-clang/.bashrc b/windows-clang/.bashrc new file mode 100644 index 0000000..400abbd --- /dev/null +++ b/windows-clang/.bashrc @@ -0,0 +1,113 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/windows-clang/Dockerfile b/windows-clang/Dockerfile new file mode 100644 index 0000000..a1d8f45 --- /dev/null +++ b/windows-clang/Dockerfile @@ -0,0 +1,183 @@ +FROM debian:trixie-slim +ARG JOBS_COUNT=12 +ENV CROSS_COMPILE=x86_64-w64-mingw32- +ENV SYSROOT=/usr/lib/gcc/x86_64-w64-mingw32/14-posix + +# locales +RUN apt-get update && apt-get install -y locales \ + && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 \ + && rm -rf /var/cache/apt/archives/* +ENV LANG=en_US.utf8 + +# configs +COPY .bashrc /root/.bashrc +COPY inputrc /etc/inputrc + +# base soft +RUN apt-get install -y subversion git zip unzip wget curl htop net-tools iputils-ping mc nano screen g++ patchelf p7zip-full ninja-build make python3 \ + cpio libglu1-mesa-dev libgl1-mesa-dev libwayland-dev libncurses-dev flex bison gperf libdbus-1-3 \ + ccache libffi-dev libssl-dev doxygen graphviz libx11-dev libxkbcommon-dev libpkgconfig-perl libfontconfig1-dev \ + liblzma-dev libxml2-dev libbz2-dev libmpc-dev libmpfr-dev libgmp-dev libicu-dev libusb-1.0-0-dev libreadline-dev \ + ninja-build mingw-w64 libz-mingw-w64-dev \ + && rm -rf /var/cache/apt/archives/* + +# w64-mingw32 soft +RUN update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix \ + && update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix + +RUN x86_64-w64-mingw32-strip -v --strip-unneeded /usr/x86_64-w64-mingw32/lib/*.dll && \ + x86_64-w64-mingw32-strip -v --strip-unneeded ${SYSROOT}/*.dll + +WORKDIR /soft + +COPY toolchain-Windows.cmake /soft/ +COPY opencl_win.zip /soft/ +COPY rpc.zip /soft/ +COPY zlib1.dll /soft/windows/bin/ + + +ENV CUR_SODIUM_VERSION=1.0.20 +ENV CUR_FFTW_VERSION=3.3.8 +ENV CUR_ASSIMP_VERSION=4.1.0 +ENV CUR_DISCOUNT_VERSION=2.2.6 +ENV CUR_OPENSSL_VERSION=1_1_1h +ENV CUR_OPENCV_VERSION=4.5.5 + + +RUN mkdir -p /soft/windows/bin/ \ + && cp -v ${SYSROOT}/libgcc_s_seh-1.dll /soft/windows/bin/ \ + && cp -v ${SYSROOT}/libstdc++-6.dll /soft/windows/bin/ \ + && cp -v /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll /soft/windows/bin/ +RUN unzip -o opencl_win.zip -d /soft/windows \ + && unzip -o rpc.zip -d /soft/windows/lib \ + && rm -vf /soft/opencl_win.zip /soft/rpc.zip + +# last cmake from sources, into /opt +ENV CUR_CMAKE_VERSION=3.31.3 +RUN wget -nv https://github.com/Kitware/CMake/releases/download/v${CUR_CMAKE_VERSION}/cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh \ + && mkdir -p /opt/cmake \ + && bash ./cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh --skip-license --prefix=/opt/cmake \ + && rm -rf /soft/cmake-${CUR_CMAKE_VERSION}-Linux-x86_64.sh + +ENV PATH=/opt/cmake/bin:$PATH + + +# Remove invalid FindGtest.cmake +RUN cd "$(find /opt/cmake/share -name FindGTest.cmake -type f -printf '%h' -quit)" && rm FindGTest.cmake + + +# sodium +WORKDIR /soft +RUN curl -s https://download.libsodium.org/libsodium/releases/libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + -o libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && tar -xf libsodium-${CUR_SODIUM_VERSION}.tar.gz -C /soft \ + && rm -f libsodium-${CUR_SODIUM_VERSION}.tar.gz \ + && mkdir -p /soft/windows/build/sodium && cd /soft/windows/build/sodium \ + && sh -c 'CFLAGS="-O3 -fomit-frame-pointer -m64" LDFLAGS="-O3 -fomit-frame-pointer -m64" /soft/libsodium-${CUR_SODIUM_VERSION}/configure --host=x86_64-w64-mingw32 --prefix=/soft/windows/ --exec-prefix=/soft/windows && make install -j${JOBS_COUNT}' \ + && cd /soft && rm -rf /soft/windows/build/sodium && rm -rf /soft/libsodium-* + + +# fftw3 +WORKDIR /soft +RUN wget -nv http://www.fftw.org/fftw-${CUR_FFTW_VERSION}.tar.gz \ + && tar -xf fftw-${CUR_FFTW_VERSION}.tar.gz -C /soft \ + && rm -f fftw-${CUR_FFTW_VERSION}.tar.gz \ + && mkdir -p /soft/windows/build/fftw3 && cd /soft/windows/build/fftw3 \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/windows -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/windows -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=1 -DENABLE_LONG_DOUBLE=0 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/windows -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_FLOAT=0 -DENABLE_LONG_DOUBLE=1 -DENABLE_QUAD_PRECISION=0 -DENABLE_THREADS=1 -DWITH_COMBINED_THREADS=1 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake /soft/fftw-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* \ + && rm -rf /soft/fftw-* + + +# assimp +WORKDIR /soft +RUN wget -nv https://github.com/assimp/assimp/archive/v${CUR_ASSIMP_VERSION}.tar.gz \ + && tar -xf v${CUR_ASSIMP_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_ASSIMP_VERSION}.tar.gz pax_global_header \ + && mkdir -p /soft/windows/build/assimp && cd /soft/windows/build/assimp \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/windows -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DASSIMP_BUILD_ASSIMP_TOOLS=0 -DASSIMP_BUILD_TESTS=0 -DBUILD_FRAMEWORK=0 -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake /soft/assimp-* \ + && make install -j${JOBS_COUNT} && rm -rf ./* && rm -rf /soft/assimp-* + + +# markdown +WORKDIR /soft +RUN wget -nv https://github.com/Orc/discount/archive/v${CUR_DISCOUNT_VERSION}.tar.gz \ + && tar -xf v${CUR_DISCOUNT_VERSION}.tar.gz -C /soft \ + && rm -f v${CUR_DISCOUNT_VERSION}.tar.gz +RUN sed -i 's/DESTRUCTOR/ /' /soft/discount-${CUR_DISCOUNT_VERSION}/setup.c +WORKDIR /soft/discount-${CUR_DISCOUNT_VERSION}/cmake +COPY discount.cmake.patch /soft/discount-${CUR_DISCOUNT_VERSION}/cmake/cmake.patch +RUN patch < cmake.patch +WORKDIR /soft/linux/build/discount +RUN cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-${CUR_DISCOUNT_VERSION}/cmake && make -j2 && mv mktags .. && rm -rf ./* \ +&& mkdir -p /soft/windows/build/discount && mv /soft/linux/build/mktags /soft/windows/build/discount/mktags +WORKDIR /soft/windows/build/discount +RUN cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/soft/windows -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake -DDISCOUNT_ONLY_LIBRARY=1 /soft/discount-*/cmake \ + && make install -j${JOBS_COUNT} && rm -rf ./* && rm -rf /soft/discount-* + + +# mysql +COPY MySQL_C_x64.zip /soft/ +RUN unzip -o /soft/MySQL_C_x64.zip -d ${SYSROOT}/ \ + && cp ${SYSROOT}/libmysql.dll /soft/windows/bin/ \ + && rm /soft/MySQL_C_x64.zip + + +# postgresql +COPY postgresql.zip /soft/ +RUN unzip -o /soft/postgresql.zip -d ${SYSROOT}/ \ + && cp ${SYSROOT}/lib/*.dll /soft/windows/bin/ \ + && rm /soft/postgresql.zip + + +# OpenSSL +RUN wget -nv https://github.com/openssl/openssl/archive/OpenSSL_${CUR_OPENSSL_VERSION}.tar.gz \ + && tar -xf OpenSSL_${CUR_OPENSSL_VERSION}.tar.gz -C /soft \ + && rm -f OpenSSL_${CUR_OPENSSL_VERSION}.tar.gz \ + && mkdir -p /soft/windows/build/openssl && cd /soft/windows/build/openssl \ + && /soft/openssl-OpenSSL_${CUR_OPENSSL_VERSION}/Configure --cross-compile-prefix=x86_64-w64-mingw32- \ + --prefix=/soft/windows/ --release no-idea no-mdc2 no-rc5 no-tests shared mingw64 \ + && make -j${JOBS_COUNT} && make install \ + && cd /soft && rm -rf /soft/windows/build/openssl && rm -rf /soft/openssl-OpenSSL_* + +# microhttpd +RUN mkdir -p /soft/tmp && cd /soft/tmp \ + && wget https://ftpmirror.gnu.org/libmicrohttpd/libmicrohttpd-latest-w32-bin.zip \ + && unzip -o /soft/tmp/*.zip -d /soft/tmp \ + && cp -rfv /soft/tmp/libmicrohttpd-*-w32-bin/x86_64/MinGW/static/mingw64/* /soft/windows/ \ + && rm -rf /soft/tmp + + +# curl +RUN mkdir -p /soft/tmp && cd /soft/tmp \ + && wget https://curl.se/windows/latest.cgi?p=win64-mingw.zip \ + && unzip -o /soft/tmp/*.zip -d /soft/tmp \ + && cp -rv /soft/tmp/curl-*/bin /soft/tmp/curl-*/lib /soft/tmp/curl-*/include ${SYSROOT} \ + && cp -v ${SYSROOT}/bin/libcurl-x64.dll /soft/windows/bin/ \ + && cp -v ${SYSROOT}/lib/*curl.dll.a /soft/windows/lib/ \ + && rm -rf /soft/tmp + + +RUN chmod +r /soft/windows/bin/* + +ENV BUILD_TYPE=Release + +# GTest +WORKDIR /soft +RUN git clone https://github.com/google/googletest.git \ + && mkdir googletest/build && cd googletest/build \ + && cmake -DCMAKE_INSTALL_PREFIX=/soft/windows -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake .. \ + && make -j${JOBS_COUNT} && make install && cd /soft && rm -rf googletest + +WORKDIR /soft +RUN git clone --depth 1 --recursive -b 'release/21.x' https://github.com/llvm/llvm-project.git + +WORKDIR /soft/llvm_build_windows +RUN cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/soft/windows -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake \ +-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -DLLVM_ENABLE_RUNTIMES="" -DLLVM_ENABLE_RTTI=ON \ +-DLLVM_BUILD_TESTS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INSTALL_GTEST=OFF ../llvm-project/llvm \ + && cmake --build ./ --target install -j8 \ + && rm -rf * diff --git a/windows-clang/MySQL_C_x64.zip b/windows-clang/MySQL_C_x64.zip new file mode 100644 index 0000000..336a2e5 Binary files /dev/null and b/windows-clang/MySQL_C_x64.zip differ diff --git a/windows-clang/discount.cmake.patch b/windows-clang/discount.cmake.patch new file mode 100644 index 0000000..15ada61 --- /dev/null +++ b/windows-clang/discount.cmake.patch @@ -0,0 +1,38 @@ +--- CMakeLists.txt 2019-04-15 18:28:20.000000000 +0300 ++++ CMakeLists_new.txt 2020-03-16 10:46:52.288128600 +0300 +@@ -20,6 +20,9 @@ + set(${PROJECT_NAME}_ONLY_LIBRARY OFF CACHE BOOL + "Set to ON to only build markdown library (default is OFF)") + ++set(${PROJECT_NAME}_CXX_BINDING OFF CACHE BOOL ++ "Set to ON to install header files with c++ wrappers (default is OFF)") ++ + # Check headers + include(CheckIncludeFile) + check_include_file(libgen.h HAVE_LIBGEN_H) +@@ -110,6 +113,13 @@ + configure_file("${_ROOT}/mkdio.h.in" + "${_ROOT}/mkdio.h" + @ONLY) ++if(${PROJECT_NAME}_CXX_BINDING) ++ message(STATUS "Applying c++ glue to mkdio.h") ++ file(READ "${_ROOT}/mkdio.h" _ROOT_MKDIO_H) ++ file(WRITE "${_ROOT}/mkdio.h" "#ifdef __cplusplus\nextern \"C\" {\n#endif\n") ++ file(APPEND "${_ROOT}/mkdio.h" "${_ROOT_MKDIO_H}") ++ file(APPEND "${_ROOT}/mkdio.h" "#ifdef __cplusplus\n}\n#endif\n") ++endif() + + include_directories("${_ROOT}") + +@@ -182,7 +192,10 @@ + target_include_directories(libmarkdown INTERFACE + $ + ) +- set(_TARGETS libmarkdown markdown) ++ set(_TARGETS libmarkdown) ++ if(NOT ${PROJECT_NAME}_ONLY_LIBRARY) ++ list(APPEND _TARGETS markdown) ++ endif() + if(${PROJECT_NAME}_INSTALL_SAMPLES) + list(APPEND _TARGETS mkd2html makepage) + endif() diff --git a/windows-clang/hdf5_cache.cmake b/windows-clang/hdf5_cache.cmake new file mode 100644 index 0000000..7eaa6a4 --- /dev/null +++ b/windows-clang/hdf5_cache.cmake @@ -0,0 +1,13 @@ +set(HAVE_IOEO_EXITCODE 0 CACHE BOOL "") +set(H5_LDOUBLE_TO_LONG_SPECIAL_RUN 1 CACHE BOOL "") +set(H5_LONG_TO_LDOUBLE_SPECIAL_RUN 1 CACHE BOOL "") +set(H5_LDOUBLE_TO_LLONG_ACCURATE_RUN 0 CACHE BOOL "") +set(H5_LLONG_TO_LDOUBLE_CORRECT_RUN 0 CACHE BOOL "") +set(H5_DISABLE_SOME_LDOUBLE_CONV_RUN 1 CACHE BOOL "") + +set(HAVE_IOEO_EXITCODE__TRYRUN_OUTPUT 0 CACHE BOOL "") +set(H5_LDOUBLE_TO_LONG_SPECIAL_RUN__TRYRUN_OUTPUT 1 CACHE BOOL "") +set(H5_LONG_TO_LDOUBLE_SPECIAL_RUN__TRYRUN_OUTPUT 1 CACHE BOOL "") +set(H5_LDOUBLE_TO_LLONG_ACCURATE_RUN__TRYRUN_OUTPUT 0 CACHE BOOL "") +set(H5_LLONG_TO_LDOUBLE_CORRECT_RUN__TRYRUN_OUTPUT 0 CACHE BOOL "") +set(H5_DISABLE_SOME_LDOUBLE_CONV_RUN__TRYRUN_OUTPUT 1 CACHE BOOL "") diff --git a/windows-clang/inputrc b/windows-clang/inputrc new file mode 100644 index 0000000..230e66b --- /dev/null +++ b/windows-clang/inputrc @@ -0,0 +1,67 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info rluserman' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on + +# To allow the use of 8bit-characters like the german umlauts, uncomment +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +# try to enable the application keypad when it is called. Some systems +# need this to enable the arrow keys. +# set enable-keypad on + +# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys + +# do not bell on tab-completion +# set bell-style none +# set bell-style visible + +# some defaults / modifications for the emacs mode +$if mode=emacs + +# allow the use of the Home/End keys +"\e[1~": beginning-of-line +"\e[4~": end-of-line + +# allow the use of the Delete/Insert keys +"\e[3~": delete-char +"\e[2~": quoted-insert + +# mappings for "page up" and "page down" to step to the beginning/end +# of the history +# "\e[5~": beginning-of-history +# "\e[6~": end-of-history + +# alternate mappings for "page up" and "page down" to search the history +"\e[5~": history-search-backward +"\e[6~": history-search-forward + +# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving +"\e[1;5C": forward-word +"\e[1;5D": backward-word +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +$if term=rxvt +"\e[7~": beginning-of-line +"\e[8~": end-of-line +"\eOc": forward-word +"\eOd": backward-word +$endif + +# for non RH/Debian xterm, can't hurt for RH/Debian xterm +# "\eOH": beginning-of-line +# "\eOF": end-of-line + +# for freebsd console +# "\e[H": beginning-of-line +# "\e[F": end-of-line + +$endif diff --git a/windows-clang/lua-5.3.5_Win64_dllw6_lib.zip b/windows-clang/lua-5.3.5_Win64_dllw6_lib.zip new file mode 100644 index 0000000..f5eff7d Binary files /dev/null and b/windows-clang/lua-5.3.5_Win64_dllw6_lib.zip differ diff --git a/windows-clang/opencl_win.zip b/windows-clang/opencl_win.zip new file mode 100644 index 0000000..b09a95c Binary files /dev/null and b/windows-clang/opencl_win.zip differ diff --git a/windows-clang/postgresql.zip b/windows-clang/postgresql.zip new file mode 100644 index 0000000..383fdde Binary files /dev/null and b/windows-clang/postgresql.zip differ diff --git a/windows-clang/rpc.zip b/windows-clang/rpc.zip new file mode 100644 index 0000000..53e7118 Binary files /dev/null and b/windows-clang/rpc.zip differ diff --git a/windows-clang/toolchain-Windows.cmake b/windows-clang/toolchain-Windows.cmake new file mode 100644 index 0000000..ac6e231 --- /dev/null +++ b/windows-clang/toolchain-Windows.cmake @@ -0,0 +1,23 @@ +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR x86_64) + +set(CMAKE_C_COMPILER /usr/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-gcc-posix ) +set(CMAKE_C_COMPILER_AR /usr/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-gcc-ar-posix ) +set(CMAKE_C_COMPILER_RANLIB /usr/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-gcc-ranlib-posix ) +set(CMAKE_CXX_COMPILER /usr/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-g++-posix ) +set(CMAKE_CXX_COMPILER_AR /usr/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-gcc-ar-posix ) +set(CMAKE_CXX_COMPILER_RANLIB /usr/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-gcc-ranlib-posix ) +set(CMAKE_ASM_NASM_COMPILER /usr/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-as ) +set(CMAKE_RC_COMPILER /usr/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-windres) +set(CMAKE_OBJDUMP /usr/bin/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-objdump) +add_definitions(-D_WIN32_WINNT=0x0A00 -D_GNU_SOURCE=1 -DNOWERROR=1) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-all") + +list(APPEND CMAKE_PREFIX_PATH "/soft/windows") +SET(CMAKE_FIND_ROOT_PATH /usr/${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32 ${CMAKE_PREFIX_PATH}/lib) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY FIRST) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE FIRST) +include_directories(${CMAKE_PREFIX_PATH}/include) +set(OpenCL_INCLUDE_DIR ${CMAKE_PREFIX_PATH}/include) +set(OpenCL_LIBRARY ${CMAKE_PREFIX_PATH}/lib/opencl.lib) diff --git a/windows-clang/zlib1.dll b/windows-clang/zlib1.dll new file mode 100644 index 0000000..83bc8fc Binary files /dev/null and b/windows-clang/zlib1.dll differ diff --git a/windows-qtcreator/Dockerfile b/windows-qtcreator/Dockerfile new file mode 100644 index 0000000..f1277ec --- /dev/null +++ b/windows-qtcreator/Dockerfile @@ -0,0 +1,74 @@ +FROM windows-clang +ARG JOBS_COUNT=16 +ARG LIBS_BUILD_NUMBER=9999 + +ENV CUR_QT_VERSION=6.9.2 + +RUN wget -nv http://shstk.ru/files/qt-all-${CUR_QT_VERSION}.zip \ + && unzip -o qt-all-${CUR_QT_VERSION}.zip -d /soft/qt \ + && rm -f qt-all-${CUR_QT_VERSION}.zip +COPY create_links.sh /soft/qt/gcc_64/lib/create_links.sh +RUN cd /soft/qt/gcc_64/lib/ && chmod +x ./create_links.sh && sh ./create_links.sh +RUN chmod +x /soft/qt/gcc_64/libexec/* +RUN chmod +x /soft/qt/gcc_64/bin/* + +RUN ln -s /usr/x86_64-w64-mingw32/include/windows.h /usr/x86_64-w64-mingw32/include/Windows.h + +WORKDIR /soft +RUN echo "hello!" +RUN git clone -b master --single-branch --depth 1 --recursive https://git.shstk.ru/SHS/shstk.git + +WORKDIR /soft/shstk_build_host +RUN cmake -G Ninja -DICU=0 -DCROSSTOOLS=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} ../shstk \ + && cmake --build ./ --target install -j${JOBS_COUNT} \ + && rm -rf ./* && ldconfig + +WORKDIR /soft/shstk_build_windows +RUN cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake \ + -DCMAKE_INSTALL_PREFIX=/soft/windows \ + -DCMAKE_PREFIX_PATH=/soft/qt/mingw_64 \ + -DQT_HOST_PATH=/soft/qt/gcc_64 \ + -DICU=0 -DLOCAL=1 -DQGLENGINE=1 -DQGLVIEW=0 -DPIP_BUILD_OPENCL=0 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} \ + -DOpenCL_INCLUDE_DIRS=/soft/windows/include \ + ../shstk/ \ + && cmake --build ./ --target install -j${JOBS_COUNT} && rm -rf ./* + +#RUN git clone -b v8 --single-branch --depth 1 https://git.shstk.ru/SHS/qtcreator.git /soft/qt-creator-plugins +#rm /soft/toolchain-Windows.cmake +#cp toolchain-Windows.cmake clangformatbaseindenter.patch clangformatutils.patch /soft/ +#apt-get update && apt-get install -y qttools5-dev-tools +#cp -vf /usr/bin/qhelpgenerator /usr/bin/qcollectiongenerator /usr/x86_64-w64-mingw32/lib/zlib1.dll /soft/windows/bin/ + +#WORKDIR /soft +#RUN git clone -b "8.0" --depth 1 --recursive https://github.com/qt-creator/qt-creator.git /soft/qt-creator +#RUN patch /soft/qt-creator/src/plugins/clangformat/clangformatbaseindenter.cpp /soft/qt-creator-plugins/build_files/clangformatbaseindenter.patch +#RUN patch /soft/qt-creator/src/plugins/clangformat/clangformatutils.cpp /soft/qt-creator-plugins/build_files/clangformatutils.patch + +WORKDIR /soft +#RUN git clone -b "15.0" --depth 1 --recursive https://github.com/qt-creator/qt-creator.git +#RUN git clone -b "v18.0.2" --depth 1 --recursive https://github.com/qt-creator/qt-creator.git +RUN git clone -b "v19.0.0" --depth 1 --recursive https://github.com/qt-creator/qt-creator.git + +RUN wget https://go.dev/dl/go1.25.4.linux-amd64.tar.gz && tar -xf /soft/go*.linux-amd64.tar.gz -C /soft/windows/ +ENV PATH=/soft/windows/go/bin:$PATH + +WORKDIR /soft/qt-creator_build +RUN cmake -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake \ + -DCMAKE_INSTALL_PREFIX=/soft/windows/qt-creator \ + -DCMAKE_PREFIX_PATH=/soft/qt/mingw_64 \ + -DQT_HOST_PATH=/soft/qt/gcc_64 \ + -DQT_NO_PRIVATE_MODULE_WARNING=1 \ + -DWITH_QMLDESIGNER=0 \ + -DBUILD_WITH_PCH=0 \ + -Drcc_OPTIONS="--no-zstd" \ + ../qt-creator +RUN make -k -j${JOBS_COUNT} || true +RUN make -k -j${JOBS_COUNT} -i install || true + +WORKDIR /soft/windows/qt-creator +RUN cp -vfr /soft/qt/mingw_64/plugins ./ +RUN cp -vfr /soft/qt/mingw_64/qml ./ +RUN cp -vfr /soft/qt/mingw_64/translations ./ +RUN mv -vf ./libexec/qtcreator/* ./bin/ && rm -rf ./libexec diff --git a/windows-qtcreator/Jenkinsfile b/windows-qtcreator/Jenkinsfile new file mode 100644 index 0000000..6e8a534 --- /dev/null +++ b/windows-qtcreator/Jenkinsfile @@ -0,0 +1,87 @@ +pipeline { + agent { + docker { + image 'windows-qtcreator' + args '-u root:root --privileged' + } + } + options { + copyArtifactPermission('*') + buildDiscarder(logRotator(numToKeepStr: "1000", artifactNumToKeepStr: "2")) + } + stages { + stage('shstk') { + steps { + script { + sh 'rm -rf /soft/shstk' + sh 'git clone -b master --single-branch --depth 1 --recursive https://git.shstk.ru/SHS/shstk.git /soft/shstk' + sh 'mkdir -p /soft/shstk_build_host && rm -rf /soft/shstk_build_host/*' + sh 'cd /soft/shstk_build_host && cmake -G Ninja -DICU=0 -DCROSSTOOLS=1 -DBUILD_NUMBER=9999 ../shstk' + sh 'cd /soft/shstk_build_host && cmake --build ./ --target install -j${JOBS_COUNT}' + sh 'ldconfig' + + sh 'mkdir -p /soft/shstk_build_windows && rm -rf /soft/shstk_build_windows/*' + sh 'cd /soft/shstk_build_windows && cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake -DCMAKE_INSTALL_PREFIX=/soft/windows -DCMAKE_PREFIX_PATH=/soft/qt/mingw_64 -DQT_HOST_PATH=/soft/qt/gcc_64 -DICU=0 -DLOCAL=1 -DQGLENGINE=1 -DQGLVIEW=0 -DPIP_BUILD_OPENCL=0 -DBUILD_NUMBER=9999 -DOpenCL_INCLUDE_DIRS=/soft/windows/include ../shstk/' + sh 'cd /soft/shstk_build_windows && cmake --build ./ --target install -j${JOBS_COUNT}' + } + } + } + + stage('SHS') { + steps { + script { + sh 'rm -rf /soft/SHS' + sh 'git clone -b v1_master --single-branch --depth 1 --recursive https://git.shstk.ru/SHS/SHS.git /soft/SHS' + sh 'mkdir -p /soft/SHS/build && rm -rf /soft/SHS/build/*' + sh 'cd /soft/SHS/build && cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake -DCMAKE_INSTALL_PREFIX=/soft/windows -DCMAKE_PREFIX_PATH=/soft/qt/mingw_64 -DQT_HOST_PATH=/soft/qt/gcc_64 -DSHS_ONLY_LIBS=1 -DBUILD_NUMBER=9999 -DSHS_QT_VERSION=6 ../src' + sh 'cd /soft/SHS/build && cmake --build ./ --target install -j${JOBS_COUNT}' + sh 'cp -vf /soft/SHS/builds/Windows_x86_64/*.dll /soft/windows/bin/' + sh 'cp -vf /soft/SHS/builds/Windows_x86_64/lang/* /soft/windows/lang/' + sh 'cp -rvf /soft/SHS/builds/Windows_x86_64/designer /soft/qt/mingw_64/plugins/' + } + } + } + + stage('llama') { + steps { + script { + sh 'rm -rf /soft/qt-creator-plugins' + sh 'git clone --single-branch --depth 1 https://github.com/cristianadam/llama.qtcreator.git /soft/qt-creator-plugins' + sh 'mkdir -p /soft/qt-creator-plugins/build && rm -rf /soft/qt-creator-plugins/build/*' + sh 'cd /soft/qt-creator-plugins/build && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake -DCMAKE_INSTALL_PREFIX=/soft/windows/qt-creator -DCMAKE_PREFIX_PATH=/soft/qt/mingw_64 -DQT_HOST_PATH=/soft/qt/gcc_64 -DQtCreator_DIR=/soft/qt-creator_build/cmake ../' + sh 'cd /soft/qt-creator-plugins/build && cmake --build ./ --target install -j${JOBS_COUNT}' + } + } + } + + stage('qt-creator-plugins') { + steps { + script { + sh 'rm -rf /soft/qt-creator-plugins' + sh 'git clone -b v18 --single-branch --depth 1 https://git.shstk.ru/SHS/qtcreator.git /soft/qt-creator-plugins' + sh 'mkdir -p /soft/qt-creator-plugins/build && rm -rf /soft/qt-creator-plugins/build/*' + sh 'cd /soft/qt-creator-plugins/build && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake -DCMAKE_INSTALL_PREFIX=/soft/windows/qt-creator -DCMAKE_PREFIX_PATH=/soft/qt/mingw_64 -DQT_HOST_PATH=/soft/qt/gcc_64 -DQtCreator_DIR=/soft/qt-creator_build/cmake ../project_fs' + sh 'cd /soft/qt-creator-plugins/build && cmake --build ./ --target install -j${JOBS_COUNT}' + } + } + } + + stage('deploy') { + steps { + script { + sh 'cd /soft/windows/qt-creator && cp -vfr /soft/qt/mingw_64/plugins ./' + sh 'cd /soft/windows/qt-creator && cp -vfr /soft/qt/gcc_64/plugins/designer/lib*.dll ./plugins/designer/' + sh 'cd /soft/windows/qt-creator && cp -vfr /soft/windows/lang/* ./translations/' + sh 'cd /soft/windows/qt-creator && cp -vfr /soft/qt/mingw_64/bin/* ./bin/' + sh 'cd /soft/windows/qt-creator && cp -vfrL /soft/windows/bin/* ./bin/ && rm -vf ./bin/llvm-*' + sh 'cd /soft/windows/qt-creator && cp -vf /usr/lib/gcc/x86_64-w64-mingw32/14-posix/*.dll ./bin/' + sh 'cd /soft/windows/qt-creator && for f in $(ls ./bin/*); do if [[ $(file -b $f | grep "ELF 64-bit") ]]; then rm -v $f; fi; done' + sh 'cd /soft/windows/qt-creator && zip -qr /soft/qt-creator-19_win_x64.zip *' + sh 'rm ./* || true' + sh 'mv -v /soft/qt-creator-19_win_x64.zip ./' + archiveArtifacts 'qt-creator-*.zip' + } + } + } + } +} diff --git a/windows-qtcreator/create_links.sh b/windows-qtcreator/create_links.sh new file mode 100644 index 0000000..ad3ca2a --- /dev/null +++ b/windows-qtcreator/create_links.sh @@ -0,0 +1,18 @@ +#! /bin/sh + +for file in lib*.so.*; do + if [ -f "$file" ]; then + base_name1="${file%.*}" + base_name2="${base_name1%.*}" + + if [ "$base_name1" != "$file" ]; then + ln -sf "$file" "$base_name1" + echo "$base_name1 -> $file" + fi + + if [ "$base_name2" != "$base_name1" ]; then + ln -sf "$file" "$base_name2" + echo "$base_name2 -> $file" + fi + fi +done