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 | |||
