Skip to content

Commit 2562d5d

Browse files
committed
Merge #19761: build: improve sed robustness by not using sed
3de365e build: replace wingenminiupnpcstrings sed with a patch in miniupnpc package (fanquake) bbc01a7 build: replace qtranslations lrelease sed with a patch in qt package (fanquake) c723e41 build: replace FreeType back-compat sed with a patch in qt package (fanquake) 3aaa39d build: replace pwd sed in qt package with a patch (fanquake) 9d440f4 build: remove no-longer needed qt workaround (fanquake) bf85eac build: remove no-longer needed qt configure workaround (fanquake) 4af59a4 build: use patch rather than sed in zeromq package (fanquake) cc107a3 build: use patch rather than sed in native_cctools package (fanquake) 865cb23 build: use patch rather than sed in fontconfig package (fanquake) 335bd7f build: use patch rather than sed in Boost package (fanquake) f36140d build: use patch rather than sed in bdb package (fanquake) Pull request description: While using `sed` can be handy to use for a quick-fix, these instances accumulate, and can become unmaintainable. Not only that, but using sed isn't necessarily robust and it can fail silently. Most of our usage is also missing any documentation explaining why something is being done, when it should be updated/removed etc. Rather than relying on sed going forward, where possible, I've converted our sed usage into patches. These are easier to maintain, contain documentation, and should fail loudly when they don't apply. The remaining sed usage, (1 in miniupnpc, the rest in qt), are non-trivial to remove, as they are using build-time variables, or some input from the environment. This also steals 2 related commits out of #19716. Related to #16838. ACKs for top commit: hebasto: re-ACK 3de365e, only `drop_lrelease_dependency.patch` updated. Travis makes ARM build without errors now. theuni: ACK 3de365e. Tree-SHA512: b39afcb237e4421f9caabbd665af93fd2e749a1cdd42b1d5ee2261059120005c0e82994d315e679c317d23794eab5c7727f51cae403c94a9c4e4fd7eee9e7ee6
2 parents 28f4e53 + 3de365e commit 2562d5d

17 files changed

+432
-19
lines changed

depends/packages/bdb.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ $(package)_download_path=https://download.oracle.com/berkeley-db
44
$(package)_file_name=db-$($(package)_version).NC.tar.gz
55
$(package)_sha256_hash=12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef
66
$(package)_build_subdir=build_unix
7+
$(package)_patches=clang_cxx_11.patch
78

89
define $(package)_set_vars
910
$(package)_config_opts=--disable-shared --enable-cxx --disable-replication --enable-option-checking
@@ -14,8 +15,7 @@ $(package)_cppflags_mingw32=-DUNICODE -D_UNICODE
1415
endef
1516

1617
define $(package)_preprocess_cmds
17-
sed -i.old 's/__atomic_compare_exchange/__atomic_compare_exchange_db/' dbinc/atomic.h && \
18-
sed -i.old 's/atomic_init/atomic_init_db/' dbinc/atomic.h mp/mp_region.c mp/mp_mvcc.c mp/mp_fget.c mutex/mut_method.c mutex/mut_tas.c && \
18+
patch -p1 < $($(package)_patch_dir)/clang_cxx_11.patch && \
1919
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub dist
2020
endef
2121

depends/packages/boost.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ $(package)_version=1_70_0
33
$(package)_download_path=https://dl.bintray.com/boostorg/release/1.70.0/source/
44
$(package)_file_name=boost_$($(package)_version).tar.bz2
55
$(package)_sha256_hash=430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778
6+
$(package)_patches=unused_var_in_process.patch
67

78
define $(package)_set_vars
89
$(package)_config_opts_release=variant=release
@@ -31,9 +32,8 @@ $(package)_cxxflags_linux=-fPIC
3132
$(package)_cxxflags_android=-fPIC
3233
endef
3334

34-
# Fix unused variable in boost_process, can be removed after upgrading to 1.72
3535
define $(package)_preprocess_cmds
36-
sed -i.old "s/int ret_sig = 0;//" boost/process/detail/posix/wait_group.hpp && \
36+
patch -p1 < $($(package)_patch_dir)/unused_var_in_process.patch && \
3737
echo "using $($(package)_toolset_$(host_os)) : : $($(package)_cxx) : <cxxflags>\"$($(package)_cxxflags) $($(package)_cppflags)\" <linkflags>\"$($(package)_ldflags)\" <archiver>\"$($(package)_archiver_$(host_os))\" <striper>\"$(host_STRIP)\" <ranlib>\"$(host_RANLIB)\" <rc>\"$(host_WINDRES)\" : ;" > user-config.jam
3838
endef
3939

depends/packages/fontconfig.mk

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@ $(package)_download_path=https://www.freedesktop.org/software/fontconfig/release
44
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
55
$(package)_sha256_hash=b449a3e10c47e1d1c7a6ec6e2016cca73d3bd68fbbd4f0ae5cc6b573f7d6c7f3
66
$(package)_dependencies=freetype expat
7+
$(package)_patches=remove_char_width_usage.patch gperf_header_regen.patch
78

89
define $(package)_set_vars
910
$(package)_config_opts=--disable-docs --disable-static --disable-libxml2 --disable-iconv
1011
$(package)_config_opts += --disable-dependency-tracking --enable-option-checking
1112
endef
1213

14+
define $(package)_preprocess_cmds
15+
patch -p1 < $($(package)_patch_dir)/remove_char_width_usage.patch && \
16+
patch -p1 < $($(package)_patch_dir)/gperf_header_regen.patch
17+
endef
18+
1319
define $(package)_config_cmds
1420
$($(package)_autoconf)
1521
endef
1622

17-
# 2.12.1 uses CHAR_WIDTH which is reserved and clashes with some glibc versions, but newer versions of fontconfig
18-
# have broken makefiles which needlessly attempt to re-generate headers with gperf.
19-
# Instead, change all uses of CHAR_WIDTH, and disable the rule that forces header re-generation.
20-
# This can be removed once the upstream build is fixed.
2123
define $(package)_build_cmds
22-
sed -i 's/CHAR_WIDTH/CHARWIDTH/g' fontconfig/fontconfig.h src/fcobjshash.gperf src/fcobjs.h src/fcobjshash.h && \
23-
sed -i 's/fcobjshash.h: fcobjshash.gperf/fcobjshash.h:/' src/Makefile && \
2424
$(MAKE)
2525
endef
2626

depends/packages/miniupnpc.mk

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ $(package)_version=2.0.20180203
33
$(package)_download_path=https://miniupnp.tuxfamily.org/files/
44
$(package)_file_name=$(package)-$($(package)_version).tar.gz
55
$(package)_sha256_hash=90dda8c7563ca6cd4a83e23b3c66dbbea89603a1675bfdb852897c2c9cc220b7
6+
$(package)_patches=dont_use_wingen.patch
67

78
define $(package)_set_vars
89
$(package)_build_opts=CC="$($(package)_cc)"
@@ -14,7 +15,7 @@ endef
1415
define $(package)_preprocess_cmds
1516
mkdir dll && \
1617
sed -e 's|MINIUPNPC_VERSION_STRING \"version\"|MINIUPNPC_VERSION_STRING \"$($(package)_version)\"|' -e 's|OS/version|$(host)|' miniupnpcstrings.h.in > miniupnpcstrings.h && \
17-
sed -i.old "s|miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings|miniupnpcstrings.h: miniupnpcstrings.h.in|" Makefile.mingw
18+
patch -p1 < $($(package)_patch_dir)/dont_use_wingen.patch
1819
endef
1920

2021
define $(package)_build_cmds

depends/packages/native_cctools.mk

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ $(package)_download_path=https://github.com/tpoechtrager/cctools-port/archive
44
$(package)_file_name=$($(package)_version).tar.gz
55
$(package)_sha256_hash=e51995a843533a3dac155dd0c71362dd471597a2d23f13dff194c6285362f875
66
$(package)_build_subdir=cctools
7+
$(package)_patches=ld64_disable_threading.patch
8+
79
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
810
$(package)_clang_version=8.0.0
911
$(package)_clang_download_path=https://releases.llvm.org/$($(package)_clang_version)
@@ -78,7 +80,7 @@ endef
7880
define $(package)_preprocess_cmds
7981
CC=$($(package)_cc) CXX=$($(package)_cxx) INSTALLPREFIX=$($(package)_extract_dir) ./libtapi/build.sh && \
8082
CC=$($(package)_cc) CXX=$($(package)_cxx) INSTALLPREFIX=$($(package)_extract_dir) ./libtapi/install.sh && \
81-
sed -i.old "/define HAVE_PTHREADS/d" $($(package)_build_subdir)/ld64/src/ld/InputFiles.h
83+
patch -p1 < $($(package)_patch_dir)/ld64_disable_threading.patch
8284
endef
8385

8486
define $(package)_config_cmds

depends/packages/qt.mk

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ $(package)_dependencies=zlib
88
$(package)_linux_dependencies=freetype fontconfig libxcb
99
$(package)_build_subdir=qtbase
1010
$(package)_qt_libs=corelib network widgets gui plugins testlib
11-
$(package)_patches=fix_qt_pkgconfig.patch mac-qmake.conf fix_configure_mac.patch fix_no_printer.patch fix_rcc_determinism.patch fix_riscv64_arch.patch xkb-default.patch no-xlib.patch fix_android_qmake_conf.patch fix_android_jni_static.patch
11+
$(package)_patches=fix_qt_pkgconfig.patch mac-qmake.conf fix_configure_mac.patch fix_no_printer.patch
12+
$(package)_patches+= fix_rcc_determinism.patch fix_riscv64_arch.patch xkb-default.patch no-xlib.patch
13+
$(package)_patches+= fix_android_qmake_conf.patch fix_android_jni_static.patch dont_hardcode_pwd.patch
14+
$(package)_patches+= freetype_back_compat.patch drop_lrelease_dependency.patch
1215

1316
# Update OSX_QT_TRANSLATIONS when this is updated
1417
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
@@ -190,11 +193,10 @@ define $(package)_extract_cmds
190193
endef
191194

192195
define $(package)_preprocess_cmds
193-
sed -i.old "s|FT_Get_Font_Format|FT_Get_X11_Font_Format|" qtbase/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp && \
196+
patch -p1 -i $($(package)_patch_dir)/freetype_back_compat.patch && \
194197
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
195-
sed -i.old "/updateqm.depends =/d" qttranslations/translations/translations.pro && \
196-
sed -i.old "s/src_plugins.depends = src_sql src_network/src_plugins.depends = src_network/" qtbase/src/src.pro && \
197-
sed -i.old -e 's/if \[ "$$$$XPLATFORM_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/if \[ "$$$$BUILD_ON_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/' -e 's|/bin/pwd|pwd|' qtbase/configure && \
198+
patch -p1 -i $($(package)_patch_dir)/drop_lrelease_dependency.patch && \
199+
patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch &&\
198200
mkdir -p qtbase/mkspecs/macx-clang-linux &&\
199201
cp -f qtbase/mkspecs/macx-clang/Info.plist.lib qtbase/mkspecs/macx-clang-linux/ &&\
200202
cp -f qtbase/mkspecs/macx-clang/Info.plist.app qtbase/mkspecs/macx-clang-linux/ &&\

depends/packages/zeromq.mk

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ $(package)_version=4.3.1
33
$(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($(package)_version)/
44
$(package)_file_name=$(package)-$($(package)_version).tar.gz
55
$(package)_sha256_hash=bcbabe1e2c7d0eec4ed612e10b94b112dd5f06fcefa994a0c79a45d835cd21eb
6+
$(package)_patches=remove_libstd_link.patch
67

78
define $(package)_set_vars
89
$(package)_config_opts=--without-docs --disable-shared --disable-curve --disable-curve-keygen --disable-perf
@@ -15,7 +16,8 @@ define $(package)_set_vars
1516
endef
1617

1718
define $(package)_preprocess_cmds
18-
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub config
19+
patch -p1 < $($(package)_patch_dir)/remove_libstd_link.patch && \
20+
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub config
1921
endef
2022

2123
define $(package)_config_cmds
@@ -31,6 +33,5 @@ define $(package)_stage_cmds
3133
endef
3234

3335
define $(package)_postprocess_cmds
34-
sed -i.old "s/ -lstdc++//" lib/pkgconfig/libzmq.pc && \
3536
rm -rf bin share lib/*.la
3637
endef
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
commit 3311d68f11d1697565401eee6efc85c34f022ea7
2+
Author: fanquake <[email protected]>
3+
Date: Mon Aug 17 20:03:56 2020 +0800
4+
5+
Fix C++11 compatibility
6+
7+
diff --git a/dbinc/atomic.h b/dbinc/atomic.h
8+
index 0034dcc..7c11d4a 100644
9+
--- a/dbinc/atomic.h
10+
+++ b/dbinc/atomic.h
11+
@@ -70,7 +70,7 @@ typedef struct {
12+
* These have no memory barriers; the caller must include them when necessary.
13+
*/
14+
#define atomic_read(p) ((p)->value)
15+
-#define atomic_init(p, val) ((p)->value = (val))
16+
+#define atomic_init_db(p, val) ((p)->value = (val))
17+
18+
#ifdef HAVE_ATOMIC_SUPPORT
19+
20+
@@ -144,7 +144,7 @@ typedef LONG volatile *interlocked_val;
21+
#define atomic_inc(env, p) __atomic_inc(p)
22+
#define atomic_dec(env, p) __atomic_dec(p)
23+
#define atomic_compare_exchange(env, p, o, n) \
24+
- __atomic_compare_exchange((p), (o), (n))
25+
+ __atomic_compare_exchange_db((p), (o), (n))
26+
static inline int __atomic_inc(db_atomic_t *p)
27+
{
28+
int temp;
29+
@@ -176,7 +176,7 @@ static inline int __atomic_dec(db_atomic_t *p)
30+
* http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
31+
* which configure could be changed to use.
32+
*/
33+
-static inline int __atomic_compare_exchange(
34+
+static inline int __atomic_compare_exchange_db(
35+
db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
36+
{
37+
atomic_value_t was;
38+
@@ -206,7 +206,7 @@ static inline int __atomic_compare_exchange(
39+
#define atomic_dec(env, p) (--(p)->value)
40+
#define atomic_compare_exchange(env, p, oldval, newval) \
41+
(DB_ASSERT(env, atomic_read(p) == (oldval)), \
42+
- atomic_init(p, (newval)), 1)
43+
+ atomic_init_db(p, (newval)), 1)
44+
#else
45+
#define atomic_inc(env, p) __atomic_inc(env, p)
46+
#define atomic_dec(env, p) __atomic_dec(env, p)
47+
diff --git a/mp/mp_fget.c b/mp/mp_fget.c
48+
index 5fdee5a..0b75f57 100644
49+
--- a/mp/mp_fget.c
50+
+++ b/mp/mp_fget.c
51+
@@ -617,7 +617,7 @@ alloc: /* Allocate a new buffer header and data space. */
52+
53+
/* Initialize enough so we can call __memp_bhfree. */
54+
alloc_bhp->flags = 0;
55+
- atomic_init(&alloc_bhp->ref, 1);
56+
+ atomic_init_db(&alloc_bhp->ref, 1);
57+
#ifdef DIAGNOSTIC
58+
if ((uintptr_t)alloc_bhp->buf & (sizeof(size_t) - 1)) {
59+
__db_errx(env,
60+
@@ -911,7 +911,7 @@ alloc: /* Allocate a new buffer header and data space. */
61+
MVCC_MPROTECT(bhp->buf, mfp->stat.st_pagesize,
62+
PROT_READ);
63+
64+
- atomic_init(&alloc_bhp->ref, 1);
65+
+ atomic_init_db(&alloc_bhp->ref, 1);
66+
MUTEX_LOCK(env, alloc_bhp->mtx_buf);
67+
alloc_bhp->priority = bhp->priority;
68+
alloc_bhp->pgno = bhp->pgno;
69+
diff --git a/mp/mp_mvcc.c b/mp/mp_mvcc.c
70+
index 34467d2..f05aa0c 100644
71+
--- a/mp/mp_mvcc.c
72+
+++ b/mp/mp_mvcc.c
73+
@@ -276,7 +276,7 @@ __memp_bh_freeze(dbmp, infop, hp, bhp, need_frozenp)
74+
#else
75+
memcpy(frozen_bhp, bhp, SSZA(BH, buf));
76+
#endif
77+
- atomic_init(&frozen_bhp->ref, 0);
78+
+ atomic_init_db(&frozen_bhp->ref, 0);
79+
if (mutex != MUTEX_INVALID)
80+
frozen_bhp->mtx_buf = mutex;
81+
else if ((ret = __mutex_alloc(env, MTX_MPOOL_BH,
82+
@@ -428,7 +428,7 @@ __memp_bh_thaw(dbmp, infop, hp, frozen_bhp, alloc_bhp)
83+
#endif
84+
alloc_bhp->mtx_buf = mutex;
85+
MUTEX_LOCK(env, alloc_bhp->mtx_buf);
86+
- atomic_init(&alloc_bhp->ref, 1);
87+
+ atomic_init_db(&alloc_bhp->ref, 1);
88+
F_CLR(alloc_bhp, BH_FROZEN);
89+
}
90+
91+
diff --git a/mp/mp_region.c b/mp/mp_region.c
92+
index e6cece9..ddbe906 100644
93+
--- a/mp/mp_region.c
94+
+++ b/mp/mp_region.c
95+
@@ -224,7 +224,7 @@ __memp_init(env, dbmp, reginfo_off, htab_buckets, max_nreg)
96+
MTX_MPOOL_FILE_BUCKET, 0, &htab[i].mtx_hash)) != 0)
97+
return (ret);
98+
SH_TAILQ_INIT(&htab[i].hash_bucket);
99+
- atomic_init(&htab[i].hash_page_dirty, 0);
100+
+ atomic_init_db(&htab[i].hash_page_dirty, 0);
101+
}
102+
103+
/*
104+
@@ -269,7 +269,7 @@ __memp_init(env, dbmp, reginfo_off, htab_buckets, max_nreg)
105+
hp->mtx_hash = (mtx_base == MUTEX_INVALID) ? MUTEX_INVALID :
106+
mtx_base + i;
107+
SH_TAILQ_INIT(&hp->hash_bucket);
108+
- atomic_init(&hp->hash_page_dirty, 0);
109+
+ atomic_init_db(&hp->hash_page_dirty, 0);
110+
#ifdef HAVE_STATISTICS
111+
hp->hash_io_wait = 0;
112+
hp->hash_frozen = hp->hash_thawed = hp->hash_frozen_freed = 0;
113+
diff --git a/mutex/mut_method.c b/mutex/mut_method.c
114+
index 2588763..5c6d516 100644
115+
--- a/mutex/mut_method.c
116+
+++ b/mutex/mut_method.c
117+
@@ -426,7 +426,7 @@ atomic_compare_exchange(env, v, oldval, newval)
118+
MUTEX_LOCK(env, mtx);
119+
ret = atomic_read(v) == oldval;
120+
if (ret)
121+
- atomic_init(v, newval);
122+
+ atomic_init_db(v, newval);
123+
MUTEX_UNLOCK(env, mtx);
124+
125+
return (ret);
126+
diff --git a/mutex/mut_tas.c b/mutex/mut_tas.c
127+
index f3922e0..e40fcdf 100644
128+
--- a/mutex/mut_tas.c
129+
+++ b/mutex/mut_tas.c
130+
@@ -46,7 +46,7 @@ __db_tas_mutex_init(env, mutex, flags)
131+
132+
#ifdef HAVE_SHARED_LATCHES
133+
if (F_ISSET(mutexp, DB_MUTEX_SHARED))
134+
- atomic_init(&mutexp->sharecount, 0);
135+
+ atomic_init_db(&mutexp->sharecount, 0);
136+
else
137+
#endif
138+
if (MUTEX_INIT(&mutexp->tas)) {
139+
@@ -486,7 +486,7 @@ __db_tas_mutex_unlock(env, mutex)
140+
F_CLR(mutexp, DB_MUTEX_LOCKED);
141+
/* Flush flag update before zeroing count */
142+
MEMBAR_EXIT();
143+
- atomic_init(&mutexp->sharecount, 0);
144+
+ atomic_init_db(&mutexp->sharecount, 0);
145+
} else {
146+
DB_ASSERT(env, sharecount > 0);
147+
MEMBAR_EXIT();
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
commit dbd95cdaefdea95307d004f019a1c394cf9389f0
2+
Author: fanquake <[email protected]>
3+
Date: Mon Aug 17 20:15:17 2020 +0800
4+
5+
Remove unused variable in Boost Process
6+
7+
This causes issues with our linters / CI.
8+
9+
Can be removed once depends Boost is 1.71.0 or later.
10+
11+
diff --git a/boost/process/detail/posix/wait_group.hpp b/boost/process/detail/posix/wait_group.hpp
12+
index 9dc249803..2502d9772 100644
13+
--- a/boost/process/detail/posix/wait_group.hpp
14+
+++ b/boost/process/detail/posix/wait_group.hpp
15+
@@ -137,7 +137,6 @@ inline bool wait_until(
16+
17+
do
18+
{
19+
- int ret_sig = 0;
20+
int status;
21+
if ((::waitpid(timeout_pid, &status, WNOHANG) != 0)
22+
&& (WIFEXITED(status) || WIFSIGNALED(status)))
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
commit 7b6eb33ecd88768b28c67ce5d2d68a7eed5936b6
2+
Author: fanquake <[email protected]>
3+
Date: Tue Aug 25 14:34:53 2020 +0800
4+
5+
Remove rule that causes inadvertant header regeneration
6+
7+
Otherwise the makefile will needlessly attempt to re-generate the
8+
headers with gperf. This can be dropped once the upstream build is fixed.
9+
10+
See #10851.
11+
12+
diff --git a/src/Makefile.in b/src/Makefile.in
13+
index f4626ad..4ae1b00 100644
14+
--- a/src/Makefile.in
15+
+++ b/src/Makefile.in
16+
@@ -903,7 +903,7 @@ fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h
17+
' - > [email protected] && \
18+
mv -f [email protected] $@ || ( $(RM) [email protected] && false )
19+
20+
-fcobjshash.h: fcobjshash.gperf
21+
+fcobjshash.h:
22+
$(AM_V_GEN) $(GPERF) -m 100 $< > [email protected] && \
23+
mv -f [email protected] $@ || ( $(RM) [email protected] && false )
24+

0 commit comments

Comments
 (0)