Linux package: fix AppImage emulated native build and add RISC-V support (#130)
* create AppImage manually to allow cross build * add build support for riscv64 * add containerized build for deb
This commit is contained in:
parent
acc1fbd4aa
commit
d50c2ffbde
|
@ -1,12 +1,18 @@
|
||||||
##########################
|
##################################
|
||||||
# AppImage on Windows host
|
# Linux packageing on Windows host
|
||||||
##########################
|
##################################
|
||||||
|
|
||||||
# script run in docker
|
# script run in docker
|
||||||
/packages/appimage/01-in-docker.sh eol=lf
|
/packages/appimage/01-in-docker.sh eol=lf
|
||||||
|
/packages/debian/01-in-docker.sh eol=lf
|
||||||
|
/packages/debian/rules eol=lf
|
||||||
|
|
||||||
# text files to be packed
|
# text files to be packed
|
||||||
/packages/appimage/AppRun.sh eol=lf
|
/packages/appimage/AppRun.sh eol=lf
|
||||||
|
/packages/debian/changelog eol=lf
|
||||||
|
/packages/debian/compat eol=lf
|
||||||
|
/packages/debian/control eol=lf
|
||||||
|
/packages/debian/copyright eol=lf
|
||||||
/platform/linux/install.sh eol=lf
|
/platform/linux/install.sh eol=lf
|
||||||
/platform/linux/redpandaide.desktop.in eol=lf
|
/platform/linux/redpandaide.desktop.in eol=lf
|
||||||
/platform/linux/redpandaide.svg eol=lf
|
/platform/linux/redpandaide.svg eol=lf
|
||||||
|
|
116
BUILD.md
116
BUILD.md
|
@ -22,40 +22,83 @@ qmake variables:
|
||||||
- `XDG_ADAPTIVE_ICON=ON`: install the icon file following [freedesktop.org Icon Theme Specification](https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html) for adaptiveness to themes and sizes. Required by AppImage; recommended for Linux packaging if `PREFIX` set to `/usr`.
|
- `XDG_ADAPTIVE_ICON=ON`: install the icon file following [freedesktop.org Icon Theme Specification](https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html) for adaptiveness to themes and sizes. Required by AppImage; recommended for Linux packaging if `PREFIX` set to `/usr`.
|
||||||
- `LINUX_STATIC_IME_PLUGIN=ON` (make phase): link to static ime plugin. Recommended for building with static version of Qt; **DO NOT** set for dynamic version of Qt.
|
- `LINUX_STATIC_IME_PLUGIN=ON` (make phase): link to static ime plugin. Recommended for building with static version of Qt; **DO NOT** set for dynamic version of Qt.
|
||||||
|
|
||||||
## Ubuntu
|
## Debian and Its Derivatives
|
||||||
|
|
||||||
### 1. Install Compiler
|
### “deb” Package for Current OS
|
||||||
|
|
||||||
```bash
|
1. Install dependency:
|
||||||
apt install gcc g++ make gdb gdbserver
|
```bash
|
||||||
```
|
sudo apt install \
|
||||||
|
build-essential debhelper \
|
||||||
|
libqt5svg5-dev qtbase5-dev qtbase5-dev-tools qttools5-dev-tools
|
||||||
|
```
|
||||||
|
2. Build the package:
|
||||||
|
```bash
|
||||||
|
./packages/debian/builddeb.sh
|
||||||
|
```
|
||||||
|
3. Install the package:
|
||||||
|
```bash
|
||||||
|
sudo apt install /tmp/redpanda-cpp_*.deb
|
||||||
|
```
|
||||||
|
4. Run Red Panda C++:
|
||||||
|
```bash
|
||||||
|
RedPandaIDE
|
||||||
|
```
|
||||||
|
|
||||||
### 2. Install Qt 5 and Other Dependencies
|
### Build Packages for Multiple Architectures and Versions in Containers
|
||||||
|
|
||||||
```bash
|
Extra requirements for Windows host:
|
||||||
apt install qtbase5-dev qttools5-dev-tools libqt5svg5-dev git qterminal
|
- Docker uses WSL 2 based engine, or enable file sharing on the project folder (Settings > Resources > File sharing);
|
||||||
```
|
- PowerShell (Core) or Windows PowerShell.
|
||||||
|
|
||||||
### 3. Fetch Source Code
|
* Linux host:
|
||||||
|
```bash
|
||||||
|
DOCKER=docker # or podman
|
||||||
|
SOURCE_DIR=/build/RedPanda-CPP # source directory *in container*
|
||||||
|
|
||||||
```bash
|
MIRROR=mirrors.kernel.org # leave empty for default mirror
|
||||||
git clone https://github.com/royqh1979/RedPanda-CPP.git
|
PLATFORM=linux/amd64 # or linux/386, linux/arm64/v8, linux/arm/v7, linux/riscv64
|
||||||
```
|
IMAGE=debian:12 # or Ubuntu (e.g. ubuntu:22.04)
|
||||||
|
|
||||||
### 4. Build
|
$DOCKER run --rm -e MIRROR=$MIRROR -e SOURCE_DIR=$SOURCE_DIR -v $PWD:$SOURCE_DIR --platform $PLATFORM $IMAGE $SOURCE_DIR/packages/debian/01-in-docker.sh
|
||||||
|
```
|
||||||
|
* Windows host:
|
||||||
|
```ps1
|
||||||
|
$DOCKER = "docker" # or "podman"
|
||||||
|
$SOURCE_DIR = "/build/RedPanda-CPP" # source directory *in container*
|
||||||
|
|
||||||
```bash
|
$MIRROR = "mirrors.kernel.org" # leave empty for default mirror
|
||||||
cd RedPanda-CPP/
|
$PLATFORM = "linux/amd64" # or "linux/386", "linux/arm64/v8", "linux/arm/v7", "linux/riscv64"
|
||||||
qmake Red_Panda_CPP.pro
|
$IMAGE = "debian:12" # or Ubuntu (e.g. "ubuntu:22.04")
|
||||||
make -j$(nproc)
|
|
||||||
sudo make install
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. Run
|
& $DOCKER run --rm -e MIRROR=$MIRROR -e SOURCE_DIR=$SOURCE_DIR -v "$(Get-Location):$SOURCE_DIR" --platform $PLATFORM $IMAGE $SOURCE_DIR/packages/debian/01-in-docker.sh
|
||||||
|
```
|
||||||
|
|
||||||
```bash
|
### Manual Install
|
||||||
RedPandaIDE
|
|
||||||
```
|
1. Install compiler
|
||||||
|
```bash
|
||||||
|
apt install gcc g++ make gdb gdbserver
|
||||||
|
```
|
||||||
|
2. Install Qt 5 and other dependencies
|
||||||
|
```bash
|
||||||
|
apt install qtbase5-dev qttools5-dev-tools libqt5svg5-dev git qterminal
|
||||||
|
```
|
||||||
|
3. Fetch source code
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/royqh1979/RedPanda-CPP.git
|
||||||
|
```
|
||||||
|
4. Build
|
||||||
|
```bash
|
||||||
|
cd RedPanda-CPP/
|
||||||
|
qmake Red_Panda_CPP.pro
|
||||||
|
make -j$(nproc)
|
||||||
|
sudo make install
|
||||||
|
```
|
||||||
|
5. Run
|
||||||
|
```bash
|
||||||
|
RedPandaIDE
|
||||||
|
```
|
||||||
|
|
||||||
## Arch Linux
|
## Arch Linux
|
||||||
|
|
||||||
|
@ -74,13 +117,13 @@ Note that makepkg checks out HEAD of the repo, so any change should be committed
|
||||||
- PowerShell (Core) or Windows PowerShell.
|
- PowerShell (Core) or Windows PowerShell.
|
||||||
2. Prepare build environment. Linux host:
|
2. Prepare build environment. Linux host:
|
||||||
```bash
|
```bash
|
||||||
ARCH=x86_64 # or aarch64
|
ARCH=x86_64 # or aarch64, riscv64
|
||||||
DOCKER=docker # or podman
|
DOCKER=docker # or podman
|
||||||
$DOCKER build -t redpanda-builder-$ARCH packages/appimage/dockerfile-$ARCH
|
$DOCKER build -t redpanda-builder-$ARCH packages/appimage/dockerfile-$ARCH
|
||||||
```
|
```
|
||||||
Windows host:
|
Windows host:
|
||||||
```ps1
|
```ps1
|
||||||
$ARCH = "x86_64" # or "aarch64" someday Docker or Podman is available on WoA
|
$ARCH = "x86_64" # or "aarch64", "riscv64"
|
||||||
$DOCKER = "docker" # or "podman"
|
$DOCKER = "docker" # or "podman"
|
||||||
& $DOCKER build -t redpanda-builder-$ARCH packages/appimage/dockerfile-$ARCH
|
& $DOCKER build -t redpanda-builder-$ARCH packages/appimage/dockerfile-$ARCH
|
||||||
```
|
```
|
||||||
|
@ -98,7 +141,24 @@ Note that makepkg checks out HEAD of the repo, so any change should be committed
|
||||||
```
|
```
|
||||||
4. Run Red Panda C++.
|
4. Run Red Panda C++.
|
||||||
```bash
|
```bash
|
||||||
./dist/RedPandaIDE-x86_64.AppImage # or *-aarch64.AppImage
|
./dist/RedPandaIDE-x86_64.AppImage # or *-aarch64.AppImage, *-riscv64.AppImage
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: AppImage, in which format AppImageKit is shipped, is incompatable with QEMU user space emulator, so you cannot build AArch64 AppImage on x86-64, and vice versa.
|
## Emulated Native Build for Foreign Architectures
|
||||||
|
|
||||||
|
It is possible to build Red Panda C++ for foreign architectures using targets’ native toolchains with QEMU user space emulation.
|
||||||
|
|
||||||
|
Note: Always run emulated native build **in containers**. Mixing architectures may kill your system.
|
||||||
|
|
||||||
|
For Linux host, install statically linked QEMU user space emulator (package name is likely `qemu-user-static`) and make sure that binfmt support is enabled.
|
||||||
|
|
||||||
|
For Windows host, Docker and Podman should have QEMU user space emulation enabled. If not,
|
||||||
|
* For Docker:
|
||||||
|
```ps1
|
||||||
|
docker run --rm --privileged multiarch/qemu-user-static:register
|
||||||
|
```
|
||||||
|
* For Podman, whose virtual machine is based on Fedora WSL, simply enable binfmt support:
|
||||||
|
```ps1
|
||||||
|
wsl -d podman-machine-default sudo cp /usr/lib/binfmt.d/qemu-aarch64-static.conf /proc/sys/fs/binfmt_misc/register
|
||||||
|
wsl -d podman-machine-default sudo cp /usr/lib/binfmt.d/qemu-riscv64-static.conf /proc/sys/fs/binfmt_misc/register
|
||||||
|
```
|
||||||
|
|
116
BUILD_cn.md
116
BUILD_cn.md
|
@ -25,40 +25,83 @@ qmake 变量:
|
||||||
- `XDG_ADAPTIVE_ICON=ON`:遵循 [freedesktop.org 图标主题规范](https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html)安装图标,以适应不同的主题和尺寸。AppImage 需要启用此项;Linux 打包 `PREFIX=/usr` 时推荐启用此项。
|
- `XDG_ADAPTIVE_ICON=ON`:遵循 [freedesktop.org 图标主题规范](https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html)安装图标,以适应不同的主题和尺寸。AppImage 需要启用此项;Linux 打包 `PREFIX=/usr` 时推荐启用此项。
|
||||||
- `LINUX_STATIC_IME_PLUGIN=ON`(make 阶段):静态链接输入法插件。推荐在使用静态版本的 Qt 编译时启用;**不要**在使用动态版本的 Qt 编译时启用。
|
- `LINUX_STATIC_IME_PLUGIN=ON`(make 阶段):静态链接输入法插件。推荐在使用静态版本的 Qt 编译时启用;**不要**在使用动态版本的 Qt 编译时启用。
|
||||||
|
|
||||||
## Ubuntu
|
## Debian 及其衍生版本
|
||||||
|
|
||||||
### 1.安装编译器
|
### 适用于当前系统的 deb 包
|
||||||
|
|
||||||
```bash
|
1. 安装依赖包:
|
||||||
apt install gcc g++ make gdb gdbserver
|
```bash
|
||||||
```
|
sudo apt install \
|
||||||
|
build-essential debhelper \
|
||||||
|
libqt5svg5-dev qtbase5-dev qtbase5-dev-tools qttools5-dev-tools
|
||||||
|
```
|
||||||
|
2. 构建 deb 包:
|
||||||
|
```bash
|
||||||
|
./packages/debian/builddeb.sh
|
||||||
|
```
|
||||||
|
3. 安装 deb 包:
|
||||||
|
```bash
|
||||||
|
sudo apt install /tmp/redpanda-cpp_*.deb
|
||||||
|
```
|
||||||
|
4. 运行小熊猫 C++:
|
||||||
|
```bash
|
||||||
|
RedPandaIDE
|
||||||
|
```
|
||||||
|
|
||||||
### 2.安装QT5和依赖包
|
### 在容器中构建适用于多架构/版本的包
|
||||||
|
|
||||||
```bash
|
Windows 宿主的额外要求:
|
||||||
apt install qtbase5-dev qttools5-dev-tools libqt5svg5-dev git qterminal
|
- Docker 使用基于 WSL 2 的引擎,或者对此项目文件夹启用文件共享(Settings > Resources > File sharing);
|
||||||
```
|
- PowerShell (Core) 或 Windows PowerShell。
|
||||||
|
|
||||||
### 3.下载源码
|
* Linux 宿主:
|
||||||
|
```bash
|
||||||
|
DOCKER=docker # 或 podman
|
||||||
|
SOURCE_DIR=/build/RedPanda-CPP # *容器内*的源代码路径
|
||||||
|
|
||||||
```bash
|
MIRROR=mirrors.ustc.edu.cn # 留空以使用默认的镜像站
|
||||||
git clone https://gitee.com/royqh1979/RedPanda-CPP.git
|
PLATFORM=linux/amd64 # 或 linux/386、linux/arm64/v8、linux/arm/v7、linux/riscv64
|
||||||
```
|
IMAGE=debian:12 # 或 Ubuntu(如 ubuntu:22.04)
|
||||||
|
|
||||||
### 4.编译
|
$DOCKER run --rm -e MIRROR=$MIRROR -e SOURCE_DIR=$SOURCE_DIR -v $PWD:$SOURCE_DIR --platform $PLATFORM $IMAGE $SOURCE_DIR/packages/debian/01-in-docker.sh
|
||||||
|
```
|
||||||
|
* Windows 宿主:
|
||||||
|
```ps1
|
||||||
|
$DOCKER = "docker" # 或 "podman"
|
||||||
|
$SOURCE_DIR = "/build/RedPanda-CPP" # *容器内*的源代码路径
|
||||||
|
|
||||||
```bash
|
$MIRROR = "mirrors.ustc.edu.cn" # 留空以使用默认的镜像站
|
||||||
cd RedPanda-CPP/
|
$PLATFORM = "linux/amd64" # 或 "linux/386"、"linux/arm64/v8"、"linux/arm/v7"、"linux/riscv64"
|
||||||
qmake Red_Panda_CPP.pro
|
$IMAGE = "debian:12" # 或 Ubuntu(如 "ubuntu:22.04")
|
||||||
make -j$(nproc)
|
|
||||||
sudo make install
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5.运行
|
& $DOCKER run --rm -e MIRROR=$MIRROR -e SOURCE_DIR=$SOURCE_DIR -v "$(Get-Location):$SOURCE_DIR" --platform $PLATFORM $IMAGE $SOURCE_DIR/packages/debian/01-in-docker.sh
|
||||||
|
```
|
||||||
|
|
||||||
```bash
|
### 手动安装
|
||||||
RedPandaIDE
|
|
||||||
```
|
1. 安装编译器
|
||||||
|
```bash
|
||||||
|
apt install gcc g++ make gdb gdbserver
|
||||||
|
```
|
||||||
|
2. 安装 Qt 5 和依赖包
|
||||||
|
```bash
|
||||||
|
apt install qtbase5-dev qttools5-dev-tools libqt5svg5-dev git qterminal
|
||||||
|
```
|
||||||
|
3. 下载源码
|
||||||
|
```bash
|
||||||
|
git clone https://gitee.com/royqh1979/RedPanda-CPP.git
|
||||||
|
```
|
||||||
|
4. 编译
|
||||||
|
```bash
|
||||||
|
cd RedPanda-CPP/
|
||||||
|
qmake Red_Panda_CPP.pro
|
||||||
|
make -j$(nproc)
|
||||||
|
sudo make install
|
||||||
|
```
|
||||||
|
5. 运行
|
||||||
|
```bash
|
||||||
|
RedPandaIDE
|
||||||
|
```
|
||||||
|
|
||||||
## Arch Linux 及衍生版本
|
## Arch Linux 及衍生版本
|
||||||
|
|
||||||
|
@ -77,13 +120,13 @@ RedPandaIDE
|
||||||
- PowerShell (Core) 或 Windows PowerShell。
|
- PowerShell (Core) 或 Windows PowerShell。
|
||||||
2. 准备构建环境。Linux 宿主:
|
2. 准备构建环境。Linux 宿主:
|
||||||
```bash
|
```bash
|
||||||
ARCH=x86_64 # 或 aarch64
|
ARCH=x86_64 # 或 aarch64、riscv64
|
||||||
DOCKER=docker # 或 podman
|
DOCKER=docker # 或 podman
|
||||||
$DOCKER build -t redpanda-builder-$ARCH packages/appimage/dockerfile-$ARCH
|
$DOCKER build -t redpanda-builder-$ARCH packages/appimage/dockerfile-$ARCH
|
||||||
```
|
```
|
||||||
Windows 宿主:
|
Windows 宿主:
|
||||||
```ps1
|
```ps1
|
||||||
$ARCH = "x86_64" # 或 "aarch64"(如果将来 Docker 或 Podman 支持 WoA)
|
$ARCH = "x86_64" # 或 "aarch64"、"riscv64"
|
||||||
$DOCKER = "docker" # 或 "podman"
|
$DOCKER = "docker" # 或 "podman"
|
||||||
& $DOCKER build -t redpanda-builder-$ARCH packages/appimage/dockerfile-$ARCH
|
& $DOCKER build -t redpanda-builder-$ARCH packages/appimage/dockerfile-$ARCH
|
||||||
```
|
```
|
||||||
|
@ -101,7 +144,24 @@ RedPandaIDE
|
||||||
```
|
```
|
||||||
4. 运行小熊猫 C++.
|
4. 运行小熊猫 C++.
|
||||||
```bash
|
```bash
|
||||||
./dist/RedPandaIDE-x86_64.AppImage # 或 *-aarch64.AppImage
|
./dist/RedPandaIDE-x86_64.AppImage # 或 *-aarch64.AppImage、*-riscv64.AppImage
|
||||||
```
|
```
|
||||||
|
|
||||||
注意:AppImage 与 QEMU 用户态模拟不兼容,使用此格式的 AppImageKit 工具自然不能用 QEMU 用户态模拟来运行。因此不能在 x86-64 系统上构建 AArch64 AppImage,反之亦然。
|
## 异架构的模拟本机构建(emulated native build)
|
||||||
|
|
||||||
|
可以借助 QEMU 用户空间模拟,运行目标架构的本机工具链,来构建小熊猫 C++。
|
||||||
|
|
||||||
|
注意:始终**在容器中**运行模拟本机构建,因为混用不同架构的程序和库可能会损坏系统。
|
||||||
|
|
||||||
|
对于 Linux 宿主,需要安装静态链接的 QEMU 用户空间模拟器(包名通常为 `qemu-user-static`)并确认已经启用 binfmt 支持。
|
||||||
|
|
||||||
|
对于 Windows 宿主,Docker 和 Podman 应该已经启用了 QEMU 用户空间模拟。如果没有启用,
|
||||||
|
* Docker:
|
||||||
|
```ps1
|
||||||
|
docker run --rm --privileged multiarch/qemu-user-static:register
|
||||||
|
```
|
||||||
|
* Podman(其虚拟机基于 Fedora WSL)只需要启用 binfmt 支持:
|
||||||
|
```ps1
|
||||||
|
wsl -d podman-machine-default sudo cp /usr/lib/binfmt.d/qemu-aarch64-static.conf /proc/sys/fs/binfmt_misc/register
|
||||||
|
wsl -d podman-machine-default sudo cp /usr/lib/binfmt.d/qemu-riscv64-static.conf /proc/sys/fs/binfmt_misc/register
|
||||||
|
```
|
||||||
|
|
|
@ -4,6 +4,8 @@ set -xe
|
||||||
|
|
||||||
VERSION=$(sed -nr -e '/APP_VERSION\s*=/ s/APP_VERSION\s*=\s*(([0-9]+\.)*[0-9]+)\s*/\1/p' /build/RedPanda-CPP/Red_Panda_CPP.pro)
|
VERSION=$(sed -nr -e '/APP_VERSION\s*=/ s/APP_VERSION\s*=\s*(([0-9]+\.)*[0-9]+)\s*/\1/p' /build/RedPanda-CPP/Red_Panda_CPP.pro)
|
||||||
APPIMAGE_FILE=RedPandaIDE-$VERSION-$CARCH.AppImage
|
APPIMAGE_FILE=RedPandaIDE-$VERSION-$CARCH.AppImage
|
||||||
|
RUNTIME_FILE=/opt/appimage-runtime
|
||||||
|
RUNTIME_SIZE=$(wc -c <$RUNTIME_FILE)
|
||||||
|
|
||||||
# build RedPanda C++
|
# build RedPanda C++
|
||||||
mkdir -p /build/redpanda-build
|
mkdir -p /build/redpanda-build
|
||||||
|
@ -27,7 +29,9 @@ cp /usr/local/bin/alacritty usr/bin
|
||||||
|
|
||||||
# create AppImage
|
# create AppImage
|
||||||
cd /build
|
cd /build
|
||||||
appimagetool --appimage-extract-and-run RedPandaIDE.AppDir $APPIMAGE_FILE
|
mksquashfs RedPandaIDE.AppDir $APPIMAGE_FILE -offset $RUNTIME_SIZE -comp zstd -root-owned -noappend -b 1M -mkfs-time 0
|
||||||
|
dd if=$RUNTIME_FILE of=$APPIMAGE_FILE conv=notrunc
|
||||||
|
chmod +x $APPIMAGE_FILE
|
||||||
|
|
||||||
# copy back to host
|
# copy back to host
|
||||||
mkdir -p /build/RedPanda-CPP/dist
|
mkdir -p /build/RedPanda-CPP/dist
|
||||||
|
|
|
@ -1,27 +1,58 @@
|
||||||
# RHEL would be the best choice, if EL 8 were released on time.
|
# RHEL devtoolset, which provides new version of GCC targetting old libgcc_s and libstdc++, is the key to compatibility.
|
||||||
# AppImageKit AArch64 requires Ubuntu 18.04 or later.
|
# EL 7 is modern enough for apps and libs.
|
||||||
FROM docker.io/arm64v8/ubuntu:18.04
|
# CentOS 7 aarch64 container image is a mess. Use Oracle instead.
|
||||||
|
FROM docker.io/arm64v8/oraclelinux:7
|
||||||
|
|
||||||
# System
|
# System
|
||||||
RUN sed -i 's|ports.ubuntu.com|mirrors.ustc.edu.cn|g' /etc/apt/sources.list && \
|
RUN yum-config-manager --enable ol7_optional_latest && \
|
||||||
export DEBIAN_FRONTEND=noninteractive && \
|
yum install -y oracle-softwarecollection-release-el7 oracle-epel-release-el7 && \
|
||||||
apt update && \
|
yum upgrade -y && \
|
||||||
apt upgrade -y && \
|
yum install -y \
|
||||||
apt install --no-install-recommends -y ca-certificates cargo curl cmake extra-cmake-modules file gcc g++ make \
|
# general devtools
|
||||||
libatspi2.0-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgl1-mesa-dev libxkbcommon-x11-dev
|
devtoolset-7-gcc devtoolset-7-gcc-c++ make \
|
||||||
|
# squashfs-tools libs
|
||||||
|
libzstd-devel \
|
||||||
|
# Qt build tools
|
||||||
|
file which \
|
||||||
|
# Qt libs
|
||||||
|
at-spi2-core-devel dbus-devel fontconfig-devel freetype-devel glib2-devel libXrender-devel libxcb-devel libxkbcommon-devel libxkbcommon-x11-devel mesa-libGL-devel xcb-util-devel \
|
||||||
|
# fcitx5-qt build tools
|
||||||
|
cmake3 extra-cmake-modules && \
|
||||||
|
yum clean all
|
||||||
|
|
||||||
# AppImageKit
|
ARG DEVTOOLSET_ROOTPATH=/opt/rh/devtoolset-7/root
|
||||||
RUN curl -L -o /usr/local/bin/appimagetool 'https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-aarch64.AppImage' && \
|
ENV PATH=${DEVTOOLSET_ROOTPATH}/usr/bin:${PATH}
|
||||||
chmod +x /usr/local/bin/appimagetool
|
ENV LD_LIBRARY_PATH=${DEVTOOLSET_ROOTPATH}/usr/lib64
|
||||||
|
|
||||||
|
ARG SQUASHFS_TOOLS_VERSION=4.4
|
||||||
|
ARG QT_MAJOR_MINOR=5.12
|
||||||
|
ARG QT_PATCH=12
|
||||||
|
ARG QT_VERSION=${QT_MAJOR_MINOR}.${QT_PATCH}
|
||||||
|
ARG FCITX5_QT_VERSION=5.0.17
|
||||||
|
ARG ALACRITTY_VERSION=0.12.2
|
||||||
|
|
||||||
|
# AppImage runtime
|
||||||
|
RUN curl -L -o /opt/appimage-runtime 'https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-aarch64'
|
||||||
|
|
||||||
|
# squashfs-tools
|
||||||
|
RUN mkdir -p /build/squashfs-tools && \
|
||||||
|
cd /build/squashfs-tools && \
|
||||||
|
curl -L -o squashfs-tools-${SQUASHFS_TOOLS_VERSION}.tar.gz "https://github.com/plougher/squashfs-tools/archive/refs/tags/${SQUASHFS_TOOLS_VERSION}.tar.gz" && \
|
||||||
|
tar xf squashfs-tools-${SQUASHFS_TOOLS_VERSION}.tar.gz && \
|
||||||
|
cd squashfs-tools-${SQUASHFS_TOOLS_VERSION}/squashfs-tools && \
|
||||||
|
make ZSTD_SUPPORT=1 -j$(nproc) && \
|
||||||
|
make install && \
|
||||||
|
# cleanup
|
||||||
|
cd / && \
|
||||||
|
rm -r /build/squashfs-tools
|
||||||
|
|
||||||
# Qt 5
|
# Qt 5
|
||||||
RUN mkdir -p /build/qt5 && \
|
RUN mkdir -p /build/qt5 && \
|
||||||
cd /build/qt5 && \
|
cd /build/qt5 && \
|
||||||
curl -O 'https://download.qt.io/archive/qt/5.12/5.12.12/submodules/qt{base,svg,tools}-everywhere-src-5.12.12.tar.xz' && \
|
curl -O "https://download.qt.io/archive/qt/${QT_MAJOR_MINOR}/${QT_VERSION}/submodules/qt{base,svg,tools}-everywhere-src-${QT_VERSION}.tar.xz" && \
|
||||||
# fcitx5-qt 5.0.6 is the last version compatible with ubuntu 18.04’s cmake 3.10
|
curl -L -o fcitx5-qt-${FCITX5_QT_VERSION}.tar.gz "https://github.com/fcitx/fcitx5-qt/archive/refs/tags/${FCITX5_QT_VERSION}.tar.gz" && \
|
||||||
curl -L -o fcitx5-qt-5.0.6.tar.gz 'https://github.com/fcitx/fcitx5-qt/archive/refs/tags/5.0.6.tar.gz' && \
|
tar xf qtbase-everywhere-src-${QT_VERSION}.tar.xz && \
|
||||||
tar xf qtbase-everywhere-src-5.12.12.tar.xz && \
|
cd qtbase-everywhere-src-${QT_VERSION} && \
|
||||||
cd qtbase-everywhere-src-5.12.12 && \
|
|
||||||
./configure \
|
./configure \
|
||||||
-prefix /usr/local \
|
-prefix /usr/local \
|
||||||
-opensource -confirm-license \
|
-opensource -confirm-license \
|
||||||
|
@ -32,40 +63,42 @@ RUN mkdir -p /build/qt5 && \
|
||||||
make install && \
|
make install && \
|
||||||
# svg package
|
# svg package
|
||||||
cd /build/qt5 && \
|
cd /build/qt5 && \
|
||||||
tar xf qtsvg-everywhere-src-5.12.12.tar.xz && \
|
tar xf qtsvg-everywhere-src-${QT_VERSION}.tar.xz && \
|
||||||
cd qtsvg-everywhere-src-5.12.12 && \
|
cd qtsvg-everywhere-src-${QT_VERSION} && \
|
||||||
qmake . && \
|
qmake . && \
|
||||||
make -j$(nproc) && \
|
make -j$(nproc) && \
|
||||||
make install && \
|
make install && \
|
||||||
# tools package
|
# tools package
|
||||||
cd /build/qt5 && \
|
cd /build/qt5 && \
|
||||||
tar xf qttools-everywhere-src-5.12.12.tar.xz && \
|
tar xf qttools-everywhere-src-${QT_VERSION}.tar.xz && \
|
||||||
cd qttools-everywhere-src-5.12.12 && \
|
cd qttools-everywhere-src-${QT_VERSION} && \
|
||||||
qmake . && \
|
qmake . && \
|
||||||
make -j$(nproc) && \
|
make -j$(nproc) && \
|
||||||
make install && \
|
make install && \
|
||||||
# fcitx5 package
|
# fcitx5 package
|
||||||
cd /build/qt5 && \
|
cd /build/qt5 && \
|
||||||
tar xf fcitx5-qt-5.0.6.tar.gz && \
|
tar xf fcitx5-qt-${FCITX5_QT_VERSION}.tar.gz && \
|
||||||
cd fcitx5-qt-5.0.6 && \
|
cd fcitx5-qt-${FCITX5_QT_VERSION} && \
|
||||||
cmake . -Bbuild -DCMAKE_MODULE_PATH=/usr/local/lib/cmake -DCMAKE_PREFIX_PATH=/usr/local -DCMAKE_BUILD_TYPE=Release -DENABLE_QT4=Off -DENABLE_QT5=On -DENABLE_QT6=Off -DBUILD_ONLY_PLUGIN=On -DBUILD_STATIC_PLUGIN=On && \
|
cmake3 . -Bbuild -DCMAKE_MODULE_PATH=/usr/local/lib/cmake -DCMAKE_PREFIX_PATH=/usr/local -DCMAKE_BUILD_TYPE=Release -DENABLE_QT4=Off -DENABLE_QT5=On -DENABLE_QT6=Off -DBUILD_ONLY_PLUGIN=On -DBUILD_STATIC_PLUGIN=On && \
|
||||||
# cmake 3.10 is too old to build with `--parallel` option
|
cmake3 --build build --parallel && \
|
||||||
cmake --build build -- -j$(nproc) && \
|
# cmake 3.14 is too old to `--install`
|
||||||
cmake --install build && \
|
cmake3 --build build -- install && \
|
||||||
# cleanup
|
# cleanup
|
||||||
cd / && \
|
cd / && \
|
||||||
rm -r /build/qt5
|
rm -r /build/qt5
|
||||||
|
|
||||||
# Alacritty
|
# Alacritty
|
||||||
RUN mkdir -p /build/alacritty && \
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.71.1 && \
|
||||||
|
. ~/.cargo/env && \
|
||||||
|
mkdir -p /build/alacritty && \
|
||||||
cd /build/alacritty && \
|
cd /build/alacritty && \
|
||||||
curl -L -o alacritty-0.11.0.tar.gz 'https://github.com/alacritty/alacritty/archive/refs/tags/v0.11.0.tar.gz' && \
|
curl -L -o alacritty-${ALACRITTY_VERSION}.tar.gz "https://github.com/alacritty/alacritty/archive/refs/tags/v${ALACRITTY_VERSION}.tar.gz" && \
|
||||||
tar xf alacritty-0.11.0.tar.gz && \
|
tar xf alacritty-${ALACRITTY_VERSION}.tar.gz && \
|
||||||
cd alacritty-0.11.0 && \
|
cd alacritty-${ALACRITTY_VERSION} && \
|
||||||
/bin/echo -e '[profile.relminsize]\ninherits="release"\ndebug=false\nstrip=true\nopt-level="s"' >>Cargo.toml && \
|
echo -e '[profile.minsize]\ninherits="release"\ndebug=false\nstrip=true\nopt-level="s"' >>Cargo.toml && \
|
||||||
cargo build --profile relminsize && \
|
cargo build --profile minsize && \
|
||||||
cp target/relminsize/alacritty /usr/local/bin && \
|
cp target/minsize/alacritty /usr/local/bin && \
|
||||||
# cleanup
|
# cleanup
|
||||||
cd / && \
|
cd / && \
|
||||||
rm -r /build/alacritty && \
|
rm -r /build/alacritty && \
|
||||||
rm -r ~/.cargo/registry
|
rustup self uninstall -y
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
FROM docker.io/riscv64/ubuntu:20.04
|
||||||
|
|
||||||
|
# System
|
||||||
|
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||||
|
apt update && \
|
||||||
|
apt upgrade -y && \
|
||||||
|
apt install --no-install-recommends -y \
|
||||||
|
# general utils
|
||||||
|
ca-certificates curl xz-utils \
|
||||||
|
# general devtools
|
||||||
|
gcc g++ make \
|
||||||
|
# Qt build tools
|
||||||
|
file \
|
||||||
|
# Qt libs
|
||||||
|
libatspi2.0-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgl1-mesa-dev libxkbcommon-x11-dev \
|
||||||
|
# fcitx-qt5 build tools
|
||||||
|
cmake extra-cmake-modules \
|
||||||
|
# appimage tools
|
||||||
|
squashfs-tools && \
|
||||||
|
apt clean && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
ARG QT_MAJOR_MINOR=5.12
|
||||||
|
ARG QT_PATCH=12
|
||||||
|
ARG QT_VERSION=${QT_MAJOR_MINOR}.${QT_PATCH}
|
||||||
|
ARG FCITX5_QT_VERSION=5.0.17
|
||||||
|
ARG ALACRITTY_VERSION=0.12.2
|
||||||
|
|
||||||
|
# AppImage runtime
|
||||||
|
RUN curl -L -o /opt/appimage-runtime 'https://github.com/cyano-linux/appimage-riscv64/releases/download/20230808.0/runtime-riscv64'
|
||||||
|
|
||||||
|
# Qt 5
|
||||||
|
RUN mkdir -p /build/qt5 && \
|
||||||
|
cd /build/qt5 && \
|
||||||
|
curl -O "https://download.qt.io/archive/qt/${QT_MAJOR_MINOR}/${QT_VERSION}/submodules/qt{base,svg,tools}-everywhere-src-${QT_VERSION}.tar.xz" && \
|
||||||
|
curl -L -o fcitx5-qt-${FCITX5_QT_VERSION}.tar.gz "https://github.com/fcitx/fcitx5-qt/archive/refs/tags/${FCITX5_QT_VERSION}.tar.gz" && \
|
||||||
|
tar xf qtbase-everywhere-src-${QT_VERSION}.tar.xz && \
|
||||||
|
cd qtbase-everywhere-src-${QT_VERSION} && \
|
||||||
|
./configure \
|
||||||
|
-prefix /usr/local \
|
||||||
|
-opensource -confirm-license \
|
||||||
|
-optimize-size -no-shared -static -platform linux-g++ -no-use-gold-linker \
|
||||||
|
-qt-zlib -qt-doubleconversion -iconv -no-icu -qt-pcre -no-openssl -system-freetype -fontconfig -qt-harfbuzz -qt-libjpeg -qt-libpng -qt-xcb -qt-sqlite \
|
||||||
|
-nomake examples -nomake tests -nomake tools && \
|
||||||
|
make -j$(nproc) && \
|
||||||
|
make install && \
|
||||||
|
# svg package
|
||||||
|
cd /build/qt5 && \
|
||||||
|
tar xf qtsvg-everywhere-src-${QT_VERSION}.tar.xz && \
|
||||||
|
cd qtsvg-everywhere-src-${QT_VERSION} && \
|
||||||
|
qmake . && \
|
||||||
|
make -j$(nproc) && \
|
||||||
|
make install && \
|
||||||
|
# tools package
|
||||||
|
cd /build/qt5 && \
|
||||||
|
tar xf qttools-everywhere-src-${QT_VERSION}.tar.xz && \
|
||||||
|
cd qttools-everywhere-src-${QT_VERSION} && \
|
||||||
|
qmake . && \
|
||||||
|
make -j$(nproc) && \
|
||||||
|
make install && \
|
||||||
|
# fcitx5 package
|
||||||
|
cd /build/qt5 && \
|
||||||
|
tar xf fcitx5-qt-${FCITX5_QT_VERSION}.tar.gz && \
|
||||||
|
cd fcitx5-qt-${FCITX5_QT_VERSION} && \
|
||||||
|
cmake . -Bbuild -DCMAKE_MODULE_PATH=/usr/local/lib/cmake -DCMAKE_PREFIX_PATH=/usr/local -DCMAKE_BUILD_TYPE=Release -DENABLE_QT4=Off -DENABLE_QT5=On -DENABLE_QT6=Off -DBUILD_ONLY_PLUGIN=On -DBUILD_STATIC_PLUGIN=On && \
|
||||||
|
cmake --build build --parallel && \
|
||||||
|
cmake --install build && \
|
||||||
|
# cleanup
|
||||||
|
cd / && \
|
||||||
|
rm -r /build/qt5
|
||||||
|
|
||||||
|
# Alacritty
|
||||||
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.71.1 && \
|
||||||
|
. ~/.cargo/env && \
|
||||||
|
mkdir -p /build/alacritty && \
|
||||||
|
cd /build/alacritty && \
|
||||||
|
curl -L -o alacritty-${ALACRITTY_VERSION}.tar.gz "https://github.com/alacritty/alacritty/archive/refs/tags/v${ALACRITTY_VERSION}.tar.gz" && \
|
||||||
|
tar xf alacritty-${ALACRITTY_VERSION}.tar.gz && \
|
||||||
|
cd alacritty-${ALACRITTY_VERSION} && \
|
||||||
|
/bin/echo -e '[profile.minsize]\ninherits="release"\ndebug=false\nstrip=true\nopt-level="s"' >>Cargo.toml && \
|
||||||
|
cargo build --profile minsize && \
|
||||||
|
cp target/minsize/alacritty /usr/local/bin && \
|
||||||
|
# cleanup
|
||||||
|
cd / && \
|
||||||
|
rm -r /build/alacritty && \
|
||||||
|
rustup self uninstall -y
|
|
@ -1,32 +1,56 @@
|
||||||
# RHEL devtoolset, which provides new version of GCC targetting old libgcc_s and libstdc++, is the key to compatibility.
|
# RHEL devtoolset, which provides new version of GCC targetting old libgcc_s and libstdc++, is the key to compatibility.
|
||||||
# AppImageKit x86-64 requires EL 7 or later.
|
# EL 7 is modern enough for apps and libs.
|
||||||
FROM docker.io/amd64/centos:7
|
FROM docker.io/amd64/centos:7
|
||||||
|
|
||||||
# System
|
# System
|
||||||
RUN sed -i 's|^mirrorlist=|#mirrorlist=|g; s|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' /etc/yum.repos.d/CentOS-Base.repo && \
|
RUN yum install -y centos-release-scl-rh epel-release && \
|
||||||
yum install -y centos-release-scl-rh epel-release && \
|
|
||||||
sed -i 's|^mirrorlist=|#mirrorlist=|g; s|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo && \
|
|
||||||
sed -i 's|^metalink=|#metalink=|g; s|^#baseurl=https\?://download.fedoraproject.org/pub/epel/|baseurl=https://mirrors.ustc.edu.cn/epel/|g' /etc/yum.repos.d/epel.repo && \
|
|
||||||
yum upgrade -y && \
|
yum upgrade -y && \
|
||||||
yum install -y cargo cmake3 extra-cmake-modules file make which \
|
yum install -y \
|
||||||
|
# general devtools
|
||||||
|
devtoolset-7-gcc devtoolset-7-gcc-c++ make \
|
||||||
|
# squashfs-tools libs
|
||||||
|
libzstd-devel \
|
||||||
|
# Qt build tools
|
||||||
|
file which \
|
||||||
|
# Qt libs
|
||||||
at-spi2-core-devel dbus-devel fontconfig-devel freetype-devel glib2-devel libXrender-devel libxcb-devel libxkbcommon-devel libxkbcommon-x11-devel mesa-libGL-devel xcb-util-devel \
|
at-spi2-core-devel dbus-devel fontconfig-devel freetype-devel glib2-devel libXrender-devel libxcb-devel libxkbcommon-devel libxkbcommon-x11-devel mesa-libGL-devel xcb-util-devel \
|
||||||
devtoolset-7-gcc devtoolset-7-gcc-c++
|
# fcitx5-qt build tools
|
||||||
|
cmake3 extra-cmake-modules && \
|
||||||
|
yum clean all
|
||||||
|
|
||||||
ARG DEVTOOLSET_ROOTPATH=/opt/rh/devtoolset-7/root
|
ARG DEVTOOLSET_ROOTPATH=/opt/rh/devtoolset-7/root
|
||||||
ENV PATH=${DEVTOOLSET_ROOTPATH}/usr/bin:${PATH}
|
ENV PATH=${DEVTOOLSET_ROOTPATH}/usr/bin:${PATH}
|
||||||
ENV LD_LIBRARY_PATH=${DEVTOOLSET_ROOTPATH}/usr/lib64
|
ENV LD_LIBRARY_PATH=${DEVTOOLSET_ROOTPATH}/usr/lib64
|
||||||
|
|
||||||
# AppImageKit
|
ARG SQUASHFS_TOOLS_VERSION=4.4
|
||||||
RUN curl -L -o /usr/local/bin/appimagetool 'https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage' && \
|
ARG QT_MAJOR_MINOR=5.12
|
||||||
chmod +x /usr/local/bin/appimagetool
|
ARG QT_PATCH=12
|
||||||
|
ARG QT_VERSION=${QT_MAJOR_MINOR}.${QT_PATCH}
|
||||||
|
ARG FCITX5_QT_VERSION=5.0.17
|
||||||
|
ARG ALACRITTY_VERSION=0.12.2
|
||||||
|
|
||||||
|
# AppImage runtime
|
||||||
|
RUN curl -L -o /opt/appimage-runtime 'https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64'
|
||||||
|
|
||||||
|
# squashfs-tools
|
||||||
|
RUN mkdir -p /build/squashfs-tools && \
|
||||||
|
cd /build/squashfs-tools && \
|
||||||
|
curl -L -o squashfs-tools-${SQUASHFS_TOOLS_VERSION}.tar.gz "https://github.com/plougher/squashfs-tools/archive/refs/tags/${SQUASHFS_TOOLS_VERSION}.tar.gz" && \
|
||||||
|
tar xf squashfs-tools-${SQUASHFS_TOOLS_VERSION}.tar.gz && \
|
||||||
|
cd squashfs-tools-${SQUASHFS_TOOLS_VERSION}/squashfs-tools && \
|
||||||
|
make ZSTD_SUPPORT=1 -j$(nproc) && \
|
||||||
|
make install && \
|
||||||
|
# cleanup
|
||||||
|
cd / && \
|
||||||
|
rm -r /build/squashfs-tools
|
||||||
|
|
||||||
# Qt 5
|
# Qt 5
|
||||||
RUN mkdir -p /build/qt5 && \
|
RUN mkdir -p /build/qt5 && \
|
||||||
cd /build/qt5 && \
|
cd /build/qt5 && \
|
||||||
curl -O 'https://download.qt.io/archive/qt/5.12/5.12.12/submodules/qt{base,svg,tools}-everywhere-src-5.12.12.tar.xz' && \
|
curl -O "https://download.qt.io/archive/qt/${QT_MAJOR_MINOR}/${QT_VERSION}/submodules/qt{base,svg,tools}-everywhere-src-${QT_VERSION}.tar.xz" && \
|
||||||
curl -L -o fcitx5-qt-5.0.17.tar.gz 'https://github.com/fcitx/fcitx5-qt/archive/refs/tags/5.0.17.tar.gz' && \
|
curl -L -o fcitx5-qt-${FCITX5_QT_VERSION}.tar.gz "https://github.com/fcitx/fcitx5-qt/archive/refs/tags/${FCITX5_QT_VERSION}.tar.gz" && \
|
||||||
tar xf qtbase-everywhere-src-5.12.12.tar.xz && \
|
tar xf qtbase-everywhere-src-${QT_VERSION}.tar.xz && \
|
||||||
cd qtbase-everywhere-src-5.12.12 && \
|
cd qtbase-everywhere-src-${QT_VERSION} && \
|
||||||
./configure \
|
./configure \
|
||||||
-prefix /usr/local \
|
-prefix /usr/local \
|
||||||
-opensource -confirm-license \
|
-opensource -confirm-license \
|
||||||
|
@ -37,22 +61,22 @@ RUN mkdir -p /build/qt5 && \
|
||||||
make install && \
|
make install && \
|
||||||
# svg package
|
# svg package
|
||||||
cd /build/qt5 && \
|
cd /build/qt5 && \
|
||||||
tar xf qtsvg-everywhere-src-5.12.12.tar.xz && \
|
tar xf qtsvg-everywhere-src-${QT_VERSION}.tar.xz && \
|
||||||
cd qtsvg-everywhere-src-5.12.12 && \
|
cd qtsvg-everywhere-src-${QT_VERSION} && \
|
||||||
qmake . && \
|
qmake . && \
|
||||||
make -j$(nproc) && \
|
make -j$(nproc) && \
|
||||||
make install && \
|
make install && \
|
||||||
# tools package
|
# tools package
|
||||||
cd /build/qt5 && \
|
cd /build/qt5 && \
|
||||||
tar xf qttools-everywhere-src-5.12.12.tar.xz && \
|
tar xf qttools-everywhere-src-${QT_VERSION}.tar.xz && \
|
||||||
cd qttools-everywhere-src-5.12.12 && \
|
cd qttools-everywhere-src-${QT_VERSION} && \
|
||||||
qmake . && \
|
qmake . && \
|
||||||
make -j$(nproc) && \
|
make -j$(nproc) && \
|
||||||
make install && \
|
make install && \
|
||||||
# fcitx5 package
|
# fcitx5 package
|
||||||
cd /build/qt5 && \
|
cd /build/qt5 && \
|
||||||
tar xf fcitx5-qt-5.0.17.tar.gz && \
|
tar xf fcitx5-qt-${FCITX5_QT_VERSION}.tar.gz && \
|
||||||
cd fcitx5-qt-5.0.17 && \
|
cd fcitx5-qt-${FCITX5_QT_VERSION} && \
|
||||||
cmake3 . -Bbuild -DCMAKE_MODULE_PATH=/usr/local/lib/cmake -DCMAKE_PREFIX_PATH=/usr/local -DCMAKE_BUILD_TYPE=Release -DENABLE_QT4=Off -DENABLE_QT5=On -DENABLE_QT6=Off -DBUILD_ONLY_PLUGIN=On -DBUILD_STATIC_PLUGIN=On && \
|
cmake3 . -Bbuild -DCMAKE_MODULE_PATH=/usr/local/lib/cmake -DCMAKE_PREFIX_PATH=/usr/local -DCMAKE_BUILD_TYPE=Release -DENABLE_QT4=Off -DENABLE_QT5=On -DENABLE_QT6=Off -DBUILD_ONLY_PLUGIN=On -DBUILD_STATIC_PLUGIN=On && \
|
||||||
cmake3 --build build --parallel && \
|
cmake3 --build build --parallel && \
|
||||||
cmake3 --install build && \
|
cmake3 --install build && \
|
||||||
|
@ -61,15 +85,18 @@ RUN mkdir -p /build/qt5 && \
|
||||||
rm -r /build/qt5
|
rm -r /build/qt5
|
||||||
|
|
||||||
# Alacritty
|
# Alacritty
|
||||||
RUN mkdir -p /build/alacritty && \
|
RUN yum install -y cargo && \
|
||||||
|
mkdir -p /build/alacritty && \
|
||||||
cd /build/alacritty && \
|
cd /build/alacritty && \
|
||||||
curl -L -o alacritty-0.11.0.tar.gz 'https://github.com/alacritty/alacritty/archive/refs/tags/v0.11.0.tar.gz' && \
|
curl -L -o alacritty-${ALACRITTY_VERSION}.tar.gz "https://github.com/alacritty/alacritty/archive/refs/tags/v${ALACRITTY_VERSION}.tar.gz" && \
|
||||||
tar xf alacritty-0.11.0.tar.gz && \
|
tar xf alacritty-${ALACRITTY_VERSION}.tar.gz && \
|
||||||
cd alacritty-0.11.0 && \
|
cd alacritty-${ALACRITTY_VERSION} && \
|
||||||
echo -e '[profile.relminsize]\ninherits="release"\ndebug=false\nstrip=true\nopt-level="s"' >>Cargo.toml && \
|
echo -e '[profile.minsize]\ninherits="release"\ndebug=false\nstrip=true\nopt-level="s"' >>Cargo.toml && \
|
||||||
cargo build --profile relminsize && \
|
cargo build --profile minsize && \
|
||||||
cp target/relminsize/alacritty /usr/local/bin && \
|
cp target/minsize/alacritty /usr/local/bin && \
|
||||||
# cleanup
|
# cleanup
|
||||||
cd / && \
|
cd / && \
|
||||||
rm -r /build/alacritty && \
|
rm -r /build/alacritty && \
|
||||||
rm -r ~/.cargo/registry
|
yum autoremove -y cargo && \
|
||||||
|
yum clean all && \
|
||||||
|
rm -r ~/.cargo
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
_pkgname=RedPanda-CPP
|
_pkgname=RedPanda-CPP
|
||||||
pkgname=${_pkgname,,}-git
|
pkgname=${_pkgname,,}-git
|
||||||
pkgver=2.12.r1.g57c4c5bc
|
pkgver=2.23.r14.gd1214e3d
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc='A fast, lightweight, open source, and cross platform C++ IDE (development version)'
|
pkgdesc='A fast, lightweight, open source, and cross platform C++ IDE (development version)'
|
||||||
arch=('i686' 'pentium4' 'x86_64' 'arm' 'armv6h' 'armv7h' 'aarch64')
|
arch=('i686' 'pentium4' 'x86_64' 'arm' 'armv6h' 'armv7h' 'aarch64' 'riscv64')
|
||||||
url="https://github.com/royqh1979/$_pkgname"
|
url="https://github.com/royqh1979/$_pkgname"
|
||||||
license=('GPL3')
|
license=('GPL3')
|
||||||
depends=(qt5-base qt5-svg gcc gdb)
|
depends=(qt5-base qt5-svg gcc gdb)
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -xe
|
||||||
|
|
||||||
|
TMP_FOLDER=/build/redpanda-build
|
||||||
|
DISTRO_ID=$(grep ^ID= /etc/os-release | cut -d= -f2- | tr -d '"')
|
||||||
|
VERSION_ID=$(grep ^VERSION_ID= /etc/os-release | cut -d= -f2- | tr -d '"')
|
||||||
|
|
||||||
|
# install deps
|
||||||
|
default_repositories=(
|
||||||
|
deb.debian.org
|
||||||
|
security.debian.org
|
||||||
|
archive.ubuntu.com
|
||||||
|
security.ubuntu.com
|
||||||
|
ports.ubuntu.com
|
||||||
|
)
|
||||||
|
|
||||||
|
if [[ -n $MIRROR ]]
|
||||||
|
then
|
||||||
|
for repo in ${default_repositories[@]}
|
||||||
|
do
|
||||||
|
[[ -f /etc/apt/sources.list ]] && sed -i "s|$repo|$MIRROR|" /etc/apt/sources.list
|
||||||
|
for file in $(ls /etc/apt/sources.list.d/)
|
||||||
|
do
|
||||||
|
# okay for both *.list and *.sources (since Debian 12)
|
||||||
|
sed -i "s|$repo|$MIRROR|" /etc/apt/sources.list.d/$file
|
||||||
|
done
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
apt update
|
||||||
|
apt install -y --no-install-recommends \
|
||||||
|
build-essential debhelper \
|
||||||
|
libqt5svg5-dev qtbase5-dev qtbase5-dev-tools qttools5-dev-tools
|
||||||
|
|
||||||
|
# prepare source
|
||||||
|
mkdir -p $TMP_FOLDER
|
||||||
|
|
||||||
|
cd $SOURCE_DIR
|
||||||
|
cp -r packages/debian $TMP_FOLDER
|
||||||
|
cp -r tools $TMP_FOLDER
|
||||||
|
cp -r libs $TMP_FOLDER
|
||||||
|
cp -r RedPandaIDE $TMP_FOLDER
|
||||||
|
cp README.md $TMP_FOLDER
|
||||||
|
cp LICENSE $TMP_FOLDER
|
||||||
|
cp NEWS.md $TMP_FOLDER
|
||||||
|
cp -r platform $TMP_FOLDER
|
||||||
|
cp Red_Panda_CPP.pro $TMP_FOLDER
|
||||||
|
|
||||||
|
# build
|
||||||
|
cd $TMP_FOLDER
|
||||||
|
dpkg-buildpackage -us -uc
|
||||||
|
|
||||||
|
# copy back to host
|
||||||
|
cd ..
|
||||||
|
file=$(ls redpanda-cpp_*.deb)
|
||||||
|
mkdir -p $SOURCE_DIR/dist
|
||||||
|
cp $file $SOURCE_DIR/dist/${file/.deb/.$DISTRO_ID$VERSION_ID.deb}
|
Loading…
Reference in New Issue