mirror of
				https://github.com/antos-rde/antos.git
				synced 2025-10-31 18:35:43 +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:
		
							
								
								
									
										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** | ||||
|   | ||||
 Submodule antos-frontend updated: 8137928851...d72025741c
									
								
							| @@ -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,7 +19,7 @@ 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 | ||||
|  | ||||
| @@ -25,3 +27,19 @@ RUN RUSTUP_HOME=/opt/rust/rustup CARGO_HOME=/opt/rust/cargo bash -c 'curl https: | ||||
| RUN chmod -R 777 /opt/rust/ | ||||
| RUN apt-get update && apt-get --yes --no-install-recommends install \ | ||||
|     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/" | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user