Hi,
We recently conducted a study to detect build dependency errors, focusing on missing dependencies and redundant dependencies. A missing dependency (MS) is a dependency that is not declared in the build script and a redundant dependency(RD) is a dependency that is declared in the build script that is not actually used. We have detected the following dependency errors in your public projects. Could you please help us to check these dependency errors? The data format is dependency --- target.
MS 0['/home/lv/WorkSpace/vmake_experiment/redis-master/deps/jemalloc/lib/libjemalloc.a---redis-benchmark'] 1['/home/lv/WorkSpace/vmake_experiment/redis-master/deps/hiredis/libhiredis.a---redis-benchmark'] 2['/home/lv/WorkSpace/vmake_experiment/redis-master/deps/hiredis/libhiredis.a---redis-server'] 3['/home/lv/WorkSpace/vmake_experiment/redis-master/deps/jemalloc/lib/libjemalloc.a---redis-server'] 4['/home/lv/WorkSpace/vmake_experiment/redis-master/deps/lua/src/liblua.a---redis-server'] 5['/home/lv/WorkSpace/vmake_experiment/redis-master/deps/jemalloc/lib/libjemalloc.a---redis-cli'] 6['/home/lv/WorkSpace/vmake_experiment/redis-master/deps/hiredis/libhiredis.a---redis-cli'] 7['/home/lv/WorkSpace/vmake_experiment/redis-master/deps/linenoise/linenoise.o---redis-cli']
RD 0['.make-prerequisites---redis-check-aof.o'] 1['.make-prerequisites---redis-check-rdb.o'] 2['.make-prerequisites---redis-benchmark.o'] 3['.make-prerequisites---geohash_helper.o'] 4['.make-prerequisites---setproctitle.o'] 5['.make-prerequisites---replication.o'] 6['.make-prerequisites---hyperloglog.o'] 7['.make-prerequisites---networking.o'] 8['.make-prerequisites---endianconv.o'] 9['.make-prerequisites---localtime.o'] 10['.make-prerequisites---childinfo.o'] 11['.make-prerequisites---quicklist.o'] 12['.make-prerequisites---redis-cli.o'] 13['.make-prerequisites---sparkline.o'] 14['.make-prerequisites---scripting.o'] 15['.make-prerequisites---tracking.o'] 16['.make-prerequisites---listpack.o'] 17['.make-prerequisites---t_string.o'] 18['.make-prerequisites---sentinel.o'] 19['.make-prerequisites---t_stream.o'] 20['.make-prerequisites---lazyfree.o'] 21['.make-prerequisites---geohash.o'] 22['.make-prerequisites---zmalloc.o'] 23['.make-prerequisites---siphash.o'] 24['.make-prerequisites---memtest.o'] 25['.make-prerequisites---cluster.o'] 26['.make-prerequisites---slowlog.o'] 27['.make-prerequisites---release.o'] 28['.make-prerequisites---lolwut5.o'] 29['.make-prerequisites---latency.o'] 30['.make-prerequisites---ziplist.o'] 31['.make-prerequisites---blocked.o'] 32['.make-prerequisites---lolwut.o'] 33['.make-prerequisites---object.o'] 34['.make-prerequisites---pqsort.o'] 35['.make-prerequisites---adlist.o'] 36['.make-prerequisites---defrag.o'] 37['.make-prerequisites---server.o'] 38['.make-prerequisites---t_zset.o'] 39['.make-prerequisites---module.o'] 40['.make-prerequisites---notify.o'] 41['.make-prerequisites---expire.o'] 42['.make-prerequisites---zipmap.o'] 43['.make-prerequisites---t_hash.o'] 44['.make-prerequisites---gopher.o'] 45['.make-prerequisites---t_list.o'] 46['.make-prerequisites---bitops.o'] 47['.make-prerequisites---pubsub.o'] 48['.make-prerequisites---intset.o'] 49['.make-prerequisites---config.o'] 50['.make-prerequisites---syncio.o'] 51['all---install'] 52['.make-prerequisites---t_set.o'] 53['.make-prerequisites---lzf_c.o'] 54['.make-prerequisites---multi.o'] 55['.make-prerequisites---lzf_d.o'] 56['.make-prerequisites---debug.o'] 57['.make-prerequisites---crc64.o'] 58['.make-prerequisites---crc16.o'] 59['.make-prerequisites---evict.o'] 60['.make-prerequisites---rand.o'] 61['.make-prerequisites---anet.o'] 62['.make-prerequisites---sha1.o'] 63['.make-prerequisites---sort.o'] 64['.make-prerequisites---dict.o'] 65['.make-prerequisites---util.o'] 66['.make-prerequisites---aof.o'] 67['.make-prerequisites---bio.o'] 68['.make-prerequisites---rio.o'] 69['.make-prerequisites---geo.o'] 70['.make-prerequisites---rdb.o'] 71['.make-prerequisites---rax.o'] 72['.make-prerequisites---sds.o'] 73['.make-prerequisites---acl.o'] 74['.make-prerequisites---ae.o'] 75['.make-prerequisites---db.o']
Comment From: madolson
I'm not entirely sure how these were generated. All of the .make-prerequisites are not real issues, for reasons described in the Makefile. The missing dependencies are all from the sub dependency folders. The last one, "all install" also seems fine. Since install is a build convenience build action.
I don't think any of these are issues.
Comment From: Meiye-lj
Hi,thanks for your feedback In MAKE dependencies, practitioners are used to declaring incomplete dependencies (e.g., missing header files). This phenomenon is very common and easy to be overlooked. However, incomplete build declarations can lead to incorrect and inefficient builds, or the builds that seem correct but contain incorrect parts and difficult to debug when errors occur (incorrect incremental builds). Our study hopes to help practitioners detect this dependency problems. We have run our methods in your project to detect these dependency problems, and hope to get your check. If there is anything unclear, I would be happy to provide more information.
----- 原始邮件 ----- 发件人:Madelyn Olson @.> 收件人:redis/redis @.> 抄送人:Meiye-lj @.>, Author @.> 主题:Re: [redis/redis] [BUG]dependency errors (Issue #11604) 日期:2022年12月10日 02点06分
I'm not entirely sure how these were generated. All of the .make-prerequisites are not real issues, for reasons described in the Makefile. The missing dependencies are all from the sub dependency folders. The last one, "all install" also seems fine. Since install is a build convenience build action. I don't think any of these are issues.
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
Comment From: madolson
Hi yes, I don't think any of these are real dependency issues. It looks like the way we structure our makefile is probably suboptimal and makes the static analysis report a false positive.