name: Static Post-Release Build # on: [push] # # on: # release: # types: [published] on: [workflow_dispatch] # TODO: # - Can we check out first, bootstrap and then cache/upload/download into container? # - Build for sunOS? # - Cache / Speedup VM builds (OpenBSD, FreeBSD, macOS) permissions: contents: write env: OPENSSL_VER: 1.1.1w VER: 1.4.44dev1 jobs: # Create release Tarballs Source: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: dist run: | ./bootstrap ./configure make dist - name: Upload dist uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: gsocket-*.tar.gz # overwrite: true file_glob: true tag: v${{ env.VER }} MacOS: runs-on: macos-13 steps: - uses: actions/checkout@v3 - name: Compile run: | brew install automake ./bootstrap ./configure --prefix=/opt --enable-static make all strip tools/gs-netcat (cd tools; tar cfz ../gsocket_macOS.tar.gz gs-netcat gsocket blitz gs-mount gs-sftp gs_funcs gsocket_dso.so.0 gsocket_uchroot_dso.so.0) mv tools/gs-netcat gs-netcat_macOS - name: Upload gs-netcat to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: gs-netcat_* overwrite: true file_glob: true tag: v${{ env.VER }} - name: Upload gsocket to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: gsocket_* overwrite: true file_glob: true tag: v${{ env.VER }} FreeBSD: env: OS: "freebsd" runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Starting the VM uses: vmactions/freebsd-vm@v1 with: usesh: true prepare: | pkg install -y curl automake autoconf gcc run: | curl -SsfL https://www.openssl.org/source/openssl-${OPENSSL_VER:-1.1.1w}.tar.gz | tar -xzf - -C /tmp/ ( cd /tmp/openssl-${OPENSSL_VER:-1.1.1w} && \ ./Configure --prefix=/opt no-tests no-dso no-threads no-shared BSD-generic64 && \ make install_sw ) rm -rf rm -rf /tmp/openssl-${OPENSSL_VER:-1.1.1w} /opt/bin/openssl /opt/bin/c_rehash ./bootstrap ./configure --enable-static --prefix=/opt make all strip tools/gs-netcat (cd tools; tar cfz ../gsocket_${{ env.OS }}-x86_x64.tar.gz gs-netcat gsocket blitz gs-mount gs-sftp gs_funcs gsocket_dso.so.0 gsocket_uchroot_dso.so.0) mv tools/gs-netcat gs-netcat_${{ env.OS }}-x86_64 - name: Upload gs-netcat to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: gs-netcat_* overwrite: true file_glob: true tag: v${{ env.VER }} - name: Upload gsocket to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: gsocket_* overwrite: true file_glob: true tag: v${{ env.VER }} # https://github.com/vmactions/openbsd-vm OpenBSD: env: OS: "openbsd" runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Starting the VM uses: vmactions/openbsd-vm@v1 with: usesh: true prepare: | pkg_add curl pkg_add autoconf-2.71 pkg_add automake-1.16.5 pkg_add openssl-3.0.8 pkg_info -Q tar pkg_add gcc-11.2.0p3 pkg_add gmake pkg_add tar run: | curl -SsfL https://www.openssl.org/source/openssl-${OPENSSL_VER:-1.1.1w}.tar.gz | tar -xzf - -C /tmp/ ( cd /tmp/openssl-${OPENSSL_VER:-1.1.1w} && \ ./Configure --prefix=/opt no-tests no-dso no-threads no-shared BSD-generic64 && \ make install_sw ) rm -rf rm -rf /tmp/openssl-${OPENSSL_VER:-1.1.1w} /opt/bin/openssl /opt/bin/c_rehash export AUTOCONF_VERSION=2.71 export AUTOMAKE_VERSION=1.16 ./bootstrap ./configure --enable-static --prefix=/opt make all strip tools/gs-netcat (cd tools; tar cfz ../gsocket_${{ env.OS }}-x86_x64.tar.gz gs-netcat gsocket blitz gs-mount gs-sftp gs_funcs gsocket_dso.so.0 gsocket_uchroot_dso.so.0) mv tools/gs-netcat gs-netcat_${{ env.OS }}-x86_64 # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v3 # - name: Compile # uses: vmactions/openbsd-vm@v1 # with: # usesh: true # prepare: | # pkg_add curl # pkg_add autoconf-2.71 # pkg_add automake-1.16.5 # pkg_add openssl-3.0.8 # pkg_info -Q tar # pkg_add gcc-11.2.0p3 # pkg_add gmake # pkg_add tar # run: | # export AUTOCONF_VERSION=2.71 # export AUTOMAKE_VERSION=1.16 # ./bootstrap # export CPPFLAGS="-I/usr/local/include/eopenssl30/" # export LDFLAGS="-L/usr/local/lib/eopenssl30/" # ./configure --enable-static # make all # strip tools/gs-netcat # (cd tools; tar cfz ../gsocket_openbsd-x86_x64.tar.gz gs-netcat gsocket blitz gs-mount gs-sftp gs_funcs gsocket_dso.so.0 gsocket_uchroot_dso.so.0) # mv tools/gs-netcat gs-netcat_openbsd-x86_64 - name: Upload gs-netcat to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: gs-netcat_* overwrite: true file_glob: true tag: v${{ env.VER }} - name: Upload gsocket to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: gsocket_* overwrite: true file_glob: true tag: v${{ env.VER }} Linux-Cross-Compile: strategy: matrix: arch: [x86_64, aarch64, mips64, mips32, mipsel, i686, arm, armv6, armv7l] include: - arch: x86_64 cc: x86_64-linux-musl ssl: linux-generic64 - arch: aarch64 cc: aarch64-linux-musl ssl: linux-generic64 - arch: mips64 cc: mips64-linux-musl ssl: linux64-mips64 - arch: mips32 cc: mips-linux-muslsf ssl: linux-mips32 - arch: mipsel cc: mipsel-linux-muslsf ssl: linux-mips32 - arch: i686 cc: i686-linux-musl ssl: linux-generic32 - arch: arm cc: arm-linux-musleabi ssl: linux-generic32 - arch: armv6 cc: armv6-linux-musleabi ssl: linux-generic32 - arch: armv7l cc: armv7l-linux-musleabihf ssl: linux-generic32 runs-on: ubuntu-latest container: image: muslcc/x86_64:${{ matrix.cc }} options: --user root steps: - uses: actions/checkout@v3 - name: Add build dependencies run: | apk add --update --no-cache --no-progress bash perl make curl upx tar dpkg - name: Cache SSL id: cachessl uses: actions/cache@v3 with: path: /opt key: ${{ matrix.arch }}-ssl - name: Generate OpenSSL if: steps.cachessl.outputs.cache-hit != 'true' run: | curl -SsfL https://www.openssl.org/source/openssl-${OPENSSL_VER:-1.1.1k}.tar.gz | tar -xzf - -C /tmp/ ( cd /tmp/openssl-${OPENSSL_VER:-1.1.1k} && \ ./Configure --prefix=/opt no-tests no-dso no-threads no-shared ${{ matrix.ssl }} && \ make install_sw ) rm -rf rm -rf /tmp/openssl-${OPENSSL_VER:-1.1.1k} /opt/bin/openssl /opt/bin/c_rehash - name: SaveCache if: steps.cachessl.outputs.cache-hit != 'true' uses: actions/cache/save@v3 with: path: /opt key: ${{ matrix.arch }}-ssl - name: Compile-${{ matrix.arch }} run: | apk add --no-cache autoconf automake ./bootstrap ./configure --prefix=/opt --enable-realprefix=/usr --enable-static --host=${{ matrix.arch }} make all strip tools/gs-netcat (cd tools; tar cfz ../gsocket_linux-${{ matrix.arch }}.tar.gz gs-netcat gsocket blitz gs-mount gs-sftp gs_funcs gsocket_dso.so.0 gsocket_uchroot_dso.so.0) mv tools/gs-netcat gs-netcat_linux-${{ matrix.arch }} - name: Debian packages run: | PREFIX="/tmp/gsocket_${{ env.VER }}_${{ matrix.arch }}" make DESTDIR="${PREFIX}" install mkdir -p "${PREFIX}/DEBIAN" sed "s/@@VER@@/${VER}/" <"packaging/debian-deb/DEBIAN/control.in" >"${PREFIX}/DEBIAN/control" mv "${PREFIX}/opt" "${PREFIX}/usr" mv "${PREFIX}/usr/etc" "${PREFIX}/etc" dpkg-deb --build "${PREFIX}/" - name: Upload .deb to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: /tmp/gsocket_${{ env.VER }}_${{ matrix.arch }}.deb overwrite: true tag: v${{ env.VER }} - name: Upload gs-netcat to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: gs-netcat_linux-${{ matrix.arch }} overwrite: true tag: v${{ env.VER }} - name: Upload gsocket to release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: gsocket_linux-${{ matrix.arch }}.tar.gz overwrite: true tag: v${{ env.VER }}