aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2018-07-01 15:21:16 -0300
committerHisham Muhammad <hisham@gobolinux.org>2018-07-01 22:54:07 -0300
commit98d1f1da856ab59cf8355c1e2e11e3c0eb954fb2 (patch)
treeaeb6d9e6f45423cf5698930aea2bc55a8d721fa9 /Makefile
parentcc4c9f6321ebaaf71f8c9c26bd30967e93bd2cbb (diff)
downloadluarocks-98d1f1da856ab59cf8355c1e2e11e3c0eb954fb2.tar.gz
luarocks-98d1f1da856ab59cf8355c1e2e11e3c0eb954fb2.tar.bz2
luarocks-98d1f1da856ab59cf8355c1e2e11e3c0eb954fb2.zip
Unix: new build system
* Reworked configure script * Now passes shellcheck * New Makefile for Unix * Simplified `make` and `make install` targets * Simplified `make bootstrap` target * New targets `make binary` and `make install-binary` build and install an all-in-one binary of LuaRocks
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile246
1 files changed, 102 insertions, 144 deletions
diff --git a/Makefile b/Makefile
index 80b872eb..4e528db8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,150 +1,108 @@
1 1
2include config.unix 2-include config.unix
3 3
4.PHONY: all build dev build_bins luadoc check_makefile cleanup_bins clean \ 4all: ./luarocks ./luarocks-admin
5 install_site_config write_sysconfig install bootstrap install_rock \
6 run_luarocks
7 5
8ROCKS_TREE ?= $(PREFIX) 6# ----------------------------------------
9SYSCONFDIR ?= $(PREFIX)/etc/luarocks 7# Base build
10LUA_DIR ?= /usr/local 8# ----------------------------------------
11LUA_BINDIR ?= $(LUA_DIR)/bin
12 9
13CONFIG_FILE = $(SYSCONFDIR)/config-$(LUA_VERSION).lua 10build: all
14 11
15SAFEPWD=`echo "$$PWD" | sed -e 's/\([][]\)\1/]]..'\''\1\1'\''..[[/g'` 12config.unix:
16 13 @echo Please run the "./configure" script before building.
17all:
18 @echo "- Type 'make build' and 'make install':"
19 @echo " to install to $(PREFIX) as usual."
20 @echo "- Type 'make bootstrap':"
21 @echo " to install LuaRocks in $(PREFIX) as a rock."
22 @echo
23
24include Makefile.setup.inc
25include Makefile.install.inc
26
27build: $(SITE_CONFIG) build_bins
28 @echo
29 @echo "Done. Type 'make install' to install into $(PREFIX)."
30 @echo 14 @echo
31 15 @exit 1
32$(SITE_CONFIG): config.unix 16
33 rm -f $(SITE_CONFIG) 17config-$(LUA_VERSION).lua.in: config.unix
34 echo 'local site_config = {}' >> $(SITE_CONFIG) 18
35 if [ -n "$(PREFIX)" ] ;\ 19./luarocks: config.unix config-$(LUA_VERSION).lua.in
36 then \ 20 rm -f src/luarocks/core/hardcoded.lua
37 echo "site_config.LUAROCKS_PREFIX=[[$(PREFIX)]]" >> $(SITE_CONFIG) ;\ 21 echo "#!/bin/sh" > luarocks
38 fi 22 echo "unset LUA_PATH LUA_PATH_5_2 LUA_PATH_5_3 LUA_PATH_5_4" >> luarocks
39 if [ -n "$(LUA_INCDIR)" ] ;\ 23 echo 'LUAROCKS_SYSCONFDIR="$(SYSCONFDIR)" LUA_PATH="$(PWD)/src/?.lua;;" exec "$(LUA_BINDIR)/$(LUA_INTERPRETER)" "src/bin/luarocks" --project-tree="$(PWD)/lua_modules" "$$@"' >> luarocks
40 then \ 24 chmod +rx ./luarocks
41 echo "site_config.LUA_INCDIR=[[$(LUA_INCDIR)]]" >> $(SITE_CONFIG) ;\ 25 ./luarocks init
42 fi 26 cp config-$(LUA_VERSION).lua.in .luarocks/config-$(LUA_VERSION).lua
43 if [ -n "$(LUA_LIBDIR)" ] ;\ 27
44 then \ 28luarocks-admin: config.unix
45 echo "site_config.LUA_LIBDIR=[[$(LUA_LIBDIR)]]" >> $(SITE_CONFIG) ;\ 29 rm -f src/luarocks/core/hardcoded.lua
46 fi 30 echo "#!/bin/sh" > luarocks-admin
47 if [ -n "$(LUA_BINDIR)" ] ;\ 31 echo "unset LUA_PATH LUA_PATH_5_2 LUA_PATH_5_3 LUA_PATH_5_4" >> luarocks-admin
48 then \ 32 echo 'LUAROCKS_SYSCONFDIR="$(SYSCONFDIR)" LUA_PATH="$(PWD)/src/?.lua;;" exec "$(LUA_BINDIR)/$(LUA_INTERPRETER)" "src/bin/luarocks-admin" --project-tree="$(PWD)/lua_modules" "$$@"' >> luarocks-admin
49 echo "site_config.LUA_BINDIR=[[$(LUA_BINDIR)]]" >> $(SITE_CONFIG) ;\ 33 chmod +rx ./luarocks-admin
50 fi 34
51 if [ -n "$(LUA_SUFFIX)" ] ;\ 35# ----------------------------------------
52 then \ 36# Regular install
53 echo "site_config.LUA_INTERPRETER=[[lua$(LUA_SUFFIX)]]" >> $(SITE_CONFIG) ;\ 37# ----------------------------------------
54 fi 38
55 if [ -n "$(SYSCONFDIR)" ] ;\ 39install: all $(PREFIX)/bin/luarocks $(PREFIX)/bin/luarocks-admin $(SYSCONFDIR)/config-$(LUA_VERSION).lua
56 then \ 40 mkdir -p "$(PREFIX)/share/lua/$(LUA_VERSION)/luarocks"
57 echo "site_config.LUAROCKS_SYSCONFDIR=[[$(SYSCONFDIR)]]" >> $(SITE_CONFIG) ;\ 41 cp -a src/luarocks/* "$(PREFIX)/share/lua/$(LUA_VERSION)/luarocks"
58 fi 42
59 if [ -n "$(ROCKS_TREE)" ] ;\ 43$(PREFIX)/bin/luarocks: src/bin/luarocks config.unix
60 then \ 44 mkdir -p "$(PREFIX)/bin"
61 echo "site_config.LUAROCKS_ROCKS_TREE=[[$(ROCKS_TREE)]]" >> $(SITE_CONFIG) ;\ 45 echo "#!$(LUA_BINDIR)/$(LUA_INTERPRETER)" > $@
62 fi 46 echo "package.loaded['luarocks.core.hardcoded'] = { SYSCONFDIR = [[$(SYSCONFDIR)]] }" >> $@
63 if [ -n "$(FORCE_CONFIG)" ] ;\ 47 echo "package.path=[[$(PREFIX)/share/lua/$(LUA_VERSION)/?.lua;]] .. package.path" >> $@
64 then \ 48 tail -n +2 src/bin/luarocks >> $@
65 echo "site_config.LUAROCKS_FORCE_CONFIG=true" >> $(SITE_CONFIG) ;\ 49 chmod +rx $@
66 fi 50
67 if [ "$(LUA_DIR_SET)" = "yes" ] ;\ 51$(PREFIX)/bin/luarocks-admin: src/bin/luarocks-admin config.unix
68 then \ 52 mkdir -p "$(PREFIX)/bin"
69 echo "site_config.LUA_DIR_SET=true" >> $(SITE_CONFIG) ;\ 53 echo "#!$(LUA_BINDIR)/$(LUA_INTERPRETER)" > $@
70 fi 54 echo "package.loaded['luarocks.core.hardcoded'] = { SYSCONFDIR = [[$(SYSCONFDIR)]] }" >> $@
71 echo "site_config.LUAROCKS_UNAME_S=[[$(LUAROCKS_UNAME_S)]]" >> $(SITE_CONFIG) 55 echo "package.path=[[$(PREFIX)/share/lua/$(LUA_VERSION)/?.lua;]] .. package.path" >> $@
72 echo "site_config.LUAROCKS_UNAME_M=[[$(LUAROCKS_UNAME_M)]]" >> $(SITE_CONFIG) 56 tail -n +2 src/bin/luarocks-admin >> $@
73 echo "site_config.LUAROCKS_DOWNLOADER=[[$(LUAROCKS_DOWNLOADER)]]" >> $(SITE_CONFIG) 57 chmod +rx $@
74 echo "site_config.LUAROCKS_MD5CHECKER=[[$(LUAROCKS_MD5CHECKER)]]" >> $(SITE_CONFIG) 58
75 if [ -n "$(MULTIARCH_SUBDIR)" ] ;\ 59$(SYSCONFDIR)/config-$(LUA_VERSION).lua: config-$(LUA_VERSION).lua.in
76 then \ 60 mkdir -p "$(SYSCONFDIR)"
77 echo 'site_config.LUAROCKS_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[$(MULTIARCH_SUBDIR)]] }, include="include" }' >> $(SITE_CONFIG) ;\ 61 cp config-$(LUA_VERSION).lua.in "$(SYSCONFDIR)/config-$(LUA_VERSION).lua"
78 echo 'site_config.LUAROCKS_RUNTIME_EXTERNAL_DEPS_SUBDIRS={ bin="bin", lib={ "lib", [[$(MULTIARCH_SUBDIR)]] }, include="include" }' >> $(SITE_CONFIG) ;\ 62
79 fi 63# ----------------------------------------
80 echo "return site_config" >> $(SITE_CONFIG) 64# Binary build
81 65# ----------------------------------------
82dev: 66
83 $(MAKE) build_bins LUADIR=$(PWD)/src 67binary: build-binary/luarocks.exe build-binary/luarocks-admin.exe
84 68
85build_bins: cleanup_bins 69build-binary/luarocks.exe: ./luarocks
86 for f in $(BIN_FILES) ;\ 70 LUA_PATH="$(PWD)/src/?.lua;;" "$(LUA_BINDIR)/$(LUA_INTERPRETER)" ./all_in_one "src/bin/luarocks" "$(LUA_DIR)" "^src/luarocks/admin/" "$(SYSCONFDIR)" "build-binary"
87 do \ 71
88 sed "1d" src/bin/$$f > src/bin/$$f.bak ;\ 72build-binary/luarocks-admin.exe: ./luarocks
89 echo "#!$(LUA_BINDIR)/lua$(LUA_SUFFIX)" > src/bin/$$f ;\ 73 LUA_PATH="$(PWD)/src/?.lua;;" "$(LUA_BINDIR)/$(LUA_INTERPRETER)" ./all_in_one "src/bin/luarocks-admin" "$(LUA_DIR)" "^src/luarocks/cmd/" "$(SYSCONFDIR)" "build-binary"
90 echo "package.path = [[$(LUADIR)/?.lua;]]..package.path" | sed "s,//,/,g" >> src/bin/$$f ;\ 74
91 cat src/bin/$$f.bak >> src/bin/$$f ;\ 75# ----------------------------------------
92 chmod +rx src/bin/$$f ;\ 76# Binary install
93 rm -f src/bin/$$f.bak ;\ 77# ----------------------------------------
94 done 78
95 79install-binary: build-binary/luarocks.exe build-binary/luarocks-admin.exe
96luadoc: 80 mkdir -p "$(PREFIX)/bin"
97 rm -rf doc/luadoc 81 cp build-binary/luarocks.exe "$(PREFIX)/bin/luarocks"
98 mkdir -p doc/luadoc 82 chmod +rx "$(PREFIX)/bin/luarocks"
99 cd src && luadoc -d ../doc/luadoc --nofiles luarocks/*.lua 83 cp build-binary/luarocks-admin.exe "$(PREFIX)/bin/luarocks-admin"
100 84 chmod +rx "$(PREFIX)/bin/luarocks-admin"
101check_makefile: clean 85 mkdir -p "$(PREFIX)/share/lua/$(LUA_VERSION)/luarocks/core"
102 echo $(BIN_FILES) | tr " " "\n" | sort > makefile_list.txt 86 cp -a src/luarocks/core/* "$(PREFIX)/share/lua/$(LUA_VERSION)/luarocks/core"
103 ( cd src/bin && ls -d * ) | sort > luarocks_dir.txt 87 cp -a src/luarocks/loader.lua "$(PREFIX)/share/lua/$(LUA_VERSION)/luarocks/"
104 echo $(LUAROCKS_FILES) | tr " " "\n" | sort >> makefile_list.txt 88
105 ( cd src/luarocks && find * -name "*.lua" ) | sort >> luarocks_dir.txt 89# ----------------------------------------
106 diff makefile_list.txt luarocks_dir.txt 90# Bootstrap install
107 rm -f makefile_list.txt luarocks_dir.txt 91# ----------------------------------------
108 @echo 92
109 @echo "Makefile is sane." 93bootstrap: ./luarocks $(SYSCONFDIR)/config-$(LUA_VERSION).lua
110 @echo 94 ./luarocks make --tree="$(ROCKS_TREE)"
111 95
112cleanup_bins: 96# ----------------------------------------
113 for f in $(BIN_FILES) ;\ 97# Clean
114 do \ 98# ----------------------------------------
115 mv src/bin/$$f src/bin/$$f.bak ;\ 99
116 sed "s,^#!.*lua.*,#!/usr/bin/env lua,;/^package.path/d" < src/bin/$$f.bak > src/bin/$$f ;\ 100clean:
117 chmod +rx src/bin/$$f ;\ 101 rm -f ./config.unix
118 rm -f src/bin/$$f.bak ;\ 102 rm -f ./luarocks
119 done 103 rm -f ./luarocks-admin
120 104 rm -rf build-binary
121clean: cleanup_bins 105 rm -rf ./.luarocks
122 rm -f $(SITE_CONFIG) 106 rm -rf ./lua_modules
123 107
124run_luarocks: 108.PHONY: all build install binary install-binary bootstrap clean
125 '$(LUA_BINDIR)/lua$(LUA_SUFFIX)' -e "package.path=[[$(SAFEPWD)/src/?.lua;]]..package.path" src/bin/luarocks make rockspec --tree="$(PREFIX)"
126
127install_site_config: $(SITE_CONFIG)
128 mkdir -p "$(DESTDIR)$(LUADIR)/luarocks/core"
129 cp $(SITE_CONFIG) "$(DESTDIR)$(LUADIR)/luarocks/core"
130
131write_sysconfig:
132 mkdir -p "$(DESTDIR)$(ROCKS_TREE)"
133 if [ ! -f "$(DESTDIR)$(CONFIG_FILE)" ] ;\
134 then \
135 mkdir -p `dirname "$(DESTDIR)$(CONFIG_FILE)"` ;\
136 echo 'rocks_trees = {' >> "$(DESTDIR)$(CONFIG_FILE)" ;\
137 if [ ! -n "$(FORCE_CONFIG)" ] ;\
138 then \
139 echo ' { name = [[user]], root = home..[[/.luarocks]] },' >> "$(DESTDIR)$(CONFIG_FILE)" ;\
140 fi ;\
141 echo ' { name = [[system]], root = [[$(ROCKS_TREE)]] }' >> "$(DESTDIR)$(CONFIG_FILE)" ;\
142 echo '}' >> "$(DESTDIR)$(CONFIG_FILE)" ;\
143 fi
144
145install: build install_bins install_luas install_site_config write_sysconfig
146
147bootstrap: $(SITE_CONFIG) run_luarocks install_site_config write_sysconfig cleanup_bins
148
149install_rock: install_bins install_luas
150