mirror of
https://github.com/antos-rde/antos.git
synced 2025-02-22 11:02:47 +01:00
feat: Support CI and cross compile for amd64, arm64, arm
All checks were successful
gitea-sync/antos/pipeline/head This commit looks good
All checks were successful
gitea-sync/antos/pipeline/head This commit looks good
This commit is contained in:
parent
883fbe4190
commit
8ef0a5b7db
60
BUILD.md
Normal file
60
BUILD.md
Normal file
@ -0,0 +1,60 @@
|
||||
|
||||
# BUILDING and INSTALLING AntOS
|
||||
|
||||
Work in progress
|
||||
|
||||
## Dependencies
|
||||
|
||||
### Build dependencies
|
||||
|
||||
```
|
||||
build-essential \
|
||||
make \
|
||||
libsqlite3-dev \
|
||||
cmake \
|
||||
zlib1g-dev \
|
||||
libreadline-dev \
|
||||
libssl-dev \
|
||||
autotools-dev \
|
||||
autoconf \
|
||||
libtool \
|
||||
automake \
|
||||
libffi-dev \
|
||||
ca-certificates \
|
||||
unzip \
|
||||
libjpeg-turbo8-dev \
|
||||
libvncserver-dev \
|
||||
lua5.3 \
|
||||
nodejs npm \
|
||||
git wget curl
|
||||
```
|
||||
|
||||
Rust
|
||||
rustup default stable
|
||||
|
||||
Install cross toolchain
|
||||
|
||||
```
|
||||
gcc-arm-linux-gnueabihf binutils-arm-linux-gnueabihf
|
||||
gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu
|
||||
```
|
||||
|
||||
Optional for appImage
|
||||
|
||||
```
|
||||
wget libfuse2 fuse3
|
||||
```
|
||||
|
||||
### Runtime dependencies
|
||||
```
|
||||
libssl libsqlite3 zlib1g libreadline libvncclient1 libjpeg-turbo8
|
||||
```
|
||||
## Build
|
||||
```
|
||||
git submodule update --init
|
||||
make
|
||||
|
||||
# build docker (WIP)
|
||||
make docker
|
||||
|
||||
```
|
90
Jenkinsfile
vendored
Normal file
90
Jenkinsfile
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
pipeline {
|
||||
agent {
|
||||
docker {
|
||||
image 'xsangle/ci-tools:latest'
|
||||
reuseNode true
|
||||
args ' --device /dev/fuse --privileged '
|
||||
}
|
||||
}
|
||||
options {
|
||||
// Limit build history with buildDiscarder option:
|
||||
// daysToKeepStr: history is only kept up to this many days.
|
||||
// numToKeepStr: only this many build logs are kept.
|
||||
// artifactDaysToKeepStr: artifacts are only kept up to this many days.
|
||||
// artifactNumToKeepStr: only this many builds have their artifacts kept.
|
||||
buildDiscarder(logRotator(numToKeepStr: '1'))
|
||||
// Enable timestamps in build log console
|
||||
timestamps()
|
||||
// Maximum time to run the whole pipeline before canceling it
|
||||
timeout(time: 3, unit: 'HOURS')
|
||||
// Use Jenkins ANSI Color Plugin for log console
|
||||
ansiColor('xterm')
|
||||
// Limit build concurrency to 1 per branch
|
||||
disableConcurrentBuilds()
|
||||
}
|
||||
stages
|
||||
{
|
||||
stage('Prepare dependencies') {
|
||||
agent {
|
||||
node { label'workstation' }
|
||||
}
|
||||
steps {
|
||||
sh'''
|
||||
cd antd/luasocket && git stash || true
|
||||
cd $WORKSPACE
|
||||
git submodule update --init
|
||||
make clean || true
|
||||
rm -rf build/* || true
|
||||
mkdir build || true
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('Build AMD64)') {
|
||||
steps {
|
||||
sh'''
|
||||
DESTDIR=$(realpath build) \
|
||||
ARCH=amd64 \
|
||||
RUSTUP_HOME=/opt/rust/rustup \
|
||||
CARGO_HOME=/opt/rust/cargo \
|
||||
make all deb appimg
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('Build ARM64)') {
|
||||
steps {
|
||||
sh'''
|
||||
DESTDIR=$(realpath build) \
|
||||
ARCH=arm64 \
|
||||
RUSTUP_HOME=/opt/rust/rustup \
|
||||
CARGO_HOME=/opt/rust/cargo \
|
||||
make all deb appimg
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('Build ARM)') {
|
||||
steps {
|
||||
sh'''
|
||||
DESTDIR=$(realpath build) \
|
||||
ARCH=arm \
|
||||
RUSTUP_HOME=/opt/rust/rustup \
|
||||
CARGO_HOME=/opt/rust/cargo \
|
||||
make all deb appimg
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('Checking build)') {
|
||||
steps {
|
||||
sh'''
|
||||
./scripts/ckarch.sh build
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('Archive') {
|
||||
steps {
|
||||
script {
|
||||
archiveArtifacts artifacts: 'build/', fingerprint: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
144
Makefile
144
Makefile
@ -1,125 +1,167 @@
|
||||
|
||||
ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
||||
TAG:=$(subst master,stable,$(subst refs/heads/,,$(shell git symbolic-ref -q HEAD)))
|
||||
|
||||
PLATFORM?=x86_64
|
||||
ARCH?=amd64
|
||||
VERSION?=2.0.0-b
|
||||
|
||||
RUSTUP_HOME?=/opt/rust
|
||||
CARGO_HOME?=/opt/rust/cargo
|
||||
RUST_TARGET?=x86_64-unknown-linux-gnu
|
||||
|
||||
DESTDIR?=$(ROOT_DIR)/build/
|
||||
BUILD_PREFIX:=$(DESTDIR)/opt/www
|
||||
|
||||
VERSION?=2.0.0
|
||||
BRANCH?=b
|
||||
BUILDID=$(shell git rev-parse --short HEAD)
|
||||
ifeq ('$(ARCH)','amd64')
|
||||
RUST_TARGET?=x86_64-unknown-linux-gnu
|
||||
CC_PREFIX?=
|
||||
HOST?=
|
||||
endif
|
||||
|
||||
VERSION_STR=$(VERSION)-$(BRANCH)-$(BUILDID)
|
||||
PKG_NAME="AntOS_${VERSION_STR}_${PLATFORM}"
|
||||
ifeq ('$(ARCH)','arm64')
|
||||
RUST_TARGET?=aarch64-unknown-linux-gnu
|
||||
CC_PREFIX?=aarch64-linux-gnu-
|
||||
HOST?=--host=aarch64-linux-gnu
|
||||
endif
|
||||
|
||||
all: antos deb tar.gz appimg
|
||||
ifeq ('$(ARCH)','arm')
|
||||
RUST_TARGET?=armv7-unknown-linux-gnueabihf
|
||||
CC_PREFIX?=arm-linux-gnueabihf-
|
||||
HOST?=--host=arm-linux-gnueabihf
|
||||
endif
|
||||
|
||||
CC:=$(CC_PREFIX)gcc
|
||||
CXX:=$(CC_PREFIX)g++
|
||||
BUILD_PREFIX:=/opt/www
|
||||
INSTALL_DIR:=$(DESTDIR)/$(ARCH)/$(BUILD_PREFIX)
|
||||
|
||||
BUILDID:=$(shell git rev-parse --short HEAD)
|
||||
|
||||
VERSION_STR=$(VERSION)-$(BUILDID)
|
||||
PKG_NAME="AntOS_${VERSION_STR}_${ARCH}"
|
||||
|
||||
all: antos tar.gz
|
||||
|
||||
antos: antd backend frontend
|
||||
cp $(ROOT_DIR)/README.md $(INSTALL_DIR)/htdocs/os
|
||||
|
||||
antd: httpd plugins luasec luasocket silk luafcgi
|
||||
rm $(BUILD_PREFIX)/runner.ini
|
||||
cp $(ROOT_DIR)/config/*.ini $(BUILD_PREFIX)/etc
|
||||
rm $(INSTALL_DIR)/runner.ini
|
||||
cp $(ROOT_DIR)/config/*.ini $(INSTALL_DIR)/etc
|
||||
rm $(INSTALL_DIR)/bin/ant-d $(INSTALL_DIR)/bin/runnerd
|
||||
@echo "Finish building Antd server"
|
||||
|
||||
httpd:
|
||||
httpd: clean_c
|
||||
cd $(ROOT_DIR)/antd/ant-http && libtoolize && aclocal && autoconf && automake --add-missing
|
||||
cd $(ROOT_DIR)/antd/ant-http && ./configure --prefix=$(BUILD_PREFIX)
|
||||
make -C $(ROOT_DIR)/antd/ant-http install
|
||||
cd $(ROOT_DIR)/antd/ant-http && ./configure $(HOST) --prefix=$(BUILD_PREFIX)
|
||||
DESTDIR=$(DESTDIR)/$(ARCH) make -C $(ROOT_DIR)/antd/ant-http install
|
||||
|
||||
plugins: antd-fcgi-plugin antd-tunnel-plugin antd-wvnc-plugin antd-tunnel-publishers
|
||||
@echo "Finish making plugins"
|
||||
|
||||
luasec:
|
||||
luasec: clean_c
|
||||
@echo "Building $@"
|
||||
lua5.3 $(ROOT_DIR)/antd/luasec/src/options.lua -g \
|
||||
/usr/include/openssl/ssl.h \
|
||||
> $(ROOT_DIR)/antd/luasec/src/options.c
|
||||
CC=$(CC) \
|
||||
INC_PATH=-I$(ROOT_DIR)/antd/silk/modules/lua/lua54/ \
|
||||
make -C $(ROOT_DIR)/antd/luasec linux
|
||||
CC=$(CC) \
|
||||
INC_PATH=-I$(ROOT_DIR)/antd/silk/modules/lua/lua54/ \
|
||||
DESTDIR=$(DESTDIR) \
|
||||
DESTDIR=$(DESTDIR)/$(ARCH) \
|
||||
LUAPATH=/opt/www/lib/lua \
|
||||
LUACPATH=/opt/www/lib/lua \
|
||||
make -C $(ROOT_DIR)/antd/luasec install
|
||||
|
||||
luasocket:
|
||||
luasocket: clean_c
|
||||
@echo "Building $@"
|
||||
sed -i 's/^CC_linux=/CC_linux?=/g' $(ROOT_DIR)/antd/luasocket/src/makefile
|
||||
sed -i 's/^LD_linux=/LD_linux?=/g' $(ROOT_DIR)/antd/luasocket/src/makefile
|
||||
CC_linux=$(CC) \
|
||||
LD_linux=$(CC) \
|
||||
LUAV=5.4 \
|
||||
LUAINC_linux=$(ROOT_DIR)/antd/silk/modules/lua/lua54/ \
|
||||
LUAPREFIX_linux=$(DESTDIR) \
|
||||
LUAPREFIX_linux=$(BUILD_PREFIX) \
|
||||
PLAT=linux \
|
||||
make -C $(ROOT_DIR)/antd/luasocket linux
|
||||
CC_linux=$(CC) \
|
||||
LD_linux=$(CC) \
|
||||
LUAV=5.4 \
|
||||
LUAINC_linux=$(ROOT_DIR)/antd/silk/modules/lua/lua54/ \
|
||||
LUAPREFIX_linux=$(DESTDIR) \
|
||||
LUAPREFIX_linux=$(BUILD_PREFIX) \
|
||||
PLAT=linux \
|
||||
make -C $(ROOT_DIR)/antd/luasocket install-unix
|
||||
-mkdir -p $(DESTDIR)/lib/lua
|
||||
cp -rf $(DESTDIR)/lib/lua/5.4/* $(DESTDIR)/opt/www/lib/lua/
|
||||
cp -rf $(DESTDIR)/share/lua/5.4/* $(DESTDIR)/opt/www/lib/lua/
|
||||
rm -rf $(DESTDIR)/lib $(DESTDIR)/share
|
||||
DESTDIR=$(DESTDIR)/$(ARCH) make -C $(ROOT_DIR)/antd/luasocket install-unix
|
||||
-mkdir -p $(INSTALL_DIR)/lib/lua
|
||||
cp -rf $(INSTALL_DIR)/lib/lua/5.4/* $(INSTALL_DIR)/lib/lua/
|
||||
cp -rf $(INSTALL_DIR)/share/lua/5.4/* $(INSTALL_DIR)/lib/lua/
|
||||
rm -rf $(INSTALL_DIR)/lib/lua/5.4 $(INSTALL_DIR)/share
|
||||
|
||||
antd-% sil%: httpd
|
||||
antd-% sil%: clean_c
|
||||
@echo "Building $@"
|
||||
cd $(ROOT_DIR)/antd/$@ && libtoolize && aclocal && autoconf && automake --add-missing
|
||||
cd $(ROOT_DIR)/antd/$@ && CFLAGS="-I$(BUILD_PREFIX)/include" LDFLAGS="-L$(BUILD_PREFIX)/lib" ./configure --prefix=$(BUILD_PREFIX)
|
||||
make -C $(ROOT_DIR)/antd/$@ install
|
||||
cd $(ROOT_DIR)/antd/$@ && CFLAGS="-I$(INSTALL_DIR)/include" LDFLAGS="-L$(INSTALL_DIR)/lib" \
|
||||
./configure $(HOST) --prefix=$(BUILD_PREFIX)
|
||||
DESTDIR=$(DESTDIR)/$(ARCH) make -C $(ROOT_DIR)/antd/$@ install
|
||||
|
||||
luafcgi:
|
||||
ifeq ($(LUAFCGI_IGNORE),)
|
||||
@echo "Building $@"
|
||||
mkdir -p $(INSTALL_DIR)/bin
|
||||
RUSTUP_HOME=$(RUSTUP_HOME) CARGO_HOME=$(CARGO_HOME) \
|
||||
. $(CARGO_HOME)/env && \
|
||||
rustup default stable && \
|
||||
rustup target add $(RUST_TARGET) && \
|
||||
cargo build --target=$(RUST_TARGET) --release \
|
||||
--manifest-path=$(ROOT_DIR)/antd/luafcgi/Cargo.toml
|
||||
install -m 0755 $(ROOT_DIR)/antd/luafcgi/target/$(RUST_TARGET)/release/luad $(BUILD_PREFIX)/bin
|
||||
--manifest-path=$(ROOT_DIR)/antd/luafcgi/Cargo.toml \
|
||||
--config=$(ROOT_DIR)/antd/luafcgi/.cargo/config.toml
|
||||
install -m 0755 $(ROOT_DIR)/antd/luafcgi/target/$(RUST_TARGET)/release/luad $(INSTALL_DIR)/bin
|
||||
else
|
||||
@echo "Ignore building $@"
|
||||
endif
|
||||
|
||||
clean:
|
||||
@echo "Clean all target"
|
||||
make -C antd/ant-http clean
|
||||
make -C antd/antd-fcgi-plugin clean
|
||||
make -C antd/antd-tunnel-plugin clean
|
||||
make -C antd/antd-wvnc-plugin clean
|
||||
make -C antd/antd-tunnel-publishers clean
|
||||
make -C antd/luasec clean
|
||||
make -C antd/luasocket clean
|
||||
make -C antd/silk clean
|
||||
clean_c:
|
||||
@echo "Clean all C based modules"
|
||||
-make -C antd/ant-http clean
|
||||
-make -C antd/antd-fcgi-plugin clean
|
||||
-make -C antd/antd-tunnel-plugin clean
|
||||
-make -C antd/antd-wvnc-plugin clean
|
||||
-make -C antd/antd-tunnel-publishers clean
|
||||
-make -C antd/luasec clean
|
||||
-make -C antd/luasocket clean
|
||||
-make -C antd/silk clean
|
||||
|
||||
clean: clean_c
|
||||
@echo "Clean Rust project and output DIR"
|
||||
RUSTUP_HOME=$(RUSTUP_HOME) CARGO_HOME=$(CARGO_HOME) \
|
||||
. $(CARGO_HOME)/env && cargo clean --manifest-path=$(ROOT_DIR)/antd/luafcgi/Cargo.toml
|
||||
. $(CARGO_HOME)/env && \
|
||||
rustup default stable && \
|
||||
cargo clean \
|
||||
--manifest-path=$(ROOT_DIR)/antd/luafcgi/Cargo.toml \
|
||||
--config=$(ROOT_DIR)/antd/luafcgi/.cargo/config.toml
|
||||
-rm -rf $(DESTDIR)/*
|
||||
|
||||
backend:
|
||||
@echo "Building $@"
|
||||
DESTDIR=$(BUILD_PREFIX)/htdocs/os make -C antos-backend
|
||||
mkdir -p $(INSTALL_DIR)/htdocs/os
|
||||
DESTDIR=$(INSTALL_DIR)/htdocs/os make -C antos-backend
|
||||
|
||||
frontend:
|
||||
ifeq ($(FRONTEND_IGNORE),)
|
||||
@echo "Building $@"
|
||||
BUILDDIR=$(BUILD_PREFIX)/htdocs/os make -C antos-frontend install_dev release
|
||||
mkdir -p $(INSTALL_DIR)/htdocs/os
|
||||
BUILDDIR=$(INSTALL_DIR)/htdocs/os make -C antos-frontend install_dev release
|
||||
else
|
||||
@echo "Ignore building $@"
|
||||
endif
|
||||
|
||||
deb: antos
|
||||
-rm $(DESTDIR)/*.deb
|
||||
scripts/mkdeb.sh $(VERSION_STR) $(PLATFORM) $(DESTDIR)
|
||||
deb:
|
||||
-rm $(DESTDIR)/$(ARCH)/*.deb
|
||||
scripts/mkdeb.sh $(VERSION_STR) $(ARCH) $(DESTDIR)/$(ARCH)
|
||||
|
||||
tar.gz: antos
|
||||
-rm $(DESTDIR)/$(PKG_NAME).tar.gz
|
||||
cd $(DESTDIR)/ && tar cvzf $(PKG_NAME).tar.gz opt
|
||||
-rm $(DESTDIR)/$(ARCH)/$(PKG_NAME).tar.gz
|
||||
cd $(DESTDIR)/$(ARCH)/ && tar cvzf $(PKG_NAME).tar.gz opt
|
||||
|
||||
appimg: antos
|
||||
-rm $(DESTDIR)/*.AppImage
|
||||
scripts/mkappimg.sh $(PLATFORM) $(VERSION_STR) $(DESTDIR) $(ROOT_DIR)/antos-64.png
|
||||
appimg:
|
||||
-rm $(DESTDIR)/$(ARCH)/*.AppImage
|
||||
scripts/mkappimg.sh $(ARCH) $(VERSION_STR) $(DESTDIR)/$(ARCH) $(ROOT_DIR)/antos-64.png
|
||||
|
||||
.PHONY: antd antos
|
165
README.md
165
README.md
@ -1,46 +1,133 @@
|
||||
# AntOS
|
||||
#  antOS v2.0.0
|
||||
[](https://ci.iohub.dev/buildStatus/icon?job=gitea-sync%2Fantos%2F2.0.x)
|
||||
|
||||
## Dependencies
|
||||
AntOS is a web-based remote desktop environment that provides an all-in-one solution for setting up a cloud-based, self-hosted working environment. It features a backend API and services, a front-end web-based window manager, application APIs, a GUI toolkit, and file system abstractions. It also includes an application store and an SDK for in-browser application development, deployment, and packaging. AntOS is designed to work across devices, including desktop computers and mobile devices.
|
||||
|
||||
### Build dependencies
|
||||

|
||||
|
||||
```
|
||||
build-essential \
|
||||
make \
|
||||
libsqlite3-dev \
|
||||
cmake \
|
||||
zlib1g-dev \
|
||||
libreadline-dev \
|
||||
libssl-dev \
|
||||
autotools-dev \
|
||||
autoconf \
|
||||
libtool \
|
||||
automake \
|
||||
libffi-dev \
|
||||
ca-certificates \
|
||||
unzip \
|
||||
libjpeg-turbo8-dev \
|
||||
libvncserver-dev \
|
||||
lua5.3 \
|
||||
nodejs npm \
|
||||
git wget curl
|
||||
```
|
||||
Optional for appImage
|
||||
AntOS can be used in several application contexts, such as:
|
||||
- Providing visual tools to access and control resources on remote servers and embedded Linux environments
|
||||
- Providing and developing SaaS web-based applications
|
||||
- Self-hosting a cloud-based working environment
|
||||
- Creating a customized, user-friendly interface for managing and interacting with cloud-based resources and services
|
||||
- Setting up a collaborative, online workspace for remote teams and distributed organizations
|
||||
- Building a web-based operating system that can run on various devices, including laptops, tablets, and smartphones
|
||||
- Creating a virtualized environment for testing and deploying web-based applications in a sandboxed environment
|
||||
- Building a platform for creating and hosting web-based educational or training content
|
||||
- Setting up a web-based development environment for prototyping and building web-based applications quickly and easily
|
||||
- Etc, You name it!
|
||||
|
||||
```
|
||||
wget libfuse2 fuse3
|
||||
```
|
||||
With the provided application API and SDK, AntOS facilitates the development and deployment of user-specific applications inside the VDE environment
|
||||
|
||||
### Runtime dependencies
|
||||
```
|
||||
libssl libsqlite3 zlib1g libreadline libvncclient1 libjpeg-turbo8
|
||||
```
|
||||
## Build
|
||||
```
|
||||
git submodule update --init
|
||||
make
|
||||
Github: [https://github.com/antos-rde](https://github.com/antos-rde)
|
||||
|
||||
# build docker (WIP)
|
||||
make docker
|
||||
## Demo
|
||||
A demo of the VDE is available at [https://app.iohub.dev/antos/](https://app.iohub.dev/antos/) using username: demo and password: demo.
|
||||
|
||||
```
|
||||
If one want to run AntOS VDE locally in their system, a docker image is available at:
|
||||
[https://hub.docker.com/r/xsangle/antosaio](https://hub.docker.com/r/xsangle/antosaio)
|
||||
|
||||
## Build and install
|
||||
|
||||
See [BUILD.md](BUILD.md) for more information on project building and installing
|
||||
|
||||
## AntOS applications (Available on the MarketPlace)
|
||||
[https://github.com/antos-rde/antosdk-apps](https://github.com/antos-rde/antosdk-apps)
|
||||
|
||||
## Front-end Documentation
|
||||
- API: [https://doc.iohub.dev/antos/api/](https://doc.iohub.dev/antos/api/)
|
||||
|
||||
## Change logs
|
||||
### v.2.0.0
|
||||
- Work In Progress: The UI is redesigned to support mobile device
|
||||
### V1.2.1
|
||||
- 9b5da17 - App name now can differ from pkgname
|
||||
- b381294 - fix: fix icon display problem when application is installed, remove all related settings when an application is uinstalled
|
||||
- b6c90e5 - update image path in readme
|
||||
- 14b72ef - Fix dragndrop bug on Fileview (grid mod)
|
||||
- c96919e - fix: correct jenkins build demo stage
|
||||
- 1cf7181 - Fix fileview status incorrect, add more build stage to Jenkinsfile
|
||||
- 255f9dc - update readme file, and include it to delivery
|
||||
- d08b33a - fix ar generation problem: with new version format
|
||||
- da5bbda - Allow to set version number and build ID to the current Antos build
|
||||
- 699c697 - update login form style
|
||||
- 2fd4bb5 - Bug fix + improvement
|
||||
- 6cbb463 - Fileview: list view display modified date instead of mime
|
||||
- f7081ae - Include current Antos version to login screen
|
||||
- 5d17c42 - Makefile read current version from gcode
|
||||
- 583a0c0 - update version number in code
|
||||
- c0603cd - Minor style fixes on menus and dropdown list
|
||||
- 8b029c2 - fix minor visual bug on grid view, list view and tree view
|
||||
- 86bcaf9 - visual bug fix on label: inline block by default
|
||||
- 61de957 - Visual improvements
|
||||
- 52af4b6 - fix visualize bug after style changes
|
||||
- e63cae1 - style improvement on Label, FileView, GridView, system menu and app Panel
|
||||
- f97a45b - Add more control to mem file + bug fix on File
|
||||
- fdcc5ce - allow to create memory-based temporal VFS file system
|
||||
- 81d78aa - robusify VFS mem file handling
|
||||
- d109d6a - fix: file name display inconsitent between views
|
||||
- c26e27d - Fix multiple dialogs focus bug
|
||||
- 8b23ebe - Loading animation is now based on the current context (global or application context)
|
||||
- 2cdd8f9 - support dnd and grid sort
|
||||
- 079af3b - fix type conversion error in gridview tag
|
||||
- a6d725e - User a custom tag to manage the desktop instead of GUI
|
||||
- 0624f42 - API improvement & bug fix: - subscribed global event doesnt unsubcribed when process is killed - process killall API doesnt work as expected - improve core API
|
||||
- 3a24df1 - update announcement system
|
||||
- e345a61 - update bootstrap icons to v.1.7.1
|
||||
- b3d38cc - allow multiple files upload in single request
|
||||
- 66e96cc - update VFS API
|
||||
- 86a94a8 - update GUI API
|
||||
- 27ac7c0 - Minor bug fix on desktop handling
|
||||
- 99e0d02 - enable setting blur overlay window
|
||||
- 52709d5 - improve Window GUI API
|
||||
- 9c06d88 - AntOS load automatically custom VFS handles if available
|
||||
- c23cb1b - Improve core API: - improve OS exit API - improve VFS API
|
||||
### V.1.2.0 Improvement GUI API
|
||||
- [x] File dialog should remember last opened folder
|
||||
- [x] Add dynamic key-value dialog that work on any object
|
||||
- [x] Window list panel should show window title in tooltip when mouse hovering on application icon
|
||||
- [x] Allow pinning application to system panel
|
||||
- [x] Improvement application list in market place
|
||||
- [x] Allow triplet keyboard shortcut in GUI
|
||||
- [x] CodePad allows setting shortcut in CommandPalette commands
|
||||
- [ ] Improvement multi-window application support
|
||||
- [x] CodePad should have recent menu entry that remember top n file opened
|
||||
- [x] Improve File application grid view
|
||||
- [x] Label text should be selectable
|
||||
- [x] switch window using shortcut
|
||||
- [x] Loading bar animation on system pannel
|
||||
- [x] Multiple file upload support
|
||||
- [x] Generic key-value dialog
|
||||
- [x] Add bootstrap font support for icons
|
||||
- [x] Class applications by categories in start menu
|
||||
- [x] Support vertical and horizontal resize window
|
||||
* Market place now classifies application by categories
|
||||
* CodePad is no longer default system application, it has been moved to MarketPlace
|
||||
* More applications added to MarketPlace
|
||||
* Antos SDK
|
||||
- SDK is no longer included in base Antos release, it can be installed via MarketPlace
|
||||
- The SDK now has a generic API that can be used in different development tasks other than AntOS application
|
||||
- Heavy SDK tasks are now offloaded to workers
|
||||
- Introduce new JSON based syntax for SDK task/target definition
|
||||
* From this version, docker image of All-in-one AntOS system is available at: [https://hub.docker.com/r/xsangle/antosaio](https://hub.docker.com/r/xsangle/antosaio)
|
||||
|
||||
## Licence
|
||||
|
||||
Copyright 2017-2022 Xuan Sang LE <mrsang AT iohub DOT dev>
|
||||
|
||||
AnTOS is is licensed under the GNU General Public License v3.0, see the LICENCE file for more information
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
**For comercial use, please contact author**
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 813792885171de1fda208b50c9ed24686acd471d
|
||||
Subproject commit d72025741c9ba54e77c9a9c321d6fa7eca54dfe4
|
@ -1,10 +1,8 @@
|
||||
FROM ubuntu:jammy AS deploy-env
|
||||
FROM debian:bookworm AS deploy-env
|
||||
ARG tag
|
||||
COPY deps/ /
|
||||
|
||||
RUN dpkg -i /libssl1.1_1.1.1f-$(uname -m).deb
|
||||
# manual install libssl1.1
|
||||
RUN apt-get update && apt-get --yes --no-install-recommends install libsqlite3-0 zlib1g libreadline8 wget libvncclient1 libjpeg-turbo8 openssh-client tar tree
|
||||
RUN apt-get update && apt-get --yes --no-install-recommends install libsqlite3-0 zlib1g libreadline8 wget libssl3 libvncclient1 libturbojpeg0 openssh-client tar tree
|
||||
RUN apt clean && rm -rf /var/lib/apt/lists/*
|
||||
RUN mkdir /ulib
|
||||
RUN cp -rf /lib/*-linux-*/libsqlite3*.so* /ulib
|
||||
@ -61,7 +59,7 @@ RUN chown -R root:root /platform
|
||||
RUN tree /platform
|
||||
RUN ls -al /platform
|
||||
|
||||
FROM busybox:stable-glibc
|
||||
FROM busybox:1.36.1-glibc
|
||||
#copy all necessary libraries
|
||||
COPY --from=deploy-env /ulib/ /lib/
|
||||
COPY --from=deploy-env /bin/wget /bin/
|
||||
|
@ -1,6 +1,8 @@
|
||||
FROM ubuntu:jammy AS deploy-env
|
||||
FROM debian:bookworm AS deploy-env
|
||||
ARG UNAME=ci
|
||||
ARG UID=1000
|
||||
ARG GID=1000
|
||||
|
||||
# manual install libssl1.1
|
||||
RUN apt-get update && apt-get --yes --no-install-recommends install \
|
||||
build-essential \
|
||||
make \
|
||||
@ -17,11 +19,27 @@ RUN apt-get update && apt-get --yes --no-install-recommends install \
|
||||
libffi-dev \
|
||||
ca-certificates \
|
||||
unzip \
|
||||
libjpeg-turbo8-dev \
|
||||
libturbojpeg0-dev \
|
||||
libvncserver-dev \
|
||||
lua5.3
|
||||
|
||||
RUN RUSTUP_HOME=/opt/rust/rustup CARGO_HOME=/opt/rust/cargo bash -c 'curl https://sh.rustup.rs -sSf | sh -s -- -y'
|
||||
RUN chmod -R 777 /opt/rust/
|
||||
RUN apt-get update && apt-get --yes --no-install-recommends install \
|
||||
nodejs npm git wget libfuse2 fuse3
|
||||
nodejs npm git wget libfuse2 fuse3
|
||||
|
||||
# cross build support
|
||||
RUN dpkg --add-architecture armhf
|
||||
RUN dpkg --add-architecture arm64
|
||||
RUN apt-get update && apt-get --yes --no-install-recommends install \
|
||||
crossbuild-essential-armhf \
|
||||
crossbuild-essential-armhf \
|
||||
libsqlite3-0:arm64 zlib1g:arm64 libreadline8:arm64 libssl3:arm64 \
|
||||
libffi-dev:arm64 libturbojpeg0:arm64 libvncclient1:arm64 \
|
||||
libsqlite3-0:armhf zlib1g:armhf libreadline8:armhf libssl3:armhf \
|
||||
libffi-dev:armhf libturbojpeg0:armhf libvncclient1:armhf
|
||||
|
||||
RUN groupadd -g 1000 -o ci
|
||||
RUN useradd -m -u 1000 -g 1000 -o -s /bin/bash ci
|
||||
USER ci
|
||||
WORKDIR /home/ci
|
69
scripts/ckarch.sh
Executable file
69
scripts/ckarch.sh
Executable file
@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
TARGET=$1
|
||||
|
||||
[[ -z "$TARGET" ]] && echo "No taget provided" && exit 1
|
||||
[[ ! -d "$TARGET" ]] && echo "Target is not a directory" && exit 1
|
||||
|
||||
DIRS=$(ls "$TARGET")
|
||||
EXIT_CODE=0
|
||||
|
||||
BLUE="\e[1;34m"
|
||||
NC="\e[0m"
|
||||
CERR="\e[1;31m"
|
||||
COK="\e[1;32m"
|
||||
GRAY="\e[90m"
|
||||
YELLOW="\e[93m"
|
||||
|
||||
check_file() {
|
||||
FILE=$1
|
||||
LD=$2
|
||||
echo -n -e "${YELLOW}Checking $FILE:....................${NC}"
|
||||
if ! file "$(realpath "$FILE")" | grep "$LD" > /dev/null ; then
|
||||
echo -e "${CERR}FAILED${NC}"
|
||||
EXIT_CODE=1
|
||||
echo -e -n "${GRAY}"
|
||||
file "$(realpath "$FILE")"
|
||||
echo -e "${NC}"
|
||||
else
|
||||
echo -e "${COK}OK${NC}"
|
||||
echo -e -n "${GRAY}"
|
||||
readelf -d "$FILE" | grep NEEDED || true
|
||||
echo -e "${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
check() {
|
||||
ARCH=$1
|
||||
LD=$2
|
||||
ROOT=$TARGET/$ARCH/opt/www
|
||||
echo -e "${BLUE}Checking: $TARGET/$ARCH${NC}"
|
||||
# check bin directory
|
||||
for file in "$ROOT"/bin/*; do
|
||||
check_file "$file" "$LD"
|
||||
done
|
||||
# check for libraries
|
||||
libs=$(find "$ROOT"/lib/ -name "*.so*")
|
||||
for lib in $libs; do
|
||||
check_file "$lib" "$LD"
|
||||
done
|
||||
}
|
||||
|
||||
for dir in $DIRS; do
|
||||
case $dir in
|
||||
arm64)
|
||||
check "$dir" "ARM aarch64"
|
||||
;;
|
||||
arm)
|
||||
check "$dir" "ARM, EABI"
|
||||
;;
|
||||
amd64)
|
||||
check "$dir" "x86-64"
|
||||
;;
|
||||
*)
|
||||
echo "Unkown architecture: $dir, ignore it"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
exit $EXIT_CODE
|
@ -6,25 +6,22 @@ arch=$1
|
||||
tag=$2
|
||||
DIR=$3
|
||||
logo=$4
|
||||
[ -z $arch ] && echo "1. No architecture provided" && exit 1
|
||||
[ -z $tag ] && echo "2. No version provided" && exit 1
|
||||
[ -z $DIR ] && echo "3. No input dir provided" && exit 1
|
||||
[ -z $logo ] && echo "4. No logo file provided" && exit 1
|
||||
[ -z "$arch" ] && echo "1. No architecture provided" && exit 1
|
||||
[ -z "$tag" ] && echo "2. No version provided" && exit 1
|
||||
[ -z "$DIR" ] && echo "3. No input dir provided" && exit 1
|
||||
[ -z "$logo" ] && echo "4. No logo file provided" && exit 1
|
||||
# download the appimagetools
|
||||
echo "Downloading the appimage tools"
|
||||
archname=x86_64
|
||||
case $arch in
|
||||
amd64|x86_64)
|
||||
archname=x86_64
|
||||
suffix=x86_64
|
||||
;;
|
||||
aarch64|arm64)
|
||||
archname=aarch64
|
||||
suffix=aarch64
|
||||
;;
|
||||
armv7l|arm)
|
||||
archname=armhf
|
||||
suffix=armv7l
|
||||
;;
|
||||
*)
|
||||
echo "Unkown architecture"
|
||||
@ -46,7 +43,7 @@ echo "Building app image for $arch"
|
||||
|
||||
mkdir -p "$APP_DIR"
|
||||
|
||||
cp -rf $DIR/opt "$APP_DIR"
|
||||
cp -rf "$DIR/opt" "$APP_DIR"
|
||||
rm -rf $APP_DIR/opt/www/include || true
|
||||
rm -rf $APP_DIR/opt/www/etc/* || true
|
||||
|
||||
@ -186,6 +183,6 @@ Categories=Utility;
|
||||
Terminal=true
|
||||
EOF
|
||||
|
||||
cp $logo $APP_DIR/antos.png
|
||||
cp "$logo" "$APP_DIR/antos.png"
|
||||
|
||||
$APP_IMG --runtime-file $APP_RUNT $APP_DIR $DIR/$NAME.AppImage
|
||||
$APP_IMG --runtime-file $APP_RUNT $APP_DIR "$DIR/$NAME.AppImage"
|
@ -42,23 +42,23 @@ NAME="AntOS_${TAG}_${archname}"
|
||||
FILE="$NAME.deb"
|
||||
TMP="/tmp/$NAME"
|
||||
[ -d "$TMP" ] && rm -rf "$TMP"
|
||||
mkdir -p $TMP
|
||||
mkdir -p "$TMP"
|
||||
|
||||
echo "Copying binaries of version $TAG, architecture $ARCH to $TMP"
|
||||
cp $DIR/opt $TMP/ -rf
|
||||
cd $TMP
|
||||
cp "$DIR/opt" "$TMP/" -rf
|
||||
cd "$TMP"
|
||||
mkdir DEBIAN
|
||||
|
||||
cat << EOF >> DEBIAN/control
|
||||
Package: AntOS
|
||||
Version: $TAG
|
||||
Architecture: $archname
|
||||
Depends: libsqlite3-0,zlib1g,libreadline8,libssl1.1,libvncclient1,libjpeg-turbo8 | libturbojpeg0
|
||||
Maintainer: Dany LE <mrsang@iohub.dev>
|
||||
Description: All-in-one AntOS remote web-based desktop environment
|
||||
Depends: libsqlite3-0,zlib1g,libreadline8,libssl3,libvncclient1,libjpeg-turbo8 | libturbojpeg0 | libjpeg62-turbo
|
||||
Maintainer: Dany LE <dany@iohub.dev>
|
||||
Description: All-in-one AntOS web-based remote desktop environment
|
||||
EOF
|
||||
cat DEBIAN/control
|
||||
cd ..
|
||||
dpkg-deb --build $TMP
|
||||
dpkg-deb --build "$TMP"
|
||||
mv "$FILE" "$DIR/"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user