diff options
| author | EuAndreh <eu@euandre.org> | 2023-11-10 10:26:53 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2023-11-10 10:57:56 -0300 |
| commit | dc563de9378993f666f27bef715bc425a7711f45 (patch) | |
| tree | 77ee21bb4b444e1f79a0c6fceed6b297a5dfb9c8 /Makefile | |
| parent | tests/assert-deps.sh: Enforce Makefile is always up-to-date (diff) | |
| download | papod-dc563de9378993f666f27bef715bc425a7711f45.tar.gz papod-dc563de9378993f666f27bef715bc425a7711f45.tar.xz | |
tests/assert-install.sh: Always to enforce correct installation
Also in this change:
- now we call ln(1) in the "install" target without using the -r
"relative" flag, as it isn't POSIX;
- add `+` as a prefix to the "assert-tests" command, so we tell sub-make
calls to also run things in parallel. In this case, the
"make DESTDIR=... install" calls;
- use the implicit `index.js` entrypoint and do away completly with
`package.json`;
- change from `import` to `require` as Node.js ESM modules don't support
`$NODE_PATH`[0]: "NODE_PATH is not part of resolving import
specifiers. Please use symlinks if this behavior is desired." 🤦;
The parallel sub-make behaviour isn't available in current specification
of make (POSIX issue 7) but is included in the upcoming[1] version 8:
> If a rule invokes a sub-make either via the MAKE macro or via a
> command line that begins with '+', the sub-make is the same
> implementation as the make that invoked the sub-make, and the −j
> option is passed to the sub-make via the MAKEFLAGS environment
> variable with the same maxjobs value and is not overridden by a
> maxjobs value from another source (even if it has the same value), the
> sub-make shall use the same token pool as its invoking make rather
> than create a new token pool.
[0]: https://nodejs.org/api/esm.html#no-node_path
[1]: https://www.opengroup.org/austin/restricted/202x-d3/202x_d3.pdf
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 23 |
1 files changed, 14 insertions, 9 deletions
@@ -10,7 +10,7 @@ TRANSLATIONS = PREFIX = /usr BINDIR = $(PREFIX)/bin LIBDIR = $(PREFIX)/lib -JSLIBDIR = $(LIBDIR)/node_modules/$(NAME) +JSLIBDIR = $(LIBDIR)/node/$(NAME) SHAREDIR = $(PREFIX)/share LOCALEDIR = $(SHAREDIR)/locale MANDIR = $(SHAREDIR)/man @@ -40,6 +40,7 @@ manpages.en.in = \ doc/$(NAME).CHANGELOG.en.7.in \ doc/$(NAME).TODOs.en.7.in \ doc/$(NAME).en.1.in \ + doc/$(NAME).en.3js.in \ doc/$(NAME).tutorial.en.7.in \ doc/$(NAME).recipes.en.7.in \ doc/$(NAME).why.en.7.in @@ -61,7 +62,8 @@ sources = \ derived-assets = \ - $(manpages) \ + $(manpages) \ + src/index.js \ @@ -72,6 +74,9 @@ all: $(derived-assets) $(manpages): Makefile +src/index.js: + ln -fs api.js $@ + .SUFFIXES: .js .js-t @@ -83,10 +88,11 @@ check-t: $(tests.js-t) assert-tests = \ - tests/assert-deps.sh \ + tests/assert-deps.sh \ + tests/assert-install.sh \ $(assert-tests): ALWAYS - sh $@ + +sh $@ check-asserts: $(assert-tests) @@ -108,10 +114,9 @@ clean: install: all mkdir -p \ '$(DESTDIR)$(BINDIR)' \ - '$(DESTDIR)$(JSLIBDIR)'/src - cp package.json '$(DESTDIR)$(JSLIBDIR)' - cp src/*.js '$(DESTDIR)$(JSLIBDIR)'/src - ln -frs '$(DESTDIR)$(JSLIBDIR)'/src/cli.js '$(DESTDIR)$(BINDIR)'/$(NAME) + '$(DESTDIR)$(JSLIBDIR)' + cp src/*.js '$(DESTDIR)$(JSLIBDIR)' + ln -fs '$(DESTDIR)$(JSLIBDIR)'/cli.js '$(DESTDIR)$(BINDIR)'/$(NAME) sh tools/manpages.sh -ip '$(DESTDIR)$(MANDIR)' $(manpages) ## Uninstalls from $(DESTDIR)$(PREFIX). This is a perfect mirror @@ -130,7 +135,7 @@ run-ircd: run-web: $(JSIMPL) src/server/web.js server -l http://localhost:3003 -## Run the web and IRC server locally +## Run the web and IRC server locally. run: $(MAKE) run-ircd & $(MAKE) run-web & wait |
