diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2018-07-01 15:21:16 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-07-01 22:54:07 -0300 |
commit | 98d1f1da856ab59cf8355c1e2e11e3c0eb954fb2 (patch) | |
tree | aeb6d9e6f45423cf5698930aea2bc55a8d721fa9 /Makefile | |
parent | cc4c9f6321ebaaf71f8c9c26bd30967e93bd2cbb (diff) | |
download | luarocks-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-- | Makefile | 246 |
1 files changed, 102 insertions, 144 deletions
@@ -1,150 +1,108 @@ | |||
1 | 1 | ||
2 | include config.unix | 2 | -include config.unix |
3 | 3 | ||
4 | .PHONY: all build dev build_bins luadoc check_makefile cleanup_bins clean \ | 4 | all: ./luarocks ./luarocks-admin |
5 | install_site_config write_sysconfig install bootstrap install_rock \ | ||
6 | run_luarocks | ||
7 | 5 | ||
8 | ROCKS_TREE ?= $(PREFIX) | 6 | # ---------------------------------------- |
9 | SYSCONFDIR ?= $(PREFIX)/etc/luarocks | 7 | # Base build |
10 | LUA_DIR ?= /usr/local | 8 | # ---------------------------------------- |
11 | LUA_BINDIR ?= $(LUA_DIR)/bin | ||
12 | 9 | ||
13 | CONFIG_FILE = $(SYSCONFDIR)/config-$(LUA_VERSION).lua | 10 | build: all |
14 | 11 | ||
15 | SAFEPWD=`echo "$$PWD" | sed -e 's/\([][]\)\1/]]..'\''\1\1'\''..[[/g'` | 12 | config.unix: |
16 | 13 | @echo Please run the "./configure" script before building. | |
17 | all: | ||
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 | |||
24 | include Makefile.setup.inc | ||
25 | include Makefile.install.inc | ||
26 | |||
27 | build: $(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) | 17 | config-$(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 \ | 28 | luarocks-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)" ] ;\ | 39 | install: 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 | # ---------------------------------------- | |
82 | dev: | 66 | |
83 | $(MAKE) build_bins LUADIR=$(PWD)/src | 67 | binary: build-binary/luarocks.exe build-binary/luarocks-admin.exe |
84 | 68 | ||
85 | build_bins: cleanup_bins | 69 | build-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 ;\ | 72 | build-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 | 79 | install-binary: build-binary/luarocks.exe build-binary/luarocks-admin.exe | |
96 | luadoc: | 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" | |
101 | check_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." | 93 | bootstrap: ./luarocks $(SYSCONFDIR)/config-$(LUA_VERSION).lua |
110 | @echo | 94 | ./luarocks make --tree="$(ROCKS_TREE)" |
111 | 95 | ||
112 | cleanup_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 ;\ | 100 | clean: |
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 | |
121 | clean: cleanup_bins | 105 | rm -rf ./.luarocks |
122 | rm -f $(SITE_CONFIG) | 106 | rm -rf ./lua_modules |
123 | 107 | ||
124 | run_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 | |||
127 | install_site_config: $(SITE_CONFIG) | ||
128 | mkdir -p "$(DESTDIR)$(LUADIR)/luarocks/core" | ||
129 | cp $(SITE_CONFIG) "$(DESTDIR)$(LUADIR)/luarocks/core" | ||
130 | |||
131 | write_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 | |||
145 | install: build install_bins install_luas install_site_config write_sysconfig | ||
146 | |||
147 | bootstrap: $(SITE_CONFIG) run_luarocks install_site_config write_sysconfig cleanup_bins | ||
148 | |||
149 | install_rock: install_bins install_luas | ||
150 | |||