From c42dea1030d591ddbc6dc54a15590a6940151805 Mon Sep 17 00:00:00 2001 From: SD Asif Hossein Date: Sat, 17 Aug 2024 23:35:47 +0600 Subject: [PATCH 1/4] Added `install.sh` script --- .github/workflows/ci.yml | 46 +++----------- install.sh | 131 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+), 38 deletions(-) create mode 100755 install.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ba289fec..5da5f78a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,11 +22,6 @@ on: pull_request: branches: [ master ] -env: - LUA_VERSION: 5.4.7 - LUAROCKS_VERSION: 3.9.0 - PT_VERSION: 0.5.0a - jobs: lint: name: Lint @@ -34,21 +29,12 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Install Lua + - name: Install Lua and LuaRocks run: | - wget -O - https://github.com/pallene-lang/lua-internals/archive/refs/tags/${{env.LUA_VERSION}}.tar.gz | tar xzf - - cd lua-internals-${{env.LUA_VERSION}} - make linux - sudo make install + ./install.sh lua + ./install.sh rocks - - name: Install Luarocks run: | - wget -O - https://luarocks.org/releases/luarocks-${{env.LUAROCKS_VERSION}}.tar.gz | tar xzf - - cd luarocks-${{env.LUAROCKS_VERSION}} - ./configure --with-lua=/usr/local - make - sudo make install - - name: Install Luacheck run: luarocks install --local luacheck @@ -63,30 +49,14 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Install Lua - run: | - wget -O - https://github.com/pallene-lang/lua-internals/archive/refs/tags/${{env.LUA_VERSION}}.tar.gz | tar xzf - - cd lua-internals-${{env.LUA_VERSION}} - make linux - sudo make install - - - name: Install Luarocks - run: | - wget -O - https://luarocks.org/releases/luarocks-${{env.LUAROCKS_VERSION}}.tar.gz | tar xzf - - cd luarocks-${{env.LUAROCKS_VERSION}} - ./configure --with-lua=/usr/local - make - sudo make install - - - name: Install Pallene Tracer + - name: Install Lua, LuaRocks and Pallene Tracer run: | - git clone --depth 1 https://github.com/pallene-lang/pallene-tracer --branch ${{env.PT_VERSION}} - cd pallene-tracer - make LUA_PREFIX=/usr/local - sudo make install + ./install.sh lua + ./install.sh rocks + ./install.sh ptracer - name: Build - run: luarocks --local make + run: PALLENE_LOCAL=1 ./install.sh pallene - name: Install Busted run: luarocks --local install busted diff --git a/install.sh b/install.sh new file mode 100755 index 00000000..29cc5b72 --- /dev/null +++ b/install.sh @@ -0,0 +1,131 @@ +# Copyright (c) 2020, The Pallene Developers +# Pallene is licensed under the MIT license. +# Please refer to the LICENSE and AUTHORS files for details +# SPDX-License-Identifier: MIT + +# Versions +LUA_VERSION=5.4.7 +LUAROCKS_VERSION=3.9.1 +PT_VERSION=0.5.0a + +# Where we will clone +CLONE_DIR="/tmp/pallene" +mkdir -p $CLONE_DIR + +# Current working directory +CURR_DIR=$(pwd) + +# Whether to install Pallene locally +SUPERUSER=sudo +LOCAL_FLAG= +if [ "${PALLENE_LOCAL:-0}" -eq 1 ]; then + SUPERUSER= + LOCAL_FLAG=--local +fi + +# Function to display usage +usage() { + echo "Usage: $0 { world | lua | rocks | ptracer | pallene }" + echo " world - Install all components" + echo " lua - Install Lua Internals" + echo " pallene - Install Pallene" + echo " rocks - Install LuaRocks" + echo " ptracer - Install Pallene Tracer" + echo + echo "Use MYCFLAGS environment variable to pass flags to Lua Internals:" + echo " MYCFLAGS=-DLUAI_ASSERT ./install.sh lua" + echo + echo "Use PALLENE_TRACER_TESTS=1 to run Pallene Tracer tests after installation:" + echo " PALLENE_TRACER_TESTS=1 ./install.sh ptracer" + echo + echo "Use PALLENE_LOCAL=1 to install Pallene locally with '--local' flag in LuaRocks:" + echo " PALLENE_LOCAL=1 ./install.sh pallene" + echo + echo "Use PALLENE_TESTS=1 to run Pallene tests after installation:" + echo " PALLENE_TESTS=1 ./install.sh pallene" + exit $1 +} + +# Install Lua Internals +install_lua_internals() { + cd $CLONE_DIR + wget -O - https://github.com/pallene-lang/lua-internals/archive/refs/tags/$LUA_VERSION.tar.gz | tar xzf - + cd lua-internals-$LUA_VERSION + make linux MYCFLAGS=$MYCFLAGS -j$(nproc) + sudo make install + cd $CURR_DIR +} + +# Install Luarocks +install_luarocks() { + cd $CLONE_DIR + wget -O - https://luarocks.org/releases/luarocks-$LUAROCKS_VERSION.tar.gz | tar xzf - + cd luarocks-$LUAROCKS_VERSION + ./configure --with-lua=/usr/local + make -j$(nproc) + sudo make install + cd $CURR_DIR +} + +# Install Pallene Tracer +install_ptracer() { + cd $CLONE_DIR + git clone --depth 1 https://github.com/pallene-lang/pallene-tracer --branch $PT_VERSION + cd pallene-tracer + make LUA_PREFIX=/usr/local + sudo make install + + if [ "${PALLENE_TRACER_TESTS:-0}" -eq 1 ]; then + ./run-tests + fi + + cd $CURR_DIR +} + +# Install Pallene +install_pallene() { + eval "$(luarocks path)" + $SUPERUSER luarocks $LOCAL_FLAG make + + # Run tests + if [ "${PALLENE_TESTS:-0}" -eq 1 ]; then + ./run-tests + fi +} + +# Install everything +install_world() { + install_lua_internals + install_luarocks + install_ptracer + install_pallene +} + +# Process arguments +case "$1" in + world) + install_world + ;; + lua) + install_lua_internals + ;; + rocks) + install_luarocks + ;; + ptracer) + install_ptracer + ;; + pallene) + install_pallene + ;; + --help) + usage 0 + ;; + -h) + usage 0 + ;; + *) + usage 1 + ;; +esac + From fc328907782860212d81f58b9f5e5e2dd03a3958 Mon Sep 17 00:00:00 2001 From: SD Asif Hossein Date: Sat, 17 Aug 2024 23:42:01 +0600 Subject: [PATCH 2/4] Fix ci.yml typo --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5da5f78a..c304000a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,6 @@ jobs: ./install.sh lua ./install.sh rocks - run: | - name: Install Luacheck run: luarocks install --local luacheck From bb317d34b67f708d42f9d74ac2ae097e41e5e614 Mon Sep 17 00:00:00 2001 From: SD Asif Hossein Date: Sat, 17 Aug 2024 23:53:27 +0600 Subject: [PATCH 3/4] Couldn't wait to add the catchphrase :) --- install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install.sh b/install.sh index 29cc5b72..d6ea09d2 100755 --- a/install.sh +++ b/install.sh @@ -3,6 +3,11 @@ # Please refer to the LICENSE and AUTHORS files for details # SPDX-License-Identifier: MIT +#### +# One script to rule them all, one script to find them, +# one script to bring them all and in the ease-of-use bind them. +#### + # Versions LUA_VERSION=5.4.7 LUAROCKS_VERSION=3.9.1 From 681822fc29f1918bf24e3f17f40fffa844d55f17 Mon Sep 17 00:00:00 2001 From: SD Asif Hossein Date: Sun, 18 Aug 2024 16:10:03 +0600 Subject: [PATCH 4/4] Bug fix and feature improvements --- install.sh | 68 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/install.sh b/install.sh index d6ea09d2..cf0c5b56 100755 --- a/install.sh +++ b/install.sh @@ -20,13 +20,8 @@ mkdir -p $CLONE_DIR # Current working directory CURR_DIR=$(pwd) -# Whether to install Pallene locally -SUPERUSER=sudo -LOCAL_FLAG= -if [ "${PALLENE_LOCAL:-0}" -eq 1 ]; then - SUPERUSER= - LOCAL_FLAG=--local -fi +# Where to install/locate Lua +LUA_PREFIX=${LUA_PREFIX:-/usr/local} # Function to display usage usage() { @@ -37,18 +32,31 @@ usage() { echo " rocks - Install LuaRocks" echo " ptracer - Install Pallene Tracer" echo - echo "Use MYCFLAGS environment variable to pass flags to Lua Internals:" - echo " MYCFLAGS=-DLUAI_ASSERT ./install.sh lua" + echo "Lua Internals:" + echo " Use LUA_CFLAGS, LUA_LDFLAGS, LUA_LIBS and LUA_OBJS to pass flags:" + echo " LUA_MYCFLAGS=-DLUAI_ASSERT ./install.sh lua; or" + echo " LUA_CFLAGS=-fsanitize=address LUA_LDFLAGS=-lasan ./install.sh lua; to enable Address Sanitization" echo - echo "Use PALLENE_TRACER_TESTS=1 to run Pallene Tracer tests after installation:" - echo " PALLENE_TRACER_TESTS=1 ./install.sh ptracer" + echo " Use LUA_PLAT to define Lua platform. Defualt is 'linux'." + echo " Available platforms: guess aix bsd c89 freebsd generic ios linux linux-readline macosx mingw posix solaris" + echo " e.g. LUA_PLAT=linux-readline ./install.sh lua" echo - echo "Use PALLENE_LOCAL=1 to install Pallene locally with '--local' flag in LuaRocks:" - echo " PALLENE_LOCAL=1 ./install.sh pallene" + echo " Use LUA_PREFIX to provide Lua install prefix. Default is '/usr/local'." + echo " e.g. LUA_PREFIX=/usr/local ./install.sh lua" echo - echo "Use PALLENE_TESTS=1 to run Pallene tests after installation:" - echo " PALLENE_TESTS=1 ./install.sh pallene" - exit $1 + echo "Pallene Tracer:" + echo " Use PT_TESTS=1 to run Pallene Tracer tests after installation, e.g." + echo " PT_TESTS=1 ./install.sh ptracer" + echo + echo " Use PT_LDFLAGS to pass LDFLAGS to Pallene Tracer Makefile, e.g." + echo " PT_LDFLAGS=-lasan ./install.sh ptracer; if Lua is built with Address Sanitizer" + echo + echo "Pallene:" + echo " Use PALLENE_LOCAL=1 to install Pallene locally with '--local' flag in LuaRocks:" + echo " PALLENE_LOCAL=1 ./install.sh pallene" + echo + echo " Use PALLENE_TESTS=1 to run Pallene tests after installation:" + echo " PALLENE_TESTS=1 ./install.sh pallene" } # Install Lua Internals @@ -56,8 +64,9 @@ install_lua_internals() { cd $CLONE_DIR wget -O - https://github.com/pallene-lang/lua-internals/archive/refs/tags/$LUA_VERSION.tar.gz | tar xzf - cd lua-internals-$LUA_VERSION - make linux MYCFLAGS=$MYCFLAGS -j$(nproc) - sudo make install + make clean + make ${LUA_PLAT:-linux} MYCFLAGS="$LUA_CFLAGS" MYLDFLAGS="$LUA_LDFLAGS" MYLIBS="$LUA_LIBS" MYOBJS="$LUA_OBJS" -j$(nproc) + sudo make install INSTALL_TOP=$LUA_PREFIX cd $CURR_DIR } @@ -66,7 +75,7 @@ install_luarocks() { cd $CLONE_DIR wget -O - https://luarocks.org/releases/luarocks-$LUAROCKS_VERSION.tar.gz | tar xzf - cd luarocks-$LUAROCKS_VERSION - ./configure --with-lua=/usr/local + ./configure --with-lua=$LUA_PREFIX make -j$(nproc) sudo make install cd $CURR_DIR @@ -77,10 +86,10 @@ install_ptracer() { cd $CLONE_DIR git clone --depth 1 https://github.com/pallene-lang/pallene-tracer --branch $PT_VERSION cd pallene-tracer - make LUA_PREFIX=/usr/local - sudo make install + make clean + sudo make install LUA_PREFIX=$LUA_PREFIX LDFLAGS="$PT_LDFLAGS" - if [ "${PALLENE_TRACER_TESTS:-0}" -eq 1 ]; then + if [ "${PT_TESTS:-0}" -eq 1 ]; then ./run-tests fi @@ -90,7 +99,13 @@ install_ptracer() { # Install Pallene install_pallene() { eval "$(luarocks path)" - $SUPERUSER luarocks $LOCAL_FLAG make + + # Local installation + if [ "${PALLENE_LOCAL:-0}" -eq 1 ]; then + luarocks --local make + else + sudo luarocks make + fi # Run tests if [ "${PALLENE_TESTS:-0}" -eq 1 ]; then @@ -124,13 +139,14 @@ case "$1" in install_pallene ;; --help) - usage 0 + usage ;; -h) - usage 0 + usage ;; *) - usage 1 + usage + exit 1 ;; esac