Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Please update for LuaRocks 3.0.4 #15

Open
hishamhm opened this issue Nov 5, 2018 · 11 comments · May be fixed by #27
Open

Please update for LuaRocks 3.0.4 #15

hishamhm opened this issue Nov 5, 2018 · 11 comments · May be fixed by #27

Comments

@hishamhm
Copy link

hishamhm commented Nov 5, 2018

This requires some minor changes to the main script since the site_config hack should not be needed anymore (all trees in 3.x are versioned).

Ideally, it should be possible to replace the three LuaRocks installs with a single copy of luarocks.exe, create a config file for each version, and wrap them with luarocks5x.bat scripts that do something like

@echo off
set LUAROCKS_SYSCONFDIR=c:\location\of\your\config-5.x.lua
luarocks --lua-version=5.x %*

for convenience.

@Tieske
Copy link
Owner

Tieske commented Nov 22, 2018

there already was a pr; #14 I guess we'll need to adjust that then

@Tieske
Copy link
Owner

Tieske commented Jan 3, 2019

If I remove the hack then the config file starts to default to the system directories (eg. no longer self contained)

Old version, with system config in c:/lua/...

CONFIGURATION
        Lua version: 5.1
        Configuration files:
                System: c:/lua/LuaRocks/config-5.1.lua (ok)
                User  : C:/Users/Gebruiker/AppData/Roaming/luarocks/config-5.1.lua (not found)

        Rocks trees in use:
                C:/Users/Gebruiker/AppData/Roaming/luarocks ("user")
                c:/lua ("system")

Gebruiker@MDTWORK-5KGJL7K

With 3.0.4, and the hack removed, it goes into C:/Program Files (x86)/luarocks/...:

CONFIGURATION
        Lua version: 5.1

        Configuration files:
                System  : C:/Program Files (x86)/luarocks/config-5.1.lua (not found)
                User    : C:/Users/Gebruiker/AppData/Roaming/luarocks/config-5.1.lua (not found)

        Rocks trees in use:
                C:/Users/Gebruiker/AppData/Roaming/luarocks ("user")
                C:/Lua/LuaRocks ("system")


Gebruiker@MDTWORK-5KGJL7K

@Tieske
Copy link
Owner

Tieske commented Jan 3, 2019

ah, I guess that's why the mention of the additional batch file, I'll give that a try

@Tieske
Copy link
Owner

Tieske commented Jan 4, 2019

@hishamhm does the all-in-one binary also do the auto-elevation trick when it is doesn't have enough rights for an install?

@Tieske
Copy link
Owner

Tieske commented Jan 4, 2019

So this is harder than expected, since LuaRocks doesn't pick up the defaults properly

C:\test\luawinmulti>luarocks

LuaRocks 3.0.4, the Lua package manager

NAME
        C:\Lua\LuaRocks\luarocks.lua - LuaRocks main command-line interface

SYNOPSIS
        C:\Lua\LuaRocks\luarocks.lua [<flags...>] [VAR=VALUE]... <command> [<argument>]

GENERAL OPTIONS
        These apply to all commands, as appropriate:

        --dev                  Enable the sub-repositories in rocks servers
                               for rockspecs of in-development versions
        --server=<server>      Fetch rocks/rockspecs from this server
                               (takes priority over config file)
        --only-server=<server> Fetch rocks/rockspecs from this server only
                               (overrides any entries in the config file)
        --only-sources=<url>   Restrict downloads to paths matching the
                               given URL.
        --lua-dir=<prefix>     Which Lua installation to use.
        --tree=<tree>          Which tree to operate on.
        --local                Use the tree in the user's home directory.
                               To enable it, see 'C:\Lua\LuaRocks\luarocks.lua help path'.
        --verbose              Display verbose output of commands executed.
        --timeout=<seconds>    Timeout on network operations, in seconds.
                               0 means no timeout (wait forever).
                               Default is 30.

VARIABLES
        Variables from the "variables" table of the configuration file
        can be overriden with VAR=VALUE assignments.

COMMANDS
        build
                build/compile a rock.
        config
                Query information about the LuaRocks configuration.
        doc
                Show documentation for an installed rock.
        download
                Download a specific rock file from a rocks server.
        help
                Help on commands. Type 'C:\Lua\LuaRocks\luarocks.lua help <command>' for more.
        init
                Initialize a directory for a Lua project using LuaRocks.
        install
                Install a rock.
        lint
                Check syntax of a rockspec.
        list
                List currently installed rocks.
        make
                Compile package in current directory using a rockspec.
        new_version
                Auto-write a rockspec for a new version of a rock.
        pack
                Create a rock, packing sources or binaries.
        path
                Return the currently configured package path.
        purge
                Remove all installed rocks from a tree.
        remove
                Uninstall a rock.
        search
                Query the LuaRocks servers.
        show
                Show information about an installed rock.
        test
                Run the test suite in the current directory.
        unpack
                Unpack the contents of a rock.
        upload
                Upload a rockspec to the public rocks repository.
        which
                Tell which file corresponds to a given module name.
        write_rockspec
                Write a template for a rockspec file.

CONFIGURATION
        Lua version: 5.1

        Configuration files:
                System  : C:/Program Files (x86)/luarocks/config-5.1.lua (not found)
                User    : C:/Users/Gebruiker/AppData/Roaming/luarocks/config-5.1.lua (not found)

        Rocks trees in use:
                C:/Users/Gebruiker/AppData/Roaming/luarocks ("user")
                C:/Lua/LuaRocks ("system")


C:\test\luawinmulti>luarocks install busted
Installing https://luarocks.org/busted-2.0.rc13-0.rockspec
Missing dependencies for busted 2.0.rc13-0:
   lua_cliargs 3.0-1 (not installed)
   luafilesystem >= 1.5.0 (not installed)
   luasystem >= 0.2.0-0 (not installed)
   dkjson >= 2.1.0 (not installed)
   say >= 1.3-0 (not installed)
   luassert >= 1.7.8-0 (not installed)
   lua-term >= 0.1-1 (not installed)
   penlight >= 1.3.2-2 (not installed)
   mediator_lua >= 1.1.1-0 (not installed)

busted 2.0.rc13-0 depends on lua_cliargs 3.0-1 (not installed)
Installing https://luarocks.org/lua_cliargs-3.0-1.src.rock

No existing manifest. Attempting to rebuild...
lua_cliargs 3.0-1 is now installed in C:\Lua\LuaRocks (license: MIT <http://opensource.org/licenses/MIT>)

busted 2.0.rc13-0 depends on luafilesystem >= 1.5.0 (not installed)
Installing https://luarocks.org/luafilesystem-1.7.0-2.src.rock

mingw32-gcc -O2 -c -o src/lfs.o -IC:\Lua\include\lua\5.3 src/lfs.c
mingw32-gcc -shared -o lfs.dll src/lfs.o C:\Lua\bin/lua51.dll -lm
src/lfs.o:lfs.c:(.text+0x122e): undefined reference to `luaL_checkversion_'
src/lfs.o:lfs.c:(.text+0x125e): undefined reference to `luaL_setfuncs'
src/lfs.o:lfs.c:(.text+0x127e): undefined reference to `lua_setglobal'
collect2.exe: error: ld returned 1 exit status

Error: Failed installing dependency: https://luarocks.org/luafilesystem-1.7.0-2.src.rock - Build error: Failed compiling module lfs.dll

C:\test\luawinmulti>

The top shows LuaRocks is running on Lua 5.1. Yet the LFS dependency is being compiled using the 5.3 headers. So seems LuaRocks is taking a wrong turn here somewhere,

Any ideas @hishamhm ?

@hishamhm
Copy link
Author

hishamhm commented Jan 4, 2019

it doesn't. isn't it possible to do the equivalent of "setuid the binary" to make it privileged?

@Tieske
Copy link
Owner

Tieske commented Jan 4, 2019

it doesn't. isn't it possible to do the equivalent of "setuid the binary" to make it privileged?

not that I know of (but not too much into priviledges on Windows these days), usually the access is validated at runtime, and the user is prompted for extra credentials. Would make more sense to loosen up restrictions on the LuaRocks tree probably. But it goes against the security model.

We've had lengthy discussions on this in the past, when we treated rocks as data, and not as executable code. Hence we implemented the auto-elevation code in the batch files, so it would honor the Windows security model.

@hishamhm
Copy link
Author

hishamhm commented Jan 7, 2019

just noticed this, which is concerning:

mingw32-gcc -O2 -c -o src/lfs.o -IC:\Lua\include\lua\5.3 src/lfs.c
mingw32-gcc -shared -o lfs.dll src/lfs.o C:\Lua\bin/lua51.dll -lm

it does pick lua51.dll for the library, but then does \include\lua\5.3 for the header... What happens if you run luarocks --lua-version=5.1 install busted in that same setup?

@Tieske
Copy link
Owner

Tieske commented Jan 8, 2019

getting weirder all the time:

> luarocks --lua-version=5.1 install busted                          
Access is denied.                                                    
Access is denied.                                                    
Access is denied.                                                    
Access is denied.                                                    
Access is denied.                                                    
Access is denied.                                                    
                                                                     
Error: Could not find a Lua interpreter for version 5.1 in your PATH 
                                                                     
Gebruiker@MDTWORK-5KGJL7K C:\test\luawinmulti                        
>                                                                    

@Tieske
Copy link
Owner

Tieske commented Jan 8, 2019

adding the --verbose flag yields the exact same result.

@Tieske
Copy link
Owner

Tieske commented Jan 8, 2019

The access denied errors are probably because of the script trying folders in the system path it doesn't have access to.

This folder is in the path:

> dir c:\lua\bin
 Volume in drive C is OSDisk
 Volume Serial Number is 8CCF-02F6

 Directory of c:\lua\bin

08-Jan-19  11:00    <DIR>          .
08-Jan-19  11:00    <DIR>          ..
04-Jan-19  18:20            49,664 lua.exe
04-Jan-19  18:19           170,202 lua51.dll
04-Jan-19  18:19            49,152 lua51.exe
04-Jan-19  18:20           192,035 lua52.dll
04-Jan-19  18:20            49,664 lua52.exe
04-Jan-19  18:20           249,760 lua53.dll
04-Jan-19  18:20            49,664 lua53.exe
04-Jan-19  18:19           197,312 luac51.exe
04-Jan-19  18:20           216,051 luac52.exe
04-Jan-19  18:20           234,390 luac53.exe
08-Jan-19  11:07               144 luarocks.bat
08-Jan-19  11:00             1,699 luarocks51.bat
08-Jan-19  11:00             1,699 luarocks52.bat
08-Jan-19  11:00             1,699 luarocks53.bat
04-Jan-19  16:22             3,230 setlua.bat
              15 File(s)      1,466,365 bytes
               2 Dir(s)  26,615,173,120 bytes free

Gebruiker@MDTWORK-5KGJL7K C:\test\luawinmulti
>

@Tieske Tieske linked a pull request Jul 3, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants