aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile90
-rw-r--r--install.bat26
-rw-r--r--src/luarocks/cfg.lua41
-rw-r--r--src/luarocks/fetch.lua24
-rw-r--r--src/luarocks/make.lua4
5 files changed, 101 insertions, 84 deletions
diff --git a/Makefile b/Makefile
index 5231cec4..c10a1cb0 100644
--- a/Makefile
+++ b/Makefile
@@ -4,6 +4,7 @@ include config.unix
4 4
5DESTDIR = 5DESTDIR =
6PREFIX ?= /usr/local 6PREFIX ?= /usr/local
7SYSCONFDIR ?= $(PREFIX)/etc/luarocks
7BINDIR ?= $(PREFIX)/bin 8BINDIR ?= $(PREFIX)/bin
8LUADIR ?= $(PREFIX)/share/lua/5.1/ 9LUADIR ?= $(PREFIX)/share/lua/5.1/
9LUA_DIR ?= /usr/local 10LUA_DIR ?= /usr/local
@@ -19,62 +20,61 @@ remove.lua fs.lua manif.lua add.lua deps.lua build.lua search.lua \
19manif_core.lua fetch.lua unpack.lua validate.lua cfg.lua download.lua \ 20manif_core.lua fetch.lua unpack.lua validate.lua cfg.lua download.lua \
20help.lua util.lua index.lua cache.lua add.lua refresh_cache.lua loader.lua 21help.lua util.lua index.lua cache.lua add.lua refresh_cache.lua loader.lua
21 22
22
23CONFIG_FILE = $(SYSCONFDIR)/config.lua 23CONFIG_FILE = $(SYSCONFDIR)/config.lua
24 24
25all: built 25all: built
26 26
27built: 27src/luarocks/config.lua: config.unix
28 for f in $(BIN_FILES) ;\ 28 rm -f src/luarocks/config.lua
29 do \ 29 echo 'module("luarocks.config")' >> src/luarocks/config.lua
30 sed "1d" src/bin/$$f >> src/bin/$$f.bak ;\
31 echo "#!$(LUA_BINDIR)/lua$(LUA_SUFFIX)" > src/bin/$$f ;\
32 echo "package.path = [[$(LUADIR)/?.lua;$(LUADIR)/?/init.lua;]]..package.path" >> src/bin/$$f ;\
33 cat src/bin/$$f.bak >> src/bin/$$f ;\
34 rm src/bin/$$f.bak ;\
35 done
36 sed -i.bak "/^local LUA/d" src/luarocks/cfg.lua
37 rm src/luarocks/cfg.lua.bak
38 cp src/luarocks/cfg.lua src/luarocks/cfg.lua.bak
39 rm src/luarocks/cfg.lua
40 if [ -n "$(PREFIX)" ] ;\ 30 if [ -n "$(PREFIX)" ] ;\
41 then \ 31 then \
42 echo "local LUAROCKS_PREFIX=[[$(PREFIX)]]" >> src/luarocks/cfg.lua ;\ 32 echo "LUAROCKS_PREFIX=[[$(PREFIX)]]" >> src/luarocks/config.lua ;\
43 fi 33 fi
44 if [ -n "$(LUA_INCDIR)" ] ;\ 34 if [ -n "$(LUA_INCDIR)" ] ;\
45 then \ 35 then \
46 echo "local LUA_INCDIR=[[$(LUA_INCDIR)]]" >> src/luarocks/cfg.lua ;\ 36 echo "LUA_INCDIR=[[$(LUA_INCDIR)]]" >> src/luarocks/config.lua ;\
47 fi 37 fi
48 if [ -n "$(LUA_LIBDIR)" ] ;\ 38 if [ -n "$(LUA_LIBDIR)" ] ;\
49 then \ 39 then \
50 echo "local LUA_LIBDIR=[[$(LUA_LIBDIR)]]" >> src/luarocks/cfg.lua ;\ 40 echo "LUA_LIBDIR=[[$(LUA_LIBDIR)]]" >> src/luarocks/config.lua ;\
51 fi 41 fi
52 if [ -n "$(LUA_BINDIR)" ] ;\ 42 if [ -n "$(LUA_BINDIR)" ] ;\
53 then \ 43 then \
54 echo "local LUA_BINDIR=[[$(LUA_BINDIR)]]" >> src/luarocks/cfg.lua ;\ 44 echo "LUA_BINDIR=[[$(LUA_BINDIR)]]" >> src/luarocks/config.lua ;\
55 fi 45 fi
56 if [ -n "$(LUA_SUFFIX)" ] ;\ 46 if [ -n "$(LUA_SUFFIX)" ] ;\
57 then \ 47 then \
58 echo "local LUA_INTERPRETER=[[lua$(LUA_SUFFIX)]]" >> src/luarocks/cfg.lua ;\ 48 echo "LUA_INTERPRETER=[[lua$(LUA_SUFFIX)]]" >> src/luarocks/config.lua ;\
59 fi 49 fi
60 if [ -n "$(SYSCONFDIR)" ] ;\ 50 if [ -n "$(SYSCONFDIR)" ] ;\
61 then \ 51 then \
62 echo "local LUAROCKS_SYSCONFIG=[[$(SYSCONFDIR)/config.lua]]" >> src/luarocks/cfg.lua ;\ 52 echo "LUAROCKS_SYSCONFIG=[[$(SYSCONFDIR)/config.lua]]" >> src/luarocks/config.lua ;\
63 fi 53 fi
64 if [ -n "$(ROCKS_TREE)" ] ;\ 54 if [ -n "$(ROCKS_TREE)" ] ;\
65 then \ 55 then \
66 echo "local LUAROCKS_ROCKS_TREE=[[$(ROCKS_TREE)]]" >> src/luarocks/cfg.lua ;\ 56 echo "LUAROCKS_ROCKS_TREE=[[$(ROCKS_TREE)]]" >> src/luarocks/config.lua ;\
67 fi 57 fi
68 if [ -n "$(FORCE_CONFIG)" ] ;\ 58 if [ -n "$(FORCE_CONFIG)" ] ;\
69 then \ 59 then \
70 echo "local LUAROCKS_FORCE_CONFIG=true" >> src/luarocks/cfg.lua ;\ 60 echo "LUAROCKS_FORCE_CONFIG=true" >> src/luarocks/config.lua ;\
71 fi 61 fi
72 echo "local LUAROCKS_UNAME_S=[[$(LUAROCKS_UNAME_S)]]" >> src/luarocks/cfg.lua 62 echo "LUAROCKS_UNAME_S=[[$(LUAROCKS_UNAME_S)]]" >> src/luarocks/config.lua
73 echo "local LUAROCKS_UNAME_M=[[$(LUAROCKS_UNAME_M)]]" >> src/luarocks/cfg.lua 63 echo "LUAROCKS_UNAME_M=[[$(LUAROCKS_UNAME_M)]]" >> src/luarocks/config.lua
74 echo "local LUAROCKS_DOWNLOADER=[[$(LUAROCKS_DOWNLOADER)]]" >> src/luarocks/cfg.lua 64 echo "LUAROCKS_DOWNLOADER=[[$(LUAROCKS_DOWNLOADER)]]" >> src/luarocks/config.lua
75 echo "local LUAROCKS_MD5CHECKER=[[$(LUAROCKS_MD5CHECKER)]]" >> src/luarocks/cfg.lua 65 echo "LUAROCKS_MD5CHECKER=[[$(LUAROCKS_MD5CHECKER)]]" >> src/luarocks/config.lua
76 cat src/luarocks/cfg.lua.bak >> src/luarocks/cfg.lua 66
77 rm src/luarocks/cfg.lua.bak 67build_bins:
68 for f in $(BIN_FILES) ;\
69 do \
70 sed "1d" src/bin/$$f >> src/bin/$$f.bak ;\
71 echo "#!$(LUA_BINDIR)/lua$(LUA_SUFFIX)" > src/bin/$$f ;\
72 echo "package.path = [[$(LUADIR)/?.lua;$(LUADIR)/?/init.lua;]]..package.path" >> src/bin/$$f ;\
73 cat src/bin/$$f.bak >> src/bin/$$f ;\
74 rm src/bin/$$f.bak ;\
75 done
76
77built: src/luarocks/config.lua build_bins
78 touch built 78 touch built
79 @echo 79 @echo
80 @echo "Done. Type 'make install' to install into $(PREFIX)." 80 @echo "Done. Type 'make install' to install into $(PREFIX)."
@@ -102,14 +102,22 @@ clean:
102 sed -i.bak "s,^#!.*lua.*,#!/usr/bin/env lua,;/^package.path/d" src/bin/$$f ;\ 102 sed -i.bak "s,^#!.*lua.*,#!/usr/bin/env lua,;/^package.path/d" src/bin/$$f ;\
103 rm src/bin/$$f.bak ;\ 103 rm src/bin/$$f.bak ;\
104 done 104 done
105 sed -i.bak "/^local LUA/d" src/luarocks/cfg.lua 105 rm -f src/luarocks/config.lua
106 rm src/luarocks/cfg.lua.bak 106 rm -f built
107 107
108install: built 108install_bins:
109 mkdir -p "$(DESTDIR)$(BINDIR)" 109 mkdir -p "$(DESTDIR)$(BINDIR)"
110 cd src/bin && cp $(BIN_FILES) "$(DESTDIR)$(BINDIR)" 110 cd src/bin && cp $(BIN_FILES) "$(DESTDIR)$(BINDIR)"
111
112install_luas:
111 mkdir -p "$(DESTDIR)$(LUADIR)/luarocks" 113 mkdir -p "$(DESTDIR)$(LUADIR)/luarocks"
112 cd src/luarocks && for f in $(LUAROCKS_FILES); do d="$(DESTDIR)$(LUADIR)/luarocks"/`dirname "$$f"`; mkdir -p "$$d"; cp "$$f" "$$d"; done 114 cd src/luarocks && for f in $(LUAROCKS_FILES); do d="$(DESTDIR)$(LUADIR)/luarocks"/`dirname "$$f"`; mkdir -p "$$d"; cp "$$f" "$$d"; done
115
116install_config:
117 mkdir -p "$(DESTDIR)$(LUADIR)/luarocks"
118 cd src/luarocks && cp config.lua "$(DESTDIR)$(LUADIR)/luarocks"
119
120write_sysconfig:
113 mkdir -p "$(DESTDIR)$(ROCKS_TREE)" 121 mkdir -p "$(DESTDIR)$(ROCKS_TREE)"
114 if [ ! -f "$(DESTDIR)$(CONFIG_FILE)" ] ;\ 122 if [ ! -f "$(DESTDIR)$(CONFIG_FILE)" ] ;\
115 then \ 123 then \
@@ -124,17 +132,13 @@ install: built
124 fi ;\ 132 fi ;\
125 echo ' [[$(ROCKS_TREE)]]' >> "$(DESTDIR)$(CONFIG_FILE)" ;\ 133 echo ' [[$(ROCKS_TREE)]]' >> "$(DESTDIR)$(CONFIG_FILE)" ;\
126 echo '}' >> "$(DESTDIR)$(CONFIG_FILE)" ;\ 134 echo '}' >> "$(DESTDIR)$(CONFIG_FILE)" ;\
127 if [ -n "$(SCRIPTS_DIR)" ] ;\
128 then \
129 echo "scripts_dir = [[$(SCRIPTS_DIR)]]" >> "$(DESTDIR)$(CONFIG_FILE)" ;\
130 fi ;\
131 if [ -n "$(LUA_MODULES_DIR)" ] ;\
132 then \
133 echo "lua_modules_dir = [[$(LUA_MODULES_DIR)]]" >> "$(DESTDIR)$(CONFIG_FILE)" ;\
134 fi ;\
135 if [ -n "$(BIN_MODULES_DIR)" ] ;\
136 then \
137 echo "bin_modules_dir = [[$(BIN_MODULES_DIR)]]" >> "$(DESTDIR)$(CONFIG_FILE)" ;\
138 fi ;\
139 fi 135 fi
140 136
137install: built install_bins install_luas install_config write_sysconfig
138
139bootstrap: src/luarocks/config.lua install_config write_sysconfig
140 LUA_PATH="$$PWD/src/?.lua;$$LUA_PATH" src/bin/luarocks make rockspec
141
142#build_rock: build_bins
143
144install_rock: install_bins install_luas
diff --git a/install.bat b/install.bat
index 6ebd6680..94febc28 100644
--- a/install.bat
+++ b/install.bat
@@ -256,20 +256,20 @@ IF ERRORLEVEL 1 GOTO ERROR
256XCOPY /S src\luarocks\*.* "%LUADIR%\luarocks" >NUL 256XCOPY /S src\luarocks\*.* "%LUADIR%\luarocks" >NUL
257IF ERRORLEVEL 1 GOTO ERROR 257IF ERRORLEVEL 1 GOTO ERROR
258 258
259RENAME "%LUADIR%\luarocks\cfg.lua" "cfg.lua.bak" 259RENAME "%LUADIR%\luarocks\config.lua" "config.lua.bak"
260ECHO local LUA_INCDIR=[[%LUA_INCDIR%]]>> "%LUADIR%\luarocks\cfg.lua" 260ECHO local LUA_INCDIR=[[%LUA_INCDIR%]]>> "%LUADIR%\luarocks\config.lua"
261ECHO local LUA_LIBDIR=[[%LUA_LIBDIR%]]>> "%LUADIR%\luarocks\cfg.lua" 261ECHO local LUA_LIBDIR=[[%LUA_LIBDIR%]]>> "%LUADIR%\luarocks\config.lua"
262ECHO local LUA_BINDIR=[[%LUA_BINDIR%]]>> "%LUADIR%\luarocks\cfg.lua" 262ECHO local LUA_BINDIR=[[%LUA_BINDIR%]]>> "%LUADIR%\luarocks\config.lua"
263ECHO local LUA_INTERPRETER=[[%LUA_INTERPRETER%]]>> "%LUADIR%\luarocks\cfg.lua" 263ECHO local LUA_INTERPRETER=[[%LUA_INTERPRETER%]]>> "%LUADIR%\luarocks\config.lua"
264ECHO local LUAROCKS_UNAME_S=[[WindowsNT]]>> "%LUADIR%\luarocks\cfg.lua" 264ECHO local LUAROCKS_UNAME_S=[[WindowsNT]]>> "%LUADIR%\luarocks\config.lua"
265ECHO local LUAROCKS_UNAME_M=[[x86]]>> "%LUADIR%\luarocks\cfg.lua" 265ECHO local LUAROCKS_UNAME_M=[[x86]]>> "%LUADIR%\luarocks\config.lua"
266ECHO local LUAROCKS_SYSCONFIG=[[%SYSCONFDIR%/config.lua]]>> "%LUADIR%\luarocks\cfg.lua" 266ECHO local LUAROCKS_SYSCONFIG=[[%SYSCONFDIR%/config.lua]]>> "%LUADIR%\luarocks\config.lua"
267ECHO local LUAROCKS_ROCKS_TREE=[[%ROCKS_TREE%]]>> "%LUADIR%\luarocks\cfg.lua" 267ECHO local LUAROCKS_ROCKS_TREE=[[%ROCKS_TREE%]]>> "%LUADIR%\luarocks\config.lua"
268ECHO local LUAROCKS_PREFIX=[[%PREFIX%]]>> "%LUADIR%\luarocks\cfg.lua" 268ECHO local LUAROCKS_PREFIX=[[%PREFIX%]]>> "%LUADIR%\luarocks\config.lua"
269IF NOT [%FORCE_CONFIG%]==[] ECHO local LUAROCKS_FORCE_CONFIG=true>> "%LUADIR%\luarocks\cfg.lua" 269IF NOT [%FORCE_CONFIG%]==[] ECHO local LUAROCKS_FORCE_CONFIG=true>> "%LUADIR%\luarocks\config.lua"
270TYPE "%LUADIR%\luarocks\cfg.lua.bak">> "%LUADIR%\luarocks\cfg.lua" 270TYPE "%LUADIR%\luarocks\config.lua.bak">> "%LUADIR%\luarocks\config.lua"
271 271
272DEL /F /Q "%LUADIR%\luarocks\cfg.lua.bak" 272DEL /F /Q "%LUADIR%\luarocks\config.lua.bak"
273 273
274SET CONFIG_FILE=%SYSCONFDIR%\config.lua 274SET CONFIG_FILE=%SYSCONFDIR%\config.lua
275 275
diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua
index 2758ce0f..881db683 100644
--- a/src/luarocks/cfg.lua
+++ b/src/luarocks/cfg.lua
@@ -9,7 +9,10 @@ local rawset, next, table, pairs, print, require, io, os, setmetatable, pcall, i
9-- file format documentation</a> for details. 9-- file format documentation</a> for details.
10module("luarocks.cfg") 10module("luarocks.cfg")
11 11
12program_version = "2.0" 12-- Load site-local global configurations
13local config = require("luarocks.config")
14
15program_version = "2.0.1"
13user_agent = "LuaRocks/"..program_version 16user_agent = "LuaRocks/"..program_version
14 17
15local persist = require("luarocks.persist") 18local persist = require("luarocks.persist")
@@ -31,12 +34,12 @@ local detected = {}
31local system,proc 34local system,proc
32 35
33-- A proper installation of LuaRocks will hardcode the system 36-- A proper installation of LuaRocks will hardcode the system
34-- and proc values with LUAROCKS_UNAME_S and LUAROCKS_UNAME_M, 37-- and proc values with config.LUAROCKS_UNAME_S and config.LUAROCKS_UNAME_M,
35-- so that this detection does not run every time. When it is 38-- so that this detection does not run every time. When it is
36-- performed, we use the Unix way to identify the system, 39-- performed, we use the Unix way to identify the system,
37-- even on Windows (assuming UnxUtils or Cygwin). 40-- even on Windows (assuming UnxUtils or Cygwin).
38system = LUAROCKS_UNAME_S or io.popen("uname -s"):read("*l") 41system = config.LUAROCKS_UNAME_S or io.popen("uname -s"):read("*l")
39proc = LUAROCKS_UNAME_M or io.popen("uname -m"):read("*l") 42proc = config.LUAROCKS_UNAME_M or io.popen("uname -m"):read("*l")
40if proc:match("i[%d]86") then 43if proc:match("i[%d]86") then
41 proc = "x86" 44 proc = "x86"
42elseif proc:match("amd64") or proc:match("x86_64") then 45elseif proc:match("amd64") or proc:match("x86_64") then
@@ -82,9 +85,9 @@ end
82variables = {} 85variables = {}
83rocks_trees = {} 86rocks_trees = {}
84 87
85persist.load_into_table(LUAROCKS_SYSCONFIG or sys_config_file, _M) 88persist.load_into_table(config.LUAROCKS_SYSCONFIG or sys_config_file, _M)
86 89
87if not LUAROCKS_FORCE_CONFIG then 90if not config.LUAROCKS_FORCE_CONFIG then
88 home_config_file = os.getenv("LUAROCKS_CONFIG") or home_config_file 91 home_config_file = os.getenv("LUAROCKS_CONFIG") or home_config_file
89 local home_overrides = persist.load_into_table(home_config_file, { home = home }) 92 local home_overrides = persist.load_into_table(home_config_file, { home = home })
90 if home_overrides then 93 if home_overrides then
@@ -97,14 +100,14 @@ if not next(rocks_trees) then
97 if home_tree then 100 if home_tree then
98 table.insert(rocks_trees, home_tree) 101 table.insert(rocks_trees, home_tree)
99 end 102 end
100 if LUAROCKS_ROCKS_TREE then 103 if config.LUAROCKS_ROCKS_TREE then
101 table.insert(rocks_trees, LUAROCKS_ROCKS_TREE) 104 table.insert(rocks_trees, config.LUAROCKS_ROCKS_TREE)
102 end 105 end
103end 106end
104 107
105-- Configure defaults: 108-- Configure defaults:
106 109
107local root = LUAROCKS_ROCKS_TREE or home_tree 110local root = config.LUAROCKS_ROCKS_TREE or home_tree
108local defaults = { 111local defaults = {
109 root_dir = root, 112 root_dir = root,
110 rocks_dir = root.."/lib/luarocks/rocks", 113 rocks_dir = root.."/lib/luarocks/rocks",
@@ -123,9 +126,9 @@ local defaults = {
123 }, 126 },
124 127
125 lua_extension = "lua", 128 lua_extension = "lua",
126 lua_interpreter = LUA_INTERPRETER or "lua", 129 lua_interpreter = config.LUA_INTERPRETER or "lua",
127 downloader = LUAROCKS_DOWNLOADER or "wget", 130 downloader = config.LUAROCKS_DOWNLOADER or "wget",
128 md5checker = LUAROCKS_MD5CHECKER or "md5sum", 131 md5checker = config.LUAROCKS_MD5CHECKER or "md5sum",
129 132
130 variables = {}, 133 variables = {},
131 134
@@ -149,9 +152,9 @@ if detected.windows then
149 defaults.external_lib_extension = "dll" 152 defaults.external_lib_extension = "dll"
150 defaults.obj_extension = "obj" 153 defaults.obj_extension = "obj"
151 defaults.external_deps_dirs = { "c:/external/" } 154 defaults.external_deps_dirs = { "c:/external/" }
152 defaults.variables.LUA_BINDIR = LUA_BINDIR and LUA_BINDIR:gsub("\\", "/") or "c:/lua5.1/bin" 155 defaults.variables.LUA_BINDIR = config.LUA_BINDIR and config.LUA_BINDIR:gsub("\\", "/") or "c:/lua5.1/bin"
153 defaults.variables.LUA_INCDIR = LUA_INCDIR and LUA_INCDIR:gsub("\\", "/") or "c:/lua5.1/include" 156 defaults.variables.LUA_INCDIR = config.LUA_INCDIR and config.LUA_INCDIR:gsub("\\", "/") or "c:/lua5.1/include"
154 defaults.variables.LUA_LIBDIR = LUA_LIBDIR and LUA_LIBDIR:gsub("\\", "/") or "c:/lua5.1/lib" 157 defaults.variables.LUA_LIBDIR = config.LUA_LIBDIR and config.LUA_LIBDIR:gsub("\\", "/") or "c:/lua5.1/lib"
155 defaults.cmake_generator = "MinGW Makefiles" 158 defaults.cmake_generator = "MinGW Makefiles"
156 defaults.make = "nmake" -- TODO: Split Windows flavors between mingw and msvc 159 defaults.make = "nmake" -- TODO: Split Windows flavors between mingw and msvc
157 defaults.makefile = "Makefile.win" 160 defaults.makefile = "Makefile.win"
@@ -178,9 +181,9 @@ if detected.unix then
178 defaults.external_lib_extension = "so" 181 defaults.external_lib_extension = "so"
179 defaults.obj_extension = "o" 182 defaults.obj_extension = "o"
180 defaults.external_deps_dirs = { "/usr/local", "/usr" } 183 defaults.external_deps_dirs = { "/usr/local", "/usr" }
181 defaults.variables.LUA_BINDIR = LUA_BINDIR or "/usr/local/bin" 184 defaults.variables.LUA_BINDIR = config.LUA_BINDIR or "/usr/local/bin"
182 defaults.variables.LUA_INCDIR = LUA_INCDIR or "/usr/local/include" 185 defaults.variables.LUA_INCDIR = config.LUA_INCDIR or "/usr/local/include"
183 defaults.variables.LUA_LIBDIR = LUA_LIBDIR or "/usr/local/lib" 186 defaults.variables.LUA_LIBDIR = config.LUA_LIBDIR or "/usr/local/lib"
184 defaults.variables.CFLAGS = "-O2" 187 defaults.variables.CFLAGS = "-O2"
185 defaults.cmake_generator = "Unix Makefiles" 188 defaults.cmake_generator = "Unix Makefiles"
186 defaults.make = "make" 189 defaults.make = "make"
@@ -245,7 +248,7 @@ end
245defaults.variables.LUA = defaults.lua_interpreter 248defaults.variables.LUA = defaults.lua_interpreter
246defaults.variables.LIB_EXTENSION = defaults.lib_extension 249defaults.variables.LIB_EXTENSION = defaults.lib_extension
247defaults.variables.OBJ_EXTENSION = defaults.obj_extension 250defaults.variables.OBJ_EXTENSION = defaults.obj_extension
248defaults.variables.LUAROCKS_PREFIX = LUAROCKS_PREFIX 251defaults.variables.LUAROCKS_PREFIX = config.LUAROCKS_PREFIX
249 252
250-- Use defaults: 253-- Use defaults:
251 254
diff --git a/src/luarocks/fetch.lua b/src/luarocks/fetch.lua
index 5e1f870d..073b14d1 100644
--- a/src/luarocks/fetch.lua
+++ b/src/luarocks/fetch.lua
@@ -146,9 +146,13 @@ function load_local_rockspec(filename)
146 util.platform_overrides(rockspec.hooks) 146 util.platform_overrides(rockspec.hooks)
147 147
148 local basename = dir.base_name(filename) 148 local basename = dir.base_name(filename)
149 rockspec.name = basename:match("(.*)-[^-]*-[0-9]*") 149 if basename == "rockspec" then
150 if not rockspec.name then 150 rockspec.name = rockspec.package:lower()
151 return nil, "Expected filename in format 'name-version-revision.rockspec'." 151 else
152 rockspec.name = basename:match("(.*)-[^-]*-[0-9]*")
153 if not rockspec.name then
154 return nil, "Expected filename in format 'name-version-revision.rockspec'."
155 end
152 end 156 end
153 157
154 local protocol, pathname = dir.split_url(rockspec.source.url) 158 local protocol, pathname = dir.split_url(rockspec.source.url)
@@ -164,7 +168,7 @@ function load_local_rockspec(filename)
164 end 168 end
165 169
166 local name_version = rockspec.package:lower() .. "-" .. rockspec.version 170 local name_version = rockspec.package:lower() .. "-" .. rockspec.version
167 if basename ~= name_version .. ".rockspec" then 171 if basename ~= "rockspec" and basename ~= name_version .. ".rockspec" then
168 return nil, "Inconsistency between rockspec filename ("..basename..") and its contents ("..name_version..".rockspec)." 172 return nil, "Inconsistency between rockspec filename ("..basename..") and its contents ("..name_version..".rockspec)."
169 end 173 end
170 174
@@ -207,9 +211,15 @@ end
207function load_rockspec(filename, location) 211function load_rockspec(filename, location)
208 assert(type(filename) == "string") 212 assert(type(filename) == "string")
209 213
210 local name = dir.base_name(filename):match("(.*)%.rockspec") 214 local name
211 if not name then 215 local basename = dir.base_name(filename)
212 return nil, "Filename '"..filename.."' does not look like a rockspec." 216 if basename == "rockspec" then
217 name = "rockspec"
218 else
219 name = basename:match("(.*)%.rockspec")
220 if not name and not basename == "rockspec" then
221 return nil, "Filename '"..filename.."' does not look like a rockspec."
222 end
213 end 223 end
214 224
215 local err, errcode 225 local err, errcode
diff --git a/src/luarocks/make.lua b/src/luarocks/make.lua
index 1365cf13..cb2ba374 100644
--- a/src/luarocks/make.lua
+++ b/src/luarocks/make.lua
@@ -34,7 +34,7 @@ function run(...)
34 if not rockspec then 34 if not rockspec then
35 local files = fs.list_dir(fs.current_dir()) 35 local files = fs.list_dir(fs.current_dir())
36 for _, file in pairs(files) do 36 for _, file in pairs(files) do
37 if file:match(".rockspec$") then 37 if file:match("rockspec$") then
38 if rockspec then 38 if rockspec then
39 return nil, "Please specify which rockspec file to use." 39 return nil, "Please specify which rockspec file to use."
40 else 40 else
@@ -46,7 +46,7 @@ function run(...)
46 return nil, "Argument missing: please specify a rockspec to use on current directory." 46 return nil, "Argument missing: please specify a rockspec to use on current directory."
47 end 47 end
48 end 48 end
49 if not rockspec:match("%.rockspec$") then 49 if not rockspec:match("rockspec$") then
50 return nil, "Invalid argument: 'make' takes a rockspec as a parameter. See help." 50 return nil, "Invalid argument: 'make' takes a rockspec as a parameter. See help."
51 end 51 end
52 52