├── .github └── workflows │ └── release.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── action-ci.yml ├── action.yml ├── entrypoint.sh └── rootfs ├── compile ├── config.reg ├── el ├── 159544386.key ├── bin │ └── LINK.EXE ├── e.exe ├── ecl.exe ├── lib │ ├── dp1.fne │ └── krnln.fne └── tools │ ├── link.dll │ └── link.ini ├── test └── main.e └── xvfb-ctl /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Action Publish 2 | 3 | on: 4 | push: 5 | branches: [ main, ci ] 6 | pull_request: 7 | branches: [ main ] 8 | 9 | jobs: 10 | 11 | test-compile: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | with: 16 | token: ${{ secrets.GIT_TOKEN }} 17 | - name: Preparing test 18 | run: | 19 | cp action-ci.yml action.yml 20 | - uses: ./ 21 | with: 22 | file: rootfs/test/main.e 23 | opt_fast_array: true 24 | opt_stack_check: false 25 | opt_deadloop_check: false 26 | 27 | docker-publish: 28 | runs-on: ubuntu-latest 29 | if: github.event_name != 'pull_request' 30 | needs: 31 | - test-compile 32 | steps: 33 | - uses: actions/checkout@v4 34 | with: 35 | token: ${{ secrets.GIT_TOKEN }} 36 | - name: Build 37 | run: | 38 | docker build . -t el-buildtool:latest 39 | - name: Publish 40 | run: | 41 | echo ${{ secrets.GIT_TOKEN }} | docker login ghcr.io -u TheSnowfield --password-stdin 42 | docker image ls 43 | docker tag el-buildtool ghcr.io/thesnowfield/el-buildtool:latest 44 | docker push ghcr.io/thesnowfield/el-buildtool:latest 45 | 46 | release: 47 | runs-on: ubuntu-latest 48 | if: github.event_name != 'pull_request' 49 | needs: 50 | - docker-publish 51 | steps: 52 | - uses: actions/checkout@v4 53 | with: 54 | token: ${{ secrets.GIT_TOKEN }} 55 | - name: Publish 56 | run: | 57 | git config --global user.email "bot@el-oolchain.action" 58 | git config --global user.name "Release Bot" 59 | git tag -fa v1 -m "release v1" 60 | git push origin v1 --force 61 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | docker-compose.yml -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:24.04 2 | LABEL org.opencontainers.image.source=https://github.com/thesnowfield/el-buildtool 3 | 4 | COPY rootfs /toolchain/ 5 | COPY entrypoint.sh /entrypoint.sh 6 | 7 | ENV LC=zh_CN.UTF-8 \ 8 | LANG=zh_CN.UTF-8 \ 9 | WINEARCH=win32 \ 10 | WINEPREFIX=/tmp/.wine 11 | 12 | RUN cd /toolchain && ls && \ 13 | 14 | # fix commands missing 15 | apt-get update && \ 16 | apt-get install -y wget locales xvfb && \ 17 | 18 | # enable i386 architecture 19 | dpkg --add-architecture i386 && \ 20 | 21 | # install winehq 22 | wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key && \ 23 | wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/noble/winehq-noble.sources && \ 24 | apt-get update && \ 25 | apt-get install -y wine-devel winetricks && \ 26 | 27 | # configure locale to zhcn 28 | locale-gen zh_CN.UTF-8 && \ 29 | 30 | # wine init 31 | wineboot && \ 32 | winetricks winxp && \ 33 | 34 | # import epl default settings 35 | # enable fast array access, no dll check, no deadloop check 36 | cat config.reg >> $WINEPREFIX/user.reg && \ 37 | 38 | # clean 39 | apt-get clean 40 | 41 | ENTRYPOINT ["/entrypoint.sh"] 42 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2004 Sam Hocevar 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## el-buildtool 2 | 3 | This EPL build tool enables you to compile the EPL code without your win32 environment, 4 | and support the modern CI/CD-driven development. 5 | 6 | This EPL build tool can only compile the EPL source file as a Win32 COFF file (*.obj), and we can use the GCC to link it to a standard executable file. It can't generate the Win32 executable file directly. 7 | 8 | You may notice that the EPL is not an open source language, Its source file is completely binary, we can even set a password for encrypting it. And the EPL compiler is not open source either. 9 | 10 | Thus, we have to use the binary located in [rootfs/el](rootfs/el). 11 | 12 | The ecl.exe comes from the EPL community, it can drive the e.exe parameterized compiles without creating the GUI. 13 | 14 | ![LICENSE](https://img.shields.io/static/v1?label=LICENSE&message=WTFPL&color=lightgrey) 15 | ![CI/CD](https://img.shields.io/static/v1?label=Action&message=v1&color=green) 16 | 17 | ## Use this Action 18 | 19 | More arguments can be found in the [action.yml](action.yml) file. 20 | 21 | ```yml 22 | uses: TheSnowfeld/el-buildtool@v1 23 | 24 | # the EPL source code file 25 | file: rootfs/test/main.e 26 | 27 | # compiler option: Enable the fast array accessing mode 28 | opt_fast_array: true 29 | 30 | # compiler option: Enable the stack checking after DLL calling 31 | opt_stack_check: false 32 | 33 | # compiler option: Enable the compile-time deadloop checking 34 | opt_deadloop_check: false 35 | ``` 36 | 37 | ## Credits 38 | - EPL (Easy Programming Language) IDE 39 | from the web 40 | - ecl.exe [@zhongjianhua163](https://github.com/zhongjianhua163) 41 | [https://bbs.125.la/thread-14625796-1-1.html](https://bbs.125.la/thread-14625796-1-1.html) 42 | 43 | ## License 44 | This project is licensed under the WTFPL License, 45 | See the [LICENSE](LICENSE) file for details. 46 | -------------------------------------------------------------------------------- /action-ci.yml: -------------------------------------------------------------------------------- 1 | name: 'el-buildtool' 2 | author: 'TheSnowfield' 3 | branding: 4 | color: gray-dark 5 | icon: terminal 6 | description: 'This action provides the command-line compile toolchain for EPL' 7 | inputs: 8 | file: 9 | description: 'The name path of the EPL source file (*.e)' 10 | required: true 11 | password: 12 | description: 'Provides the password of the source file' 13 | required: false 14 | quiet: 15 | description: 'Keep compiler quite, only print the error messages' 16 | required: false 17 | default: false 18 | opt_fast_array: 19 | description: 'Enables the fast array accessing mode' 20 | required: false 21 | default: true 22 | opt_stack_check: 23 | description: 'Enables the stack check after calling the DLL function' 24 | required: false 25 | default: false 26 | opt_deadloop_check: 27 | description: 'Enables the deadloop check' 28 | required: false 29 | default: false 30 | runs: 31 | using: 'docker' 32 | image: 'Dockerfile' 33 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: 'el-buildtool' 2 | author: 'TheSnowfield' 3 | branding: 4 | color: gray-dark 5 | icon: terminal 6 | description: 'This action provides the command-line compile toolchain for EPL' 7 | inputs: 8 | file: 9 | description: 'The name path of the EPL source file (*.e)' 10 | required: true 11 | password: 12 | description: 'Provides the password of the source file' 13 | required: false 14 | quiet: 15 | description: 'Keep compiler quite, only print the error messages' 16 | required: false 17 | default: false 18 | opt_fast_array: 19 | description: 'Enables the fast array accessing mode' 20 | required: false 21 | default: true 22 | opt_stack_check: 23 | description: 'Enables the stack check after calling the DLL function' 24 | required: false 25 | default: false 26 | opt_deadloop_check: 27 | description: 'Enables the deadloop check' 28 | required: false 29 | default: false 30 | runs: 31 | using: 'docker' 32 | image: 'docker://ghcr.io/thesnowfield/el-buildtool:latest' 33 | -------------------------------------------------------------------------------- /entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -l 2 | 3 | echo "INPUT_FILE: $INPUT_FILE" 4 | echo "INPUT_QUIET: $INPUT_QUIET" 5 | echo "INPUT_PASSWORD: $INPUT_PASSWORD" 6 | echo "INPUT_OPT_FAST_ARRAY: $INPUT_OPT_FAST_ARRAY" 7 | echo "INPUT_OPT_STACK_CHECK: $INPUT_OPT_STACK_CHECK" 8 | echo "INPUT_OPT_DEADLOOP_CHECK: $INPUT_OPT_DEADLOOP_CHECK" 9 | echo "GITHUB_WORKSPACE: $GITHUB_WORKSPACE" 10 | 11 | export TOOLCHAIN="/toolchain" 12 | _cmd_line="" 13 | 14 | # set password 15 | if [ "$INPUT_QUIET" = "true" ]; then 16 | _cmd_line="$_cmd_line -q" 17 | fi 18 | 19 | # keep quiet 20 | if [ "$INPUT_PASSWORD" != "" ]; then 21 | _cmd_line="$_cmd_line -pwd \"${INPUT_PASSWORD}\"" 22 | fi 23 | 24 | # compiler option: fast array access mode 25 | if [ "$INPUT_OPT_FAST_ARRAY" = "true" ]; then 26 | _cmd_line="$_cmd_line -FastArry" 27 | else 28 | _cmd_line="$_cmd_line -FastArry-" 29 | fi 30 | 31 | # compiler option: check stack after calling DLL 32 | if [ "$INPUT_OPT_CHECK_STACK" = "true" ]; then 33 | _cmd_line="$_cmd_line -CheckDllStack" 34 | else 35 | _cmd_line="$_cmd_line -CheckDllStack-" 36 | fi 37 | 38 | # compiler option: check deadloop 39 | if [ "$INPUT_OPT_CHECK_DEADLOOP" = "true" ]; then 40 | _cmd_line="$_cmd_line -CheckLoop" 41 | else 42 | _cmd_line="$_cmd_line -CheckLoop-" 43 | fi 44 | 45 | # start xvfb service then compile the code 46 | $TOOLCHAIN/xvfb-ctl start && \ 47 | $TOOLCHAIN/compile $TOOLCHAIN/el $GITHUB_WORKSPACE/$INPUT_FILE - $_cmd_line && \ 48 | $TOOLCHAIN/xvfb-ctl stop 49 | -------------------------------------------------------------------------------- /rootfs/compile: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | _e_dir=$1 4 | _src=$2 5 | _dst=$3 6 | shift 3 7 | _cmd_line=$@ 8 | 9 | _obj=${_src%.*}.obj 10 | _res=${_src%.*}.res 11 | 12 | # check the args 13 | if [ "$_src" == "" ]; then 14 | echo "Usage: compile [output (*.obj)|-] [custom cmds]" 15 | exit -1 16 | fi 17 | 18 | echo "$_e_dir/ecl.exe make $_src -epath $_e_dir/e.exe -s $_cmd_line" 19 | 20 | # execute e.exe to compile the code 21 | LANG=zh_CN.UTF-8 DISPLAY=:99 wine \ 22 | $_e_dir/ecl.exe make $_src -epath $_e_dir/e.exe -s $_cmd_line 23 | 24 | # check result file exists 25 | if [ ! -e "$_obj" ]; then 26 | echo "Compilation failed" 27 | exit -1 28 | fi 29 | 30 | # delete redundant *.res file 31 | rm $_res 32 | 33 | # if the output path is empty or -, move the file to destination 34 | if [ "$_dst" != "" ] && [ "$_dst" != "-" ]; then 35 | mv "$_obj" "$_dst" 36 | _dst=$_obj 37 | fi 38 | 39 | echo "Out: $_obj" 40 | exit 0 41 | -------------------------------------------------------------------------------- /rootfs/config.reg: -------------------------------------------------------------------------------- 1 | [Software\\FlySky\\E\\EInf40] 1726498578 2 | #time=1db084895ed16b6 3 | "CoolBar40"=hex:04,00,00,00,04,00,00,00,81,00,00,00,bf,01,00,00,98,01,00,00,c8,\ 4 | 01,00,00,8f,01,00,00,c5,01,00,00,8f,01,00,00,f4,01,00,00,82,00,00,00,ad,04,\ 5 | 00,00,6e,01,00,00,b6,04,00,00,65,01,00,00,b3,04,00,00,65,01,00,00,f4,01,00,\ 6 | 00,84,00,00,00,ad,04,00,00,6e,01,00,00,b6,04,00,00,65,01,00,00,72,06,00,00,\ 7 | 65,01,00,00,f4,01,00,00,6e,00,00,00,7e,00,00,00,35,01,00,00,87,00,00,00,2c,\ 8 | 01,00,00,84,00,00,00,2c,01,00,00,f4,01,00,00 9 | "Language"=dword:00000001 10 | "SaveE40"=hex:3c,20,7e,cb,cc,d9,2a,cb,04,00,00,00,cb,cc,d9,2a,8c,d9,2a,cb,cc,\ 11 | d9,2a,cb,cc,d9,2a,cb,fc,d4,1f,fd,fc,d4,1e,f3,fd,d4,18,fc,ff,e9,27,fa,f4,ee,\ 12 | 1a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,\ 13 | cb,cc,d9,2a,cb,33,26,d5,34,cc,d9,2a,cb,cd,d9,2a,cb,cd,d9,2a,cb,cc,d9,2a,cb,\ 14 | 33,26,d5,cb,cc,d9,2a,cb,4c,d9,2a,cb,2a,34,ce,cb,33,26,d5,cb,20,35,c6,cb,33,\ 15 | 26,d5,cb,2a,34,ce,cb,33,26,d5,cb,15,3a,da,cb,33,26,d5,cb,33,26,d5,cb,cc,d9,\ 16 | aa,cb,33,26,d5,cb,4c,d9,2a,cb,cc,d9,d5,cb,cc,d9,2a,cb,4c,d9,2a,cb,cc,d9,2a,\ 17 | cb,cc,59,2a,cb,cc,d9,aa,cb,cc,d9,aa,cb,cc,d9,aa,cb,cc,d9,2a,cb,cc,d9,aa,cb,\ 18 | cc,d9,aa,cb,4c,d9,2a,cb,cc,d9,aa,cb,cc,d9,aa,cb,cc,59,aa,cb,cc,d9,aa,cb,cc,\ 19 | d9,2a,cb,4c,59,aa,cb,44,51,a2,cb,33,26,d5,cb,ac,b9,4a,cb,cc,d9,aa,cb,cc,d9,\ 20 | 2a,cb,20,35,c6,cb,cc,d9,2a,cb,cc,d9,d5,cb,cc,d9,2a,cb,4c,d9,2a,cb,cc,d9,aa,\ 21 | cb,cc,d9,aa,cb,cc,d9,aa,cb,cc,d9,aa,cb,52,7b,9e,cb,cc,d9,aa,cb,1c,07,c9,cb,\ 22 | cc,d9,2a,cb,33,26,d5,cb,33,26,d5,cb,cc,b9,ea,cb,ac,b9,4a,cb,0c,19,ea,cb,6c,\ 23 | 79,8a,cb,da,d9,2a,cb,c8,d9,2a,cb,c8,d9,2a,cb,c8,d9,2a,cb,24,26,d5,34,cc,d9,\ 24 | 2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,5c,d8,2a,cb,cc,d9,2a,4d,cc,d9,2a,e9,81,8a,0a,\ 25 | 98,a4,bc,46,a7,ec,9d,46,ac,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,\ 26 | cc,d9,2a,cb,cd,d9,2a,cb,cc,d9,2a,cb,cd,d9,2a,cb,cd,d9,2a,cb,cc,d9,2a,cb,cd,\ 27 | d9,2a,cb,cd,d9,2a,cb,cc,d9,2a,cb,cd,d9,2a,cb,cd,d9,2a,cb,cd,d9,2a,cb,cd,d9,\ 28 | 2a,cb,cc,d9,0a,cb,cd,d9,2a,cb,c6,d9,2a,cb,cd,d9,2a,cb,cd,d9,2a,cb,cd,d9,2a,\ 29 | cb,f7,d9,2a,cb,cc,d9,2a,cb,cd,d9,2a,cb,cc,d9,2a,cb,6d,69,2a,cb,6d,68,2a,cb,\ 30 | 97,d9,2a,cb,91,d9,2a,cb,97,d9,2a,cb,91,d9,2a,cb,e4,d9,2a,cb,e5,d9,2a,cb,e0,\ 31 | d9,2a,cb,e2,d9,2a,cb,b7,d9,2a,cb,b1,d9,2a,cb,ef,d9,2a,cb,ea,d9,2a,cb,b0,d8,\ 32 | 2a,cb,36,d9,2a,cb,c6,d9,2a,cb,cd,d9,2a,cb,c4,d9,2a,cb,c4,d9,2a,cb,cd,d9,2a,\ 33 | cb,cd,d9,2a,cb,cd,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cd,d9,2a,cb,\ 34 | cd,d9,2a,cb,04,d9,2a,cb,a8,d9,2a,cb,5a,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,\ 35 | d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,c8,d9,\ 36 | 2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,\ 37 | cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,\ 38 | cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,\ 39 | d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,\ 40 | 2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,\ 41 | cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,\ 42 | cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cd,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,\ 43 | d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cc,d9,2a,cb,cd,d9,\ 44 | 2a,cb 45 | "SaveStr40"=hex:04,00,00,00,a6,00,00,00,06,00,00,00,17,2d,01,0d,2b,2d,01,0d,79,\ 46 | 5f,6f,61,7c,20,65,3d,2b,4b,33,3e,26,1d,39,3c,2a,18,30,3c,76,1e,38,3b,74,1b,\ 47 | 60,6c,74,15,35,39,71,1a,64,3e,20,18,0c,38,1f,1e,0c,c2,a7,e0,b2,b7,d9,fd,c5,\ 48 | db,b5,9e,d7,b2,f0,2d,01,0d,12,2d,01,0d,12,2d,01,0d,12,2d,01,0d,12,2d,01,0d,\ 49 | 12,29,01,0d,12,2b,01,0d,12,98,bc,d8,e9,e7,fc,1a,12,2d,01,52,4d,4a,64,79,4d,\ 50 | 44,65,79,4d,5a,73,6c,62,5d,64,7f,4d,48,6f,79,60,54,04,0d,12,2d,64,75,7b,5e,\ 51 | 75,0e,12,2d,01,6c,60,4a,01,0d,12,2d,01,0d,12,2d,01,0d,12,2d 52 | "Type"=dword:00000001 53 | "Ver"=dword:00000004 54 | -------------------------------------------------------------------------------- /rootfs/el/159544386.key: -------------------------------------------------------------------------------- 1 | 3A7FEF86D9A344BD279538025A6B881ED798010002DEEA0151B9C722075E0618F6B153ACB49B357E402DF46BB4169E78E7CD6760544CD4C4419373A6AEEA5B2CA46C0CDB3A2CD98E980EF419DBE10EA4F470B097172A44DB547D505DAF6187B8FCC4153A7FE91BEB33BE7FC71913C0FD26F7F6FE36B24C824FCFA51F2795EF0294CDC0C2F9917B370A5DB5F2D95BC05D328D0BA8D28442C2B451D7AE3E25E0585793F9BA8E4CC40460E58F38A49233145220218FEB7371944C5D41184B329739CB70792D6D04823C5AF45FE62DE7A3F6420FFECF6EAD0F8A83D9D21BF6433FABA1732B91CF085F0CDD4F0CA305FED4B717B4D1390B25ADD104578B63D252535BE04E362ADA6820117E8E274E7D93A0605EAD954C3AFFF3C8F4BADE8 -------------------------------------------------------------------------------- /rootfs/el/bin/LINK.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheSnowfield/el-buildtool/a601648b1d32005bfca58cc44b48a0186e442872/rootfs/el/bin/LINK.EXE -------------------------------------------------------------------------------- /rootfs/el/e.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheSnowfield/el-buildtool/a601648b1d32005bfca58cc44b48a0186e442872/rootfs/el/e.exe -------------------------------------------------------------------------------- /rootfs/el/ecl.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheSnowfield/el-buildtool/a601648b1d32005bfca58cc44b48a0186e442872/rootfs/el/ecl.exe -------------------------------------------------------------------------------- /rootfs/el/lib/dp1.fne: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheSnowfield/el-buildtool/a601648b1d32005bfca58cc44b48a0186e442872/rootfs/el/lib/dp1.fne -------------------------------------------------------------------------------- /rootfs/el/lib/krnln.fne: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheSnowfield/el-buildtool/a601648b1d32005bfca58cc44b48a0186e442872/rootfs/el/lib/krnln.fne -------------------------------------------------------------------------------- /rootfs/el/tools/link.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheSnowfield/el-buildtool/a601648b1d32005bfca58cc44b48a0186e442872/rootfs/el/tools/link.dll -------------------------------------------------------------------------------- /rootfs/el/tools/link.ini: -------------------------------------------------------------------------------- 1 | [linker] 2 | linker=.\bin\LINK.exe 3 | show_command_line=yes 4 | stop_if_too_many_errors=no 5 | retain_intermediate_files=yes 6 | show_warning=yes 7 | -------------------------------------------------------------------------------- /rootfs/test/main.e: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheSnowfield/el-buildtool/a601648b1d32005bfca58cc44b48a0186e442872/rootfs/test/main.e -------------------------------------------------------------------------------- /rootfs/xvfb-ctl: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | _command=$1 4 | 5 | #check if Xvfb installed 6 | if [ "$(command -v Xvfb)" == "" ]; then 7 | echo "You've not installed Xvfb, abort" 8 | exit -1 9 | fi 10 | 11 | if [ "$_command" == "start" ]; then 12 | echo "Starting Xvfb at display :99" 13 | (Xvfb :99 &) 2>&1 14 | 15 | elif [ "$_command" == "stop" ]; then 16 | echo "Stop Xvfb" 17 | pkill Xvfb 18 | 19 | else 20 | echo "Usage: xvfb-ctl " 21 | fi 22 | --------------------------------------------------------------------------------