commit 97ee0cdd7b36342a382ecf22065d28d1b7a61f2b Author: Alexander Vodianov Date: Fri Sep 29 15:56:14 2023 +0300 first commit diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..caad994 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog + +## 1.0 + +### 29.09.2023 + +CHANGE: + +* Organization in git + +## 0.2 + +### 4.09.2023 + +ADD: + +* build requirements: + libavcodec-dev + libavformat-dev + libjpeg-dev + libopus-dev + libopenh264-dev + libswscale-dev + libvpx-dev + +CHANGE: + +* configure for qt build +* change UserID and GroupID from 2000 to 1000 + +## 0.1 + +### 18.08.2023 + +CREATE: + +* dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7120da8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,69 @@ +ARG DOCKER_REGISTRY=harbor.avroid.tech + +# https://hub.docker.com/_/ubuntu +FROM ${DOCKER_REGISTRY}/devops/base-build-image:1.0 +LABEL description="Linux image for Tavro build" \ + tools.qt.version="5.6.3" + +###QT BUILD### +ARG NEXUS_URL="https://nexus.avroid.tech" +ARG NEXUS_QT_REPO="qt_repo" \ + VERSION=5.6.3 + +COPY * /patches/ + +# Install packages for qt and dependencies +RUN apt update && \ + apt install -y \ + perl \ + libavcodec-dev \ + libavformat-dev \ + libjpeg-dev \ + libopus-dev \ + libopenh264-dev \ + libswscale-dev \ + libssl-dev \ + libvpx-dev \ + gperf \ + libegl1-mesa-dev \ + libgles2-mesa-dev \ + libfontconfig1-dev \ + libfreetype6-dev \ + libx11-dev \ + libx11-xcb-dev \ + libxext-dev \ + libxfixes-dev \ + libxi-dev \ + libxrender-dev \ + '^libxcb*' \ + libxkbcommon-dev \ + libxkbcommon-x11-dev \ + libgstreamer1.0-dev \ + libgstreamer-plugins-base1.0-dev \ + libharfbuzz-dev && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +#download, configure and build qt +RUN wget ${NEXUS_URL}/repository/${NEXUS_QT_REPO}/v${VERSION}/qt-everywhere-opensource-src-${VERSION}.tar.xz && tar -xJf qt-everywhere-opensource-src-${VERSION}.tar.xz && \ + ln -sf /usr/bin/python3 /usr/bin/python && \ + cd qt-everywhere* && for file in /patches/*.patch; do patch -p1 < /patches/0001_fixed_build_with_libxi.patch; done && \ + ./configure -release -opensource -confirm-license -nomake tests -nomake examples -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtdoc -skip qtmacextras -skip qtscript -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebview -skip qtwinextras -skip qtserialbus -system-xcb -system-harfbuzz -system-libjpeg -no-openssl && \ + make -j$(nproc) && make install -j$(nproc) && cd .. && rm -rf qt-everywhere* patches + +# Personalization +#------------------------------------------------------------------------------- +# +ARG UID=1000 +ARG GID=1000 +ARG USER=jenkins +ARG USER_GROUP=jenkins +ARG USER_HOME=/home/${USER} + +RUN (groupadd -g ${GID} ${USER_GROUP} || true) && \ + useradd -d ${USER_HOME} -g ${GID} -u ${UID} --shell /bin/bash ${USER} + +USER ${USER} +WORKDIR ${USER_HOME} + +CMD ["/bin/bash"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b530503 --- /dev/null +++ b/Makefile @@ -0,0 +1,32 @@ +.PHONY: all build push clean + +IMAGE_NAME = tavro-build-linux +IMAGE_GROUP = tavro +IMAGE_TAG = 1.0 +REVISION = +DOCKER_REGISTRY = harbor.avroid.tech + +all: + @echo 'DEFAULT:' + @echo ' make build' + @echo ' make push' + @echo ' make getTag' + @echo ' make clean' + +build: + DOCKER_BUILDKIT=1 docker build \ + -f Dockerfile \ + --platform linux/amd64 \ + -t $(DOCKER_REGISTRY)/$(IMAGE_GROUP)/$(IMAGE_NAME):$(IMAGE_TAG)$(REVISION) src/ + +push: +ifeq ($(CI), false) + docker login https://$(DOCKER_REGISTRY) +endif + docker push $(DOCKER_REGISTRY)/$(IMAGE_GROUP)/$(IMAGE_NAME):$(IMAGE_TAG)$(REVISION) + +getTag: + @echo $(IMAGE_TAG) + +clean: + docker rmi $(DOCKER_REGISTRY)/$(IMAGE_GROUP)/$(IMAGE_NAME):$(IMAGE_TAG)$(REVISION) diff --git a/README.md b/README.md new file mode 100644 index 0000000..c4191a6 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# tavro-build-linux + +## Данный репозиторий содержит build environment для сборки приложения Tavro под linux + +Для сборки образа выполните + +```bash +make build +``` + +Для загрузки образа в harbor выполните + +```bash +make push +``` +Для вывода тега докер образа выполните + +```bash +make getTag +``` + +Для удаления образа из системы выполните + +```bash +make clean +``` + +За версию докер образа отвечает переменная IMAGE_TAG в [Makefile](./Makefile#L5) diff --git a/src/0001_fixed_build_with_libxi.patch b/src/0001_fixed_build_with_libxi.patch new file mode 100644 index 0000000..41394fb --- /dev/null +++ b/src/0001_fixed_build_with_libxi.patch @@ -0,0 +1,17 @@ +--- a/qtbase/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp 2023-08-21 14:35:51.107483754 +0300 ++++ b/qtbase/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp 2023-08-21 16:14:51.554260285 +0300 +@@ -698,14 +698,6 @@ + " Minimum libXi version required is 1.7.4." + " Expect issues with touch behavior."); + } +-#elif LIBXI_MAJOR == 1 && (LIBXI_MINOR < 7 || (LIBXI_MINOR == 7 && LIBXI_PATCH < 4)) +- static bool allowTouchWarningShown = false; +- if (!allowTouchWarningShown) { +- allowTouchWarningShown = true; +- qWarning("Skipping XIAllowTouchEvents() due to not having libXi >= 1.7.4." +- " libXi version at build time was %d.%d.%d." +- " Expect issues with touch behavior.", LIBXI_MAJOR, LIBXI_MINOR, LIBXI_PATCH); +- } + #else + XIAllowTouchEvents(static_cast(m_xlib_display), xiDeviceEvent->deviceid, + xiDeviceEvent->detail, xiDeviceEvent->event, XIAcceptTouch);