diff --git a/.onedev-buildspec.yml b/.onedev-buildspec.yml index a22ae81..bd68a9b 100644 --- a/.onedev-buildspec.yml +++ b/.onedev-buildspec.yml @@ -42,6 +42,31 @@ jobs: bash wiibuild.sh useTTY: true condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL + - !CommandStep + name: Build archlinux + runInContainer: true + image: git.tesseslanguage.com/tesses50/arch-builds:2025-11-11 + interpreter: !DefaultInterpreter + commands: | + wget -O /root/repository.key wget https://git.tesseslanguage.com/api/packages/tesses50/arch/repository.key + pacman-key --add /root/repository.key + pacman-key --config /opt/cross/ppc/pacman.conf --add /root/repository.key + printf "[tesses50.git.tesseslanguage.com]\nSigLevel = Optional TrustAll\nServer = https://git.tesseslanguage.com/api/packages/tesses50/arch/core/\$arch\n" >> /etc/pacman.conf + printf "[tesses50.git.tesseslanguage.com]\nSigLevel = Optional TrustAll\nServer = https://git.tesseslanguage.com/api/packages/tesses50/arch/core/\$arch\n" >> /opt/cross/ppc/pacman.conf + + pacman --noconfirm -Sy mbedtls curl tesses-framework libffi + pacman --config /opt/cross/ppc/pacman.conf --noconfirm -Sy mbedtls tesses-framework libffi + cp Packaging/Linux/PKGBUILD /home/build/PKGBUILD + cp Packaging/Linux/build-arch.sh /home/build/build-arch.sh + chmod 755 /home/build/build-arch.sh + chown build:build /home/build/PKGBUILD + chown build:build /home/build/build-arch.sh + su build -c /home/build/build-arch.sh + envVars: + - name: GITEA_AUTH + value: '@secret:GITEA_AUTH@' + useTTY: true + condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - !CommandStep name: Build and Publish Deb Package (Plucky) runInContainer: true diff --git a/Packaging/Linux/PKGBUILD b/Packaging/Linux/PKGBUILD new file mode 100644 index 0000000..0c53ec9 --- /dev/null +++ b/Packaging/Linux/PKGBUILD @@ -0,0 +1,66 @@ +# Maintainer: Mike Nolan +pkgname=crosslang # '-bzr', '-git', '-hg' or '-svn' +pkgver=1.0.0 +pkgrel=1 +pkgdesc="" +arch=('x86_64' 'powerpc') +url="https://onedev.site.tesses.net/crosslang" +license=('GPLv3') +groups=() +depends=('mbedtls' 'tesses-framework' 'libffi') +makedepends=('git' 'cmake' 'make' 'base-devel' 'wget') # 'bzr', 'git', 'mercurial' or 'subversion' +install= +source=('crosslang::git+https://onedev.site.tesses.net/crosslang') +noextract=() +sha256sums=('SKIP') +if [[ -z "$CMAKE_TOOLCHAIN" ]]; then +options=(!strip) +else +options=(!buildflags !strip) +fi +# Please refer to the 'USING VCS SOURCES' section of the PKGBUILD man page for +# a description of each element in the source array. + +pkgver() { + cd "$srcdir/${pkgname}" + +# The examples below are not absolute and need to be adapted to each repo. The +# primary goal is to generate version numbers that will increase according to +# pacman's version comparisons with later commits to the repo. The format +# VERSION='VER_NUM.rREV_NUM.HASH', or a relevant subset in case VER_NUM or HASH +# are not available, is recommended. + +# Git, no tags available + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" +} + +prepare() { + cd "$srcdir/${pkgname}" + wget -O Tesses.CrossLang.ShellPackage-1.0.0.0-prod.crvm https://downloads.tesses.net/ShellPackage.crvm +} + +build() { + cd "$srcdir/${pkgname}" + mkdir build + + if [[ -z "$CMAKE_TOOLCHAIN" ]]; then + cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -DCROSSLANG_FETCHCONTENT=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCROSSLANG_ENABLE_FFI=ON + else + cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -DCROSSLANG_FETCHCONTENT=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE="$CMAKE_TOOLCHAIN" -DCROSSLANG_ENABLE_FFI=ON + fi + + cd build + make -j`nproc` + +} + + + + +package() { + cd "$srcdir/${pkgname}/build" + make install DESTDIR="$pkgdir/" + mkdir -p "$pkgdir/share/Tesses/CrossLang/" + cp "$srcdir/Tesses.CrossLang.ShellPackage-1.0.0.0-prod.crvm" "$pkgdir/share/Tesses/CrossLang/Tesses.CrossLang.ShellPackage-1.0.0.0-prod.crvm" +} + diff --git a/Packaging/Linux/build-arch.sh b/Packaging/Linux/build-arch.sh new file mode 100644 index 0000000..f47c5db --- /dev/null +++ b/Packaging/Linux/build-arch.sh @@ -0,0 +1,17 @@ +#!/bin/bash +cd /home/build +mkdir x86_64 +cd x86_64 +cp ../PKGBUILD . +makepkg +curl --user tesses50:$GITEA_AUTH \ + --upload-file *.pkg.tar.zst \ + https://git.tesseslanguage.com/api/packages/tesses50/arch/core +cd .. +mkdir powerpc +cd powerpc +cp ../PKGBUILD . +CARCH=powerpc CMAKE_TOOLCHAIN=/opt/cross/ppc/toolchain.cmake makepkg +curl --user tesses50:$GITEA_AUTH \ + --upload-file *.pkg.tar.zst \ + https://git.tesseslanguage.com/api/packages/tesses50/arch/core diff --git a/src/runtime_methods/net.cpp b/src/runtime_methods/net.cpp index d51cc68..db623ab 100644 --- a/src/runtime_methods/net.cpp +++ b/src/runtime_methods/net.cpp @@ -947,7 +947,7 @@ namespace Tesses::CrossLang } }; - static TObject Net_Http_MakeRequest(GCList& ls, std::vector args) + static TObject Net_Http_MakeRequest(GCList& ls, std::vector args,TRootEnvironment* env) { auto gc = ls.GetGC(); std::string url; @@ -976,6 +976,11 @@ namespace Tesses::CrossLang GetObject(_obj,req.followRedirects); _obj = options->GetValue("TrustedRootCertBundle"); GetObject(_obj,req.trusted_root_cert_bundle); + if(env->permissions.canRegisterLocalFS) + { + _obj = options->GetValue("UnixSocket"); + GetObject(_obj,req.unixSocket); + } _obj = options->GetValue("RequestHeaders"); @@ -1486,7 +1491,7 @@ namespace Tesses::CrossLang } return nullptr; }); - http->DeclareFunction(gc, "MakeRequest", "Create an http request", {"url","$extra"}, Net_Http_MakeRequest); + http->DeclareFunction(gc, "MakeRequest", "Create an http request", {"url","$extra"}, [env](GCList& ls, std::vector args)->TObject {return Net_Http_MakeRequest(ls,args,env);}); http->DeclareFunction(gc, "WebSocketClient", "Create a websocket connection",{"url","headers","conn","$successCB"},Net_Http_WebSocketClient); http->DeclareFunction(gc, "DownloadToString","Return the http file's contents as a string",{"url"},Net_Http_DownloadToString); http->DeclareFunction(gc, "DownloadToStream","Download file to stream",{"url","stream"},Net_Http_DownloadToStream); diff --git a/src/vm/vm.cpp b/src/vm/vm.cpp index 03b804b..4ff1d54 100644 --- a/src/vm/vm.cpp +++ b/src/vm/vm.cpp @@ -5152,7 +5152,7 @@ namespace Tesses::CrossLang { { - cse.back()->Push(gc,dict->CallMethod(ls, key, args)); + cse.back()->Push(gc,dynDict->CallMethod(ls, key, args)); return false; }