blob: 24e7541b68b70ff63b3628b3303d052bec8fa88e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# $NetBSD: replace.mk,v 1.17 2019/11/03 19:04:06 rillig Exp $
#
.if !defined(_RUBY_REPLACE_MK)
_RUBY_REPLACE_MK= # defined
.include "${.PARSEDIR}/rubyversion.mk"
# fix shebang line.
#
# REPLACE_RUBY replace shebang line of specified files.
#
.if defined(REPLACE_RUBY)
REPLACE_INTERPRETER+= ${RUBY_NAME}
REPLACE.${RUBY_NAME}.old= .*ruby[0-9.]*
REPLACE.${RUBY_NAME}.new= ${RUBY}
REPLACE_FILES.${RUBY_NAME}= ${REPLACE_RUBY}
.endif # defined(REPLACE_RUBY)
# REPLACE_RUBY_DIRS replace shebang line of files under specified
# directories; relative paths are assumed to be
# under ${WRKSRC}.
# REPLACE_RUBY_PAT specify pattern to match target files under
# REPLACE_RUBY_DIRS directories.
#
REPLACE_RUBY_PAT?= *.rb
.if defined(REPLACE_RUBY_DIRS) && !empty(REPLACE_RUBY_DIRS)
pre-configure: replace-ruby-dirs
. for f in ${REPLACE_RUBY_PAT}
_REPLACE_RUBY_PAT+= -o -name "${f}"
. endfor
_REPLACE_RUBY_FIND_ARGS= \( ${_REPLACE_RUBY_PAT:S/-o//1} \)
replace-ruby-dirs:
${RUN} cd ${WRKSRC} && \
for d in ${REPLACE_RUBY_DIRS}; do \
if [ -d $$d ]; then \
dirs="$$dirs $$d"; \
fi; \
done; \
if [ -z "$$dirs" ]; then \
exit 0; \
fi; \
${FIND} $$dirs \
-type f ${_REPLACE_RUBY_FIND_ARGS} -print | \
while read f; do \
${SED} -e '1s|^#! *[a-z0-9_/\.-][a-z0-9_/\.-]*/env *|#!|g' \
-e '1s|^#! *[a-z0-9_/\.-]*ruby[0-9\.]*|#!${RUBY}|' $$f > $$f.tmp; \
if ${CMP} -s $$f $$f.tmp; then \
${RM} $$f.tmp; \
else \
${MV} $$f.tmp $$f; \
fi; \
done
.else
replace-ruby-dirs:
.endif # defined(REPLACE_RUBY_DIRS)
.endif # _RUBY_REPLACE_MK
|