From 5bcdb80d8b58d3667f1e1a966c4b2639d98b9759 Mon Sep 17 00:00:00 2001 From: msojocs Date: Thu, 3 Mar 2022 23:20:45 +0800 Subject: [PATCH] update: deb build --- .github/workflows/release.yml | 37 ++++---------------- docs/Nodegit.MD | 2 ++ res/appimage.desktop | 3 +- res/aur/PKGBUILD | 2 +- res/deb.desktop | 13 +++++++ res/deb/data/DEBIAN/control | 5 +++ res/deb/docker-compose.yml | 13 +++++++ res/deb/docker/Dockerfile | 30 ++++++++++++++++ res/deb/docker/docker-entrypoint | 59 ++++++++++++++++++++++++++++++++ res/mpr/docker-compose.yml | 7 ++++ res/mpr/docker/entrypoint | 34 ++++++++++++++++++ test/test-bash | 8 +++++ tools/build-aur.sh | 6 ---- tools/build-deb.sh | 9 +++++ tools/setup-wechat-devtools-bash | 22 ++++++++---- 15 files changed, 205 insertions(+), 45 deletions(-) create mode 100644 res/deb.desktop create mode 100644 res/deb/data/DEBIAN/control create mode 100644 res/deb/docker-compose.yml create mode 100644 res/deb/docker/Dockerfile create mode 100755 res/deb/docker/docker-entrypoint create mode 100644 res/mpr/docker-compose.yml create mode 100755 res/mpr/docker/entrypoint create mode 100755 tools/build-deb.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 69b9a05..c86d6de 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -91,11 +91,10 @@ jobs: build-deb: name: Build Deb Package - runs-on: ubuntu-latest + runs-on: ubuntu-18.04 strategy: matrix: - node-version: [16.x] ARCH: ['x86_64'] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ @@ -103,26 +102,6 @@ jobs: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - - name: Prepare - run: | - pwd - ls -l - export ACTION_MODE=true - sudo apt-get install -y libx11-dev libxkbfile-dev p7zip-full python2 python3 libkrb5-dev gcc openssl libssh2-1-dev g++ make - npm install node-gyp nw-gyp npm -g - node-gyp install - # https://docs.makedeb.org/home/installing/apt-repository/ - wget -qO - 'https://proget.hunterwittenborn.com/debian-feeds/makedeb.pub' | \ - gpg --dearmor | \ - sudo tee /usr/share/keyrings/makedeb-archive-keyring.gpg &> /dev/null - echo 'deb [signed-by=/usr/share/keyrings/makedeb-archive-keyring.gpg arch=all] https://proget.hunterwittenborn.com/ makedeb main' | \ - sudo tee /etc/apt/sources.list.d/makedeb.list - sudo apt update - sudo apt-get install -y makedeb gconf2 - name: Generate TAG id: Tag @@ -139,16 +118,14 @@ jobs: - name: Build Deb Package run: | - tools/build-aur.sh deb + export BUILD_VERSION=${{ steps.tag.outputs.tag }} + tools/build-deb.sh # deb - cd tmp/AUR - makedeb - cd ../ - # ./tmp - ls -l AUR + sudo chmod -R 777 tmp + cd tmp + ls -l deb mkdir -p build - mv AUR/*.deb build - rm -rf AUR/pkg AUR/src + mv deb/*.deb build ls -l build - name: Upload artifact diff --git a/docs/Nodegit.MD b/docs/Nodegit.MD index 27f2b72..b380507 100644 --- a/docs/Nodegit.MD +++ b/docs/Nodegit.MD @@ -2,6 +2,8 @@ NodeJS v16.x下安装nodegit 1. `apt-get install -y python2 python3 libkrb5-dev gcc openssl libssh2-1-dev g++ make` 2. `npm install nodegit` +python >= 3.6 + ## docker-compose.yaml ```yaml version: "3" diff --git a/res/appimage.desktop b/res/appimage.desktop index 38b523d..4738da9 100644 --- a/res/appimage.desktop +++ b/res/appimage.desktop @@ -9,4 +9,5 @@ Icon=wechat-devtools Type=Application Terminal=false StartupWMClass=wechat_devtools -Actions= \ No newline at end of file +Actions= +MimeType=x-scheme-handler/wechatide \ No newline at end of file diff --git a/res/aur/PKGBUILD b/res/aur/PKGBUILD index 78647a2..7bbcbce 100755 --- a/res/aur/PKGBUILD +++ b/res/aur/PKGBUILD @@ -64,7 +64,7 @@ prepare() { ls | grep node-*linux* | xargs -I{} mv {} node ls | grep nwjs-*linux* | xargs -I{} mv {} nwjs - mkdir tools + mkdir -p tools for file in *.js *.sh; do mv $file tools; done diff --git a/res/deb.desktop b/res/deb.desktop new file mode 100644 index 0000000..0a8602f --- /dev/null +++ b/res/deb.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Name=WeChat Dev Tools +Name[zh_CN]=微信开发者工具 +Comment=The development tools for wechat projects +Comment[zh_CN]=提供微信开发相关项目的开发IDE支持 +Categories=Development;WebDevelopment;IDE; +Exec=/opt/wechat-devtools/bin/wechat-devtools +Icon=wechat-devtools +Type=Application +Terminal=false +StartupWMClass=wechat_devtools +Actions= +MimeType=x-scheme-handler/wechatide \ No newline at end of file diff --git a/res/deb/data/DEBIAN/control b/res/deb/data/DEBIAN/control new file mode 100644 index 0000000..c67617d --- /dev/null +++ b/res/deb/data/DEBIAN/control @@ -0,0 +1,5 @@ +Package: wechat-devtools +Version: BUILD_VERSION +Maintainer: msojocs +Architecture: amd64 +Description: WeChat Devtools For Linux. diff --git a/res/deb/docker-compose.yml b/res/deb/docker-compose.yml new file mode 100644 index 0000000..a0ba8fa --- /dev/null +++ b/res/deb/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3" +services: + wechat_devtools: + image: jiyecafe/wechat-devtools-build:v1 + # build: + # context: ./docker + # dockerfile: Dockerfile + environment: + - NO_WINE=${NO_WINE:-true} + - BUILD_VERSION=${BUILD_VERSION:-v0} + volumes: + - ./../../:/workspace + entrypoint: /workspace/res/deb/docker/docker-entrypoint \ No newline at end of file diff --git a/res/deb/docker/Dockerfile b/res/deb/docker/Dockerfile new file mode 100644 index 0000000..b346f46 --- /dev/null +++ b/res/deb/docker/Dockerfile @@ -0,0 +1,30 @@ +FROM debian:9.13-slim + +WORKDIR /workspace + +RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && \ + sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && \ + sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && \ + mkdir -p /build_temp/python36 /build_temp/nodejs && \ + apt update && \ + apt install -y binutils software-properties-common gcc g++ \ + gconf2 libxkbfile-dev p7zip-full make libssh2-1-dev libkrb5-dev wget \ + openssl pkg-config build-essential && \ + cd /build_temp/python36 && \ + apt-get install -y aptitude &&\ + aptitude -y install gcc make zlib1g-dev libffi-dev libssl-dev &&\ + mkdir -p test && cd test &&\ + wget http://npm.taobao.org/mirrors/python/3.6.5/Python-3.6.5.tgz &&\ + tar -xvf Python-3.6.5.tgz &&\ + chmod -R +x Python-3.6.5 &&\ + cd Python-3.6.5/ &&\ + ./configure &&\ + aptitude -y install libffi-dev libssl-dev &&\ + make && make install &&\ + cd /build_temp/nodejs &&\ + wget https://deb.nodesource.com/setup_16.x &&\ + chmod +x setup_16.x &&\ + ./setup_16.x &&\ + apt-get install -y nodejs &&\ + rm -rf /build_temp && \ + apt install -y gosu diff --git a/res/deb/docker/docker-entrypoint b/res/deb/docker/docker-entrypoint new file mode 100755 index 0000000..6371632 --- /dev/null +++ b/res/deb/docker/docker-entrypoint @@ -0,0 +1,59 @@ +#!/bin/bash +# set -e + +notice() { + echo -e "\033[36m $1 \033[0m " +} + +strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC +strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_2.2 +# gcc -v +# g++ -v +# cc -v +# node --version +# python --version +# python3 --version + +echo "==============" +cd /workspace +# mkdir -p tmp/test/node_modules +# cd tmp/test +# npm install nodegit +# tail -f /etc/issue +./tools/setup-wechat-devtools-bash + +############ 构建deb包 ################ +root_dir=$(cd `dirname $0`/../../.. && pwd -P) +echo "root_dir: $root_dir" +tmp_dir="$root_dir/tmp" +app_dir="$root_dir/tmp/deb" + +# Remove any previous build +rm -rf $app_dir +# Make usr and icons dirs +notice "Make Dirs" +mkdir -p $app_dir/opt/wechat-devtools/bin +mkdir -p $app_dir/usr/{src,bin} +mkdir -p $app_dir/usr/share/{metainfo,icons,applications} + +notice "COPY Files" +cp -r "$root_dir/res/deb/data"/* $app_dir +cp "$root_dir/bin/wechat-devtools" "$app_dir/opt/wechat-devtools/bin" +cp "$root_dir/res/deb.desktop" "$app_dir/usr/share/applications/wechat-devtools.desktop" +if [[ ! $BUILD_VERSION -eq 'continuous' ]];then + sed -i "s/BUILD_VERSION/${BUILD_VERSION//v/}/" "$app_dir/DEBIAN/control" +else + sed -i "s/BUILD_VERSION/0/" "$app_dir/DEBIAN/control" +fi +cp "$root_dir/res/icons/wechat-devtools.png" "$app_dir/usr/share/icons/wechat-devtools.png" + +cp -r "$root_dir/package.nw" "$app_dir/opt/wechat-devtools/package.nw" +cp -r "$root_dir/nwjs" "$app_dir/opt/wechat-devtools/nwjs" +rm -rf "$app_dir/opt/wechat-devtools/nwjs"/{node,node.exe} +cp "$root_dir/node/bin/node" "$app_dir/opt/wechat-devtools/nwjs/node" +cd "$app_dir/opt/wechat-devtools/nwjs/" && ln -s "node" "node.exe" + +notice "BUILD DEB Package" +cd "$root_dir/tmp/deb" +ls -l "$root_dir/tmp/deb" +dpkg-deb -b . "WeChat_Dev_Tools_$BUILD_VERSION.deb" diff --git a/res/mpr/docker-compose.yml b/res/mpr/docker-compose.yml new file mode 100644 index 0000000..c15863a --- /dev/null +++ b/res/mpr/docker-compose.yml @@ -0,0 +1,7 @@ +version: "3" +services: + wechat_devtools: + image: proget.hunterwittenborn.com/docker/makedeb/makedeb:ubuntu-bionic + volumes: + - .:/workspace + entrypoint: /workspace/docker/entrypoint diff --git a/res/mpr/docker/entrypoint b/res/mpr/docker/entrypoint new file mode 100755 index 0000000..9d28f8b --- /dev/null +++ b/res/mpr/docker/entrypoint @@ -0,0 +1,34 @@ +#!/bin/bash + +root_dir=$(cd `dirname $0`/.. && pwd -P) +# exit 1 +sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list + +strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC +strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_2.2 + +sudo apt-get update +sudo apt install -y python gconf2 libxkbfile-dev p7zip-full make libssh2-1-dev libkrb5-dev +sudo apt-get install -y openssl pkg-config build-essential gcc-8 g++-8 git +sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 + +# install bsdtar 3.3.0 +wget https://launchpad.net/ubuntu/+source/libarchive/3.3.3-1/+build/15782551/+files/libarchive13_3.3.3-1_amd64.deb +sudo dpkg -i libarchive13_3.3.3-1_amd64.deb +wget https://launchpad.net/ubuntu/+source/libarchive/3.3.3-1/+build/15782551/+files/libarchive-tools_3.3.3-1_amd64.deb +sudo dpkg -i libarchive-tools_3.3.3-1_amd64.deb +wget http://launchpadlibrarian.net/401610929/bsdtar_3.3.3-1_all.deb +sudo dpkg -i bsdtar_3.3.3-1_all.deb +bsdtar --version +bsdtar --no-fflags + +# sudo chmod -R 777 /workspace +cd /workspace +rm -rf src +gcc -v +g++ -v +cc -v +makedeb --printsrcinfo | tee .SRCINFO +ls -la +makedeb -s +# tail -f /etc/issue \ No newline at end of file diff --git a/test/test-bash b/test/test-bash index 46322b1..27d8450 100644 --- a/test/test-bash +++ b/test/test-bash @@ -1,5 +1,13 @@ #!/bin/bash +BUILD_VERSION='v1' +if [[ ! $BUILD_VERSION -eq 'continuous' ]];then + BUILD_VERSION=v0 +fi +echo $BUILD_VERSION +sed -i "s/BUILD_VERSION/${BUILD_VERSION//v/}/" "/mnt/disk2/wechat-web-devtools-linux/tmp/deb/DEBIAN/control" + +exit if [[ $NO_WINE == 'true' ]];then echo "not wine" diff --git a/tools/build-aur.sh b/tools/build-aur.sh index 5cdb043..554ef76 100755 --- a/tools/build-aur.sh +++ b/tools/build-aur.sh @@ -11,11 +11,5 @@ cp "$root_dir/tools"/*.js "$build_dir" cp "$root_dir/res/aur"/* "$build_dir" sed -i 's/download.fastgit.org/github.com/' "$build_dir/PKGBUILD" -if [[ $1 == 'deb' ]];then - sed -i 's/libssh2/libssh2-1-dev/' "$build_dir/PKGBUILD" - sed -i 's/libxkbfile/libxkbfile-dev/' "$build_dir/PKGBUILD" - sed -i 's/gconf/gconf2/' "$build_dir/PKGBUILD" - sed -i 's/krb5/libkrb5-dev/' "$build_dir/PKGBUILD" -fi cd $build_dir # makepkg \ No newline at end of file diff --git a/tools/build-deb.sh b/tools/build-deb.sh new file mode 100755 index 0000000..d045680 --- /dev/null +++ b/tools/build-deb.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +root_dir=$(cd `dirname $0`/.. && pwd -P) +BUILD_VERSION=$1 + +cd $root_dir/res/deb +pwd +# docker-compose down +docker-compose up \ No newline at end of file diff --git a/tools/setup-wechat-devtools-bash b/tools/setup-wechat-devtools-bash index a28a309..8fa0f5f 100755 --- a/tools/setup-wechat-devtools-bash +++ b/tools/setup-wechat-devtools-bash @@ -35,14 +35,14 @@ if [ ! -f "$root_dir/node/bin/node" ]; then fail "Node安装失败" exit fi - -# 将node加入环境 + # 将node加入环境 export PATH="$root_dir/node/bin":$PATH -echo "=====安装node-gyp nw-gyp====" -npm uninstall node-gyp -g -npm install node-gyp nw-gyp npm -g --registry=https://registry.npm.taobao.org -node-gyp install -node-gyp list + echo "=====安装node-gyp nw-gyp====" + npm uninstall node-gyp -g + npm install node-gyp nw-gyp npm -g --registry=https://registry.npm.taobao.org + node-gyp install + node-gyp list + echo "==========Initializing nwjs==========" if [ -f "$root_dir/nwjs/nw" ]; then @@ -51,6 +51,14 @@ else node "$root_dir/tools/update-nwjs-node" fi +# rm -rf "$root_dir/tmp/7z" +# mkdir -p "$root_dir/tmp/7z" +# cd "$root_dir/tmp/7z" +# wget https://www.7-zip.org/a/7z2107-linux-x64.tar.xz +# tar -xJf 7z2107-linux-x64.tar.xz +# ln -s 7zz 7z +# export PATH="$root_dir/tmp/7z:$PATH" +# 7z echo "==========Initializing wechat-devtools package==========" if [ -f "$root_dir/package.nw/package.json" ]; then success "微信开发者工具安装完毕"