luarocks for mingw64 in MSYS2 (#1924)
* luarocks for mingw64 in MSYS2 * add dependence unzip and remove readme.md
This commit is contained in:
46
mingw-w64-lua-luarocks/PKGBUILD
Normal file
46
mingw-w64-lua-luarocks/PKGBUILD
Normal file
@@ -0,0 +1,46 @@
|
||||
# Maintainer: Ricky Wu <rickleaf.wu@gmail.com>
|
||||
|
||||
_realname=luarocks
|
||||
pkgbase=mingw-w64-${_realname}
|
||||
pkgname=("${MINGW_PACKAGE_PREFIX}-lua51-${_realname}")
|
||||
pkgver=2.4.1
|
||||
pkgrel=1
|
||||
pkgdesc="the package manager for Lua modules"
|
||||
arch=('any')
|
||||
url="https://luarocks.org"
|
||||
license=("MIT")
|
||||
install=luarocks-${CARCH}.install
|
||||
depends=(
|
||||
"${MINGW_PACKAGE_PREFIX}-lua51"
|
||||
)
|
||||
makedepends=(
|
||||
"${MINGW_PACKAGE_PREFIX}-gcc"
|
||||
"unzip")
|
||||
|
||||
options=('staticlibs' 'strip')
|
||||
source=("http://luarocks.org/releases/${_realname}-${pkgver}.tar.gz"
|
||||
"mingw32-msys2.patch"
|
||||
)
|
||||
|
||||
sha256sums=('e429e0af9764bfd5cb640cac40f9d4ed1023fa17c052dff82ed0a41c05f3dcf9'
|
||||
'620d094f4f2fcf72a6c09699d84baa3f9a1a745f1cdf14e89d93375f5ad0998c')
|
||||
|
||||
prepare() {
|
||||
cd "${srcdir}/${_realname}-${pkgver}"
|
||||
patch -p1 -i ${srcdir}/mingw32-msys2.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
#mkdir -p "build-${MINGW_CHOST}"
|
||||
cd "${srcdir}/${_realname}-${pkgver}"
|
||||
|
||||
../${_realname}-${pkgver}/configure \
|
||||
--prefix=${MINGW_PREFIX}
|
||||
|
||||
make build
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "${srcdir}/${_realname}-${pkgver}"
|
||||
make DESTDIR="${pkgdir}" install
|
||||
}
|
||||
16
mingw-w64-lua-luarocks/luarocks-i686.install
Normal file
16
mingw-w64-lua-luarocks/luarocks-i686.install
Normal file
@@ -0,0 +1,16 @@
|
||||
post_install() {
|
||||
PREFIX_WIN=$(cygpath -m ${MINGW_PREFIX})
|
||||
sed -s "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" \
|
||||
-i ${MINGW_PREFIX}/etc/luarocks/config-5.1.lua
|
||||
|
||||
sed -s "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" \
|
||||
-i ${MINGW_PREFIX}/share/lua/5.1/luarocks/site_config.lua
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
post_install
|
||||
}
|
||||
|
||||
post_remove() {
|
||||
post_install
|
||||
}
|
||||
12
mingw-w64-lua-luarocks/luarocks-x86_64.install
Normal file
12
mingw-w64-lua-luarocks/luarocks-x86_64.install
Normal file
@@ -0,0 +1,12 @@
|
||||
post_install() {
|
||||
PREFIX_WIN=$(cygpath -m ${MINGW_PREFIX})
|
||||
sed -s "s|${MINGW_PREFIX}|${PREFIX_WIN}|g" \
|
||||
-i ${MINGW_PREFIX}/etc/luarocks/config-5.1.lua
|
||||
|
||||
sed -s "s|${MINGW_PREFIX}|${PREFIX_WIN}|g" \
|
||||
-i ${MINGW_PREFIX}/share/lua/5.1/luarocks/site_config.lua
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
post_install
|
||||
}
|
||||
221
mingw-w64-lua-luarocks/mingw32-msys2.patch
Normal file
221
mingw-w64-lua-luarocks/mingw32-msys2.patch
Normal file
@@ -0,0 +1,221 @@
|
||||
diff -rup luarocks-2.4.1/src/luarocks/cfg.lua luarocks-2.4.1-ricky/src/luarocks/cfg.lua
|
||||
--- luarocks-2.4.1/src/luarocks/cfg.lua 2016-10-07 03:01:56.000000000 +0800
|
||||
+++ luarocks-2.4.1-ricky/src/luarocks/cfg.lua 2016-11-03 12:17:21.724973800 +0800
|
||||
@@ -123,6 +123,7 @@ elseif system and system:match("^MINGW")
|
||||
cfg.platforms.windows = true
|
||||
cfg.platforms.mingw32 = true
|
||||
cfg.platforms.win32 = true
|
||||
+ cfg.platforms.msys = true
|
||||
elseif system == "Haiku" then
|
||||
cfg.platforms.unix = true
|
||||
cfg.platforms.haiku = true
|
||||
@@ -157,7 +158,13 @@ local sys_config_dir, home_config_dir
|
||||
local sys_config_ok, home_config_ok = false, false
|
||||
local extra_luarocks_module_dir
|
||||
sys_config_dir = site_config.LUAROCKS_SYSCONFDIR or site_config.LUAROCKS_PREFIX
|
||||
-if cfg.platforms.windows then
|
||||
+
|
||||
+if cfg.platforms.mingw32 then
|
||||
+ cfg.home = os.getenv("HOME") or ""
|
||||
+ sys_config_dir = sys_config_dir or "/etc/luarocks"
|
||||
+ home_config_dir = cfg.home.."/.luarocks"
|
||||
+ cfg.home_tree = (os.getenv("USER") ~= "root") and cfg.home.."/.luarocks/"
|
||||
+elseif cfg.platforms.windows then
|
||||
cfg.home = os.getenv("APPDATA") or "c:"
|
||||
sys_config_dir = sys_config_dir or "c:/luarocks"
|
||||
home_config_dir = cfg.home.."/luarocks"
|
||||
@@ -426,13 +433,6 @@ if cfg.platforms.windows then
|
||||
defaults.variables.CFLAGS = "/nologo /MD /O2"
|
||||
defaults.variables.LIBFLAG = "/nologo /dll"
|
||||
|
||||
- local bins = { "SEVENZ", "CP", "FIND", "LS", "MD5SUM",
|
||||
- "MKDIR", "MV", "PWD", "RMDIR", "TEST", "UNAME", "WGET" }
|
||||
- for _, var in ipairs(bins) do
|
||||
- if defaults.variables[var] then
|
||||
- defaults.variables[var] = full_prefix.."\\tools\\"..defaults.variables[var]
|
||||
- end
|
||||
- end
|
||||
|
||||
defaults.external_deps_patterns = {
|
||||
bin = { "?.exe", "?.bat" },
|
||||
@@ -462,12 +462,14 @@ end
|
||||
if cfg.platforms.mingw32 then
|
||||
defaults.obj_extension = "o"
|
||||
defaults.cmake_generator = "MinGW Makefiles"
|
||||
+ defaults.external_deps_dirs = { site_config.LUAROCKS_PREFIX }
|
||||
defaults.variables.MAKE = "mingw32-make"
|
||||
- defaults.variables.CC = "mingw32-gcc"
|
||||
+ defaults.variables.CC = "gcc"
|
||||
defaults.variables.RC = "windres"
|
||||
- defaults.variables.LD = "mingw32-gcc"
|
||||
+ defaults.variables.LD = "gcc"
|
||||
defaults.variables.CFLAGS = "-O2"
|
||||
defaults.variables.LIBFLAG = "-shared"
|
||||
+ defaults.variables.LUALIB = "liblua"..cfg.lua_version..".dll.a"
|
||||
defaults.makefile = "Makefile"
|
||||
defaults.external_deps_patterns = {
|
||||
bin = { "?.exe", "?.bat" },
|
||||
@@ -481,6 +483,15 @@ if cfg.platforms.mingw32 then
|
||||
lib = { "cyg?.dll", "?.dll", "lib?.dll" },
|
||||
include = { "?.h" }
|
||||
}
|
||||
+ defaults.export_path = "export PATH='%s'"
|
||||
+ defaults.export_path_separator = ":"
|
||||
+ defaults.export_lua_path = "export LUA_PATH='%s'"
|
||||
+ defaults.export_lua_cpath = "export LUA_CPATH='%s'"
|
||||
+ defaults.wrapper_suffix = ""
|
||||
+ defaults.local_cache = cfg.home.."/.cache/luarocks"
|
||||
+ if not defaults.variables.CFLAGS:match("-fPIC") then
|
||||
+ defaults.variables.CFLAGS = defaults.variables.CFLAGS.." -fPIC"
|
||||
+ end
|
||||
|
||||
end
|
||||
|
||||
diff -rup luarocks-2.4.1/src/luarocks/fs/tools.lua luarocks-2.4.1-ricky/src/luarocks/fs/tools.lua
|
||||
--- luarocks-2.4.1/src/luarocks/fs/tools.lua 2016-10-07 03:01:56.000000000 +0800
|
||||
+++ luarocks-2.4.1-ricky/src/luarocks/fs/tools.lua 2016-11-03 12:17:21.731971200 +0800
|
||||
@@ -10,6 +10,13 @@ local vars = cfg.variables
|
||||
|
||||
local dir_stack = {}
|
||||
|
||||
+local function get_windows_path(unix_path)
|
||||
+ local pipe = io.popen("cygpath -w".." "..unix_path)
|
||||
+ local current = pipe:read("*l")
|
||||
+ pipe:close()
|
||||
+ return current
|
||||
+end
|
||||
+
|
||||
--- Obtain current directory.
|
||||
-- Uses the module's internal directory stack.
|
||||
-- @return string: the absolute pathname of the current directory.
|
||||
@@ -18,6 +25,7 @@ function tools.current_dir()
|
||||
if not current then
|
||||
local pipe = io.popen(fs.quiet_stderr(fs.Q(vars.PWD)))
|
||||
current = pipe:read("*l")
|
||||
+ current = get_windows_path(current)
|
||||
pipe:close()
|
||||
cfg.cache_pwd = current
|
||||
end
|
||||
diff -rup luarocks-2.4.1/src/luarocks/fs/win32/tools.lua luarocks-2.4.1-ricky/src/luarocks/fs/win32/tools.lua
|
||||
--- luarocks-2.4.1/src/luarocks/fs/win32/tools.lua 2016-10-07 03:01:56.000000000 +0800
|
||||
+++ luarocks-2.4.1-ricky/src/luarocks/fs/win32/tools.lua 2016-11-03 20:18:50.802128300 +0800
|
||||
@@ -44,7 +44,7 @@ end
|
||||
-- @param directory string: pathname of directory to remove.
|
||||
function tools.remove_dir_if_empty(directory)
|
||||
assert(directory)
|
||||
- fs.execute_quiet(fs.Q(vars.RMDIR), directory)
|
||||
+ fs.execute_quiet(vars.RMDIR, directory)
|
||||
end
|
||||
|
||||
--- Remove a directory if it is empty.
|
||||
@@ -53,19 +53,28 @@ end
|
||||
-- @param directory string: pathname of directory to remove.
|
||||
function tools.remove_dir_tree_if_empty(directory)
|
||||
assert(directory)
|
||||
- fs.execute_quiet(fs.Q(vars.RMDIR), directory)
|
||||
+ fs.execute_quiet(vars.RMDIR, "-p", directory)
|
||||
end
|
||||
|
||||
--- Copy a file.
|
||||
-- @param src string: Pathname of source
|
||||
-- @param dest string: Pathname of destination
|
||||
+-- @param perm string or nil: Permissions for destination file,
|
||||
-- @return boolean or (boolean, string): true on success, false on failure,
|
||||
-- plus an error message.
|
||||
-function tools.copy(src, dest)
|
||||
+function tools.copy(src, dest, perm)
|
||||
assert(src and dest)
|
||||
- if dest:match("[/\\]$") then dest = dest:sub(1, -2) end
|
||||
- local ok = fs.execute(fs.Q(vars.CP), src, dest)
|
||||
- if ok then
|
||||
+ if fs.execute(vars.CP, src, dest) then
|
||||
+ if perm then
|
||||
+ if fs.is_dir(dest) then
|
||||
+ dest = dir.path(dest, dir.base_name(src))
|
||||
+ end
|
||||
+ if fs.chmod(dest, perm) then
|
||||
+ return true
|
||||
+ else
|
||||
+ return false, "Failed setting permissions of "..dest
|
||||
+ end
|
||||
+ end
|
||||
return true
|
||||
else
|
||||
return false, "Failed copying "..src.." to "..dest
|
||||
@@ -79,7 +88,7 @@ end
|
||||
-- plus an error message.
|
||||
function tools.copy_contents(src, dest)
|
||||
assert(src and dest)
|
||||
- if fs.execute_quiet(fs.Q(vars.CP), "-dR", src.."\\*.*", dest) then
|
||||
+ if fs.execute_quiet(vars.CP.." -pPR "..fs.Q(src).."/* "..fs.Q(dest)) then
|
||||
return true
|
||||
else
|
||||
return false, "Failed copying "..src.." to "..dest
|
||||
@@ -129,7 +138,7 @@ end
|
||||
-- additional arguments.
|
||||
-- @return boolean: true on success, false on failure.
|
||||
function tools.zip(zipfile, ...)
|
||||
- return fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa a -tzip", zipfile, ...)
|
||||
+ return fs.execute(vars.ZIP.." -r", zipfile, ...)
|
||||
end
|
||||
|
||||
--- Uncompress files from a .zip archive.
|
||||
@@ -137,7 +146,7 @@ end
|
||||
-- @return boolean: true on success, false on failure.
|
||||
function tools.unzip(zipfile)
|
||||
assert(zipfile)
|
||||
- return fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa x", zipfile)
|
||||
+ return fs.execute_quiet(vars.UNZIP, zipfile)
|
||||
end
|
||||
|
||||
--- Test is pathname is a directory.
|
||||
@@ -166,13 +175,6 @@ local function strip_extension(filename)
|
||||
return (filename:gsub("%.[^.]+$", "")) or filename
|
||||
end
|
||||
|
||||
---- Uncompress gzip file.
|
||||
--- @param archive string: Filename of archive.
|
||||
--- @return boolean : success status
|
||||
-local function gunzip(archive)
|
||||
- return fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa x", archive)
|
||||
-end
|
||||
-
|
||||
--- Unpack an archive.
|
||||
-- Extract the contents of an archive, detecting its format by
|
||||
-- filename extension.
|
||||
@@ -181,25 +183,19 @@ end
|
||||
function tools.unpack_archive(archive)
|
||||
assert(type(archive) == "string")
|
||||
|
||||
+ local pipe_to_tar = " | "..vars.TAR.." -xf -"
|
||||
+
|
||||
+ if not cfg.verbose then
|
||||
+ pipe_to_tar = " 2> /dev/null"..fs.quiet(pipe_to_tar)
|
||||
+ end
|
||||
+
|
||||
local ok
|
||||
- local sevenzx = fs.Q(vars.SEVENZ).." -aoa x"
|
||||
- if archive:match("%.tar%.gz$") then
|
||||
- ok = gunzip(archive)
|
||||
- if ok then
|
||||
- ok = fs.execute_quiet(sevenzx, strip_extension(archive))
|
||||
- end
|
||||
- elseif archive:match("%.tgz$") then
|
||||
- ok = gunzip(archive)
|
||||
- if ok then
|
||||
- ok = fs.execute_quiet(sevenzx, strip_extension(archive)..".tar")
|
||||
- end
|
||||
+ if archive:match("%.tar%.gz$") or archive:match("%.tgz$") then
|
||||
+ ok = fs.execute_string("tar zxf "..fs.Q(archive))
|
||||
elseif archive:match("%.tar%.bz2$") then
|
||||
- ok = fs.execute_quiet(sevenzx, archive)
|
||||
- if ok then
|
||||
- ok = fs.execute_quiet(sevenzx, strip_extension(archive))
|
||||
- end
|
||||
+ ok = fs.execute_string(vars.TAR.." -jxf "..fs.Q(archive))
|
||||
elseif archive:match("%.zip$") then
|
||||
- ok = fs.execute_quiet(sevenzx, archive)
|
||||
+ ok = fs.execute_quiet(vars.UNZIP, archive)
|
||||
elseif archive:match("%.lua$") or archive:match("%.c$") then
|
||||
-- Ignore .lua and .c files; they don't need to be extracted.
|
||||
return true
|
||||
Reference in New Issue
Block a user