$ env TAGS="bindata" make -f BSDmakefile generate build ... writing bindata.go ... grep: repetition-operator operand invalid Gitea requires Node.js 10.0.0 or greater and npm to build. You can get it at https://nodejs.org/en/download/ gmake: *** [Makefile:143: node-check] Error 1 *** Error 2 in /.../gitea (BSDmakefile:46 'FRC': "gmake" "--no-print-directory" generate build )
It happened, for example, to update 1.11.1 -> 1.11.2 and 1.11.5 -> 1.11.6.
This is because of not Node.js but grep module in OS.
It's actually because of the difference in using options between GNU grep and OpenBSD's grep.
OpenBSD's default grep is like this:
$ /usr/bin/grep --help usage: grep [-abcEFGHhIiLlnoqRsUVvwxZ] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [-m num] [--binary-files=value] [--context[=num]] [--label=name] [--line-buffered] [pattern] [file ...]
The current solution I have found after struggling is installing
ggrep. It is GNU grep as ports package.
To install it, run:
# pkg_add ggrep
In the process of Gitea make, it's necessary to let running
grep result in running /usr/local/bin/ggrep.
Therefore, I created the symbolic link and modified
$ ln -s /usr/local/bin/ggrep /(somewhere)/grep $ export PATH="/(somewhere):$PATH" $ # verify $ # (1) $PATH begins with /(somewhere) $ echo $PATH /(somewhere) ... /usr/bin /bin /usr/sbin /sbin ... /usr/local/bin /usr/local/sbin $ # (2) `grep` is GNU grep $ grep --help Usage: grep [OPTION]... PATTERNS [FILE]... Search for PATTERNS in each FILE. Example: ggrep -i 'hello world' menu.h main.c
ggrep became used as
Ready for make:
$ env TAGS="bindata" make -f BSDmakefile generate build
It was successful 😃
To clean up temporary file and env, finally:
$ rm /(somewhere)/grep $ # reset $PATH $ # case fish: $ fish ~/.config/fish/config.fish $ # else: $ . ~/.profile
Optionally, there is a similar but more dangerous way...
This is my first solution.
Then I tried not to change /usr/bin manually and got the solution above 😅
Please be careful because there is a risk of deleting /usr/bin files by mistake in the below way:
# # replace original `grep` with `ggrep`'s symbolic link # mv /usr/bin/grep /usr/bin/grep_bk # ln -s /usr/local/bin/ggrep /usr/bin/grep $ env TAGS="bindata" make -f BSDmakefile generate build # # recover original `grep` # mv /usr/bin/grep_bk /usr/bin/grep