Linking recompilation checking only checks modifiation time of direct package dependencies
See: https://discourse.haskell.org/t/problem-with-ghcs-recompilation-checker/7079/
The issue is that we only check the direct package dependencies in linkingNeeded
, but ultimately the transitive closure of needed packages is passed to the C compiler when asked to perform the linking.
lib_times
(2023-07-25T09:49:41.400941163Z,
[2023-07-25T09:24:36.646963579Z, 2023-07-25T09:33:13.17672616Z],
[True, True],
[Just /home/matt/ghc-clean/_build/stage1/lib/../lib/x86_64-linux-ghc-9.9.20230725/base-4.18.0.0-inplace/libHSbase-4.18.0.0-inplace.a,
Just /home/matt/ghc-recomp-test/dist-newstyle/build/x86_64-linux/ghc-9.9.20230725/packageB-0.1.0.0/noopt/build/libHSpackageB-0.1.0.0-inplace.a])
/nix/store/823ccn93siyv5n61nkpf3syr2zi93i9d-gcc-wrapper-12.2.0/bin/cc '-fuse-ld=gold' -o /home/matt/ghc-recomp-test/dist-newstyle/build/x86_64-linux/ghc-9.9.20230725/packageB-0.1.0.0/x/progB/noopt/build/progB/progB -lm -no-pie -Wl,--gc-sections /home/matt/ghc-recomp-test/dist-newstyle/build/x86_64-linux/ghc-9.9.20230725/packageB-0.1.0.0/x/progB/noopt/build/progB/progB-tmp/Main.o -L/home/matt/ghc-recomp-test/dist-newstyle/build/x86_64-linux/ghc-9.9.20230725/packageB-0.1.0.0/noopt/build -L/home/matt/ghc-recomp-test/dist-newstyle/build/x86_64-linux/ghc-9.9.20230725/packageA-0.1.0.0/noopt/build -L/home/matt/ghc-clean/_build/stage1/lib/../lib/x86_64-linux-ghc-9.9.20230725/base-4.18.0.0-inplace -L/home/matt/ghc-clean/_build/stage1/lib/../lib/x86_64-linux-ghc-9.9.20230725/ghc-bignum-1.3-inplace -L/home/matt/ghc-clean/_build/stage1/lib/../lib/x86_64-linux-ghc-9.9.20230725/ghc-prim-0.10.0-inplace -L/home/matt/ghc-clean/_build/stage1/lib/../lib/x86_64-linux-ghc-9.9.20230725/rts-1.0.2 /run/user/1000/ghc3659324_0/ghc_4.o /run/user/1000/ghc3659324_0/ghc_7.o -Wl,-u,base_GHCziTopHandler_runIO_closure -Wl,-u,base_GHCziTopHandler_runNonIO_closure -Wl,-u,ghczmprim_GHCziTupleziPrim_Z0T_closure -Wl,-u,ghczmprim_GHCziTypes_True_closure -Wl,-u,ghczmprim_GHCziTypes_False_closure -Wl,-u,base_GHCziPack_unpackCString_closure -Wl,-u,base_GHCziWeakziFinalizze_runFinalizzerBatch_closure -Wl,-u,base_GHCziIOziException_stackOverflow_closure -Wl,-u,base_GHCziIOziException_heapOverflow_closure -Wl,-u,base_GHCziIOziException_allocationLimitExceeded_closure -Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnMVar_closure -Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnSTM_closure -Wl,-u,base_GHCziIOziException_cannotCompactFunction_closure -Wl,-u,base_GHCziIOziException_cannotCompactPinned_closure -Wl,-u,base_GHCziIOziException_cannotCompactMutable_closure -Wl,-u,base_GHCziIOPort_doubleReadException_closure -Wl,-u,base_ControlziExceptionziBase_nonTermination_closure -Wl,-u,base_ControlziExceptionziBase_nestedAtomically_closure -Wl,-u,base_GHCziEventziThread_blockedOnBadFD_closure -Wl,-u,base_GHCziConcziSync_runSparks_closure -Wl,-u,base_GHCziConcziIO_ensureIOManagerIsRunning_closure -Wl,-u,base_GHCziConcziIO_interruptIOManager_closure -Wl,-u,base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure -Wl,-u,base_GHCziConcziSignal_runHandlersPtr_closure -Wl,-u,base_GHCziTopHandler_flushStdHandles_closure -Wl,-u,base_GHCziTopHandler_runMainIO_closure -Wl,-u,ghczmprim_GHCziTypes_Czh_con_info -Wl,-u,ghczmprim_GHCziTypes_Izh_con_info -Wl,-u,ghczmprim_GHCziTypes_Fzh_con_info -Wl,-u,ghczmprim_GHCziTypes_Dzh_con_info -Wl,-u,ghczmprim_GHCziTypes_Wzh_con_info -Wl,-u,base_GHCziPtr_Ptr_con_info -Wl,-u,base_GHCziPtr_FunPtr_con_info -Wl,-u,base_GHCziInt_I8zh_con_info -Wl,-u,base_GHCziInt_I16zh_con_info -Wl,-u,base_GHCziInt_I32zh_con_info -Wl,-u,base_GHCziInt_I64zh_con_info -Wl,-u,base_GHCziWord_W8zh_con_info -Wl,-u,base_GHCziWord_W16zh_con_info -Wl,-u,base_GHCziWord_W32zh_con_info -Wl,-u,base_GHCziWord_W64zh_con_info -Wl,-u,base_GHCziStable_StablePtr_con_info -Wl,-u,hs_atomic_add8 -Wl,-u,hs_atomic_add16 -Wl,-u,hs_atomic_add32 -Wl,-u,hs_atomic_add64 -Wl,-u,hs_atomic_sub8 -Wl,-u,hs_atomic_sub16 -Wl,-u,hs_atomic_sub32 -Wl,-u,hs_atomic_sub64 -Wl,-u,hs_atomic_and8 -Wl,-u,hs_atomic_and16 -Wl,-u,hs_atomic_and32 -Wl,-u,hs_atomic_and64 -Wl,-u,hs_atomic_nand8 -Wl,-u,hs_atomic_nand16 -Wl,-u,hs_atomic_nand32 -Wl,-u,hs_atomic_nand64 -Wl,-u,hs_atomic_or8 -Wl,-u,hs_atomic_or16 -Wl,-u,hs_atomic_or32 -Wl,-u,hs_atomic_or64 -Wl,-u,hs_atomic_xor8 -Wl,-u,hs_atomic_xor16 -Wl,-u,hs_atomic_xor32 -Wl,-u,hs_atomic_xor64 -Wl,-u,hs_cmpxchg8 -Wl,-u,hs_cmpxchg16 -Wl,-u,hs_cmpxchg32 -Wl,-u,hs_cmpxchg64 -Wl,-u,hs_xchg8 -Wl,-u,hs_xchg16 -Wl,-u,hs_xchg32 -Wl,-u,hs_xchg64 -Wl,-u,hs_atomicread8 -Wl,-u,hs_atomicread16 -Wl,-u,hs_atomicread32 -Wl,-u,hs_atomicread64 -Wl,-u,hs_atomicwrite8 -Wl,-u,hs_atomicwrite16 -Wl,-u,hs_atomicwrite32 -Wl,-u,hs_atomicwrite64 -Wl,-u,base_GHCziStackziCloneStack_StackSnapshot_closure -lHSpackageB-0.1.0.0-inplace -lHSpackageA-0.1.0.0-inplace -lHSbase-4.18.0.0-inplace -lHSghc-bignum-1.3-inplace -lHSghc-prim-0.10.0-inplace -lHSrts-1.0.2 -lCffi -lgmp -lc -lm -lc -lm -lrt -ldl