dlang / dub

Package and build management system for D
MIT License
673 stars 230 forks source link

LDC: Don't keep around temporary object files for static libs #2690

Closed kinke closed 3 months ago

kinke commented 1 year ago

This was a workaround for older LDC versions. Since LDC v1.25, -cleanup-obj implies that the temporary object files are placed into a unique temp directory (per compiler invocation), so that object file collisions across parallel dub invocations cannot happen anymore.

github-actions[bot] commented 1 year ago

✅ PR OK, no changes in deprecations or warnings

Total deprecations: 0

Total warnings: 0

Build statistics:

 statistics (-before, +after)
 executable size=5259464 bin/dub
 rough build time=62s
Full build output ``` DUB version 1.37.0, built on May 11 2024 LDC - the LLVM D compiler (1.38.0): based on DMD v2.108.1 and LLVM 18.1.5 built with LDC - the LLVM D compiler (1.38.0) Default target: x86_64-unknown-linux-gnu Host CPU: znver3 http://dlang.org - http://wiki.dlang.org/LDC Registered Targets: aarch64 - AArch64 (little endian) aarch64_32 - AArch64 (little endian ILP32) aarch64_be - AArch64 (big endian) amdgcn - AMD GCN GPUs arm - ARM arm64 - ARM64 (little endian) arm64_32 - ARM64 (little endian ILP32) armeb - ARM (big endian) avr - Atmel AVR Microcontroller bpf - BPF (host endian) bpfeb - BPF (big endian) bpfel - BPF (little endian) hexagon - Hexagon lanai - Lanai loongarch32 - 32-bit LoongArch loongarch64 - 64-bit LoongArch mips - MIPS (32-bit big endian) mips64 - MIPS (64-bit big endian) mips64el - MIPS (64-bit little endian) mipsel - MIPS (32-bit little endian) msp430 - MSP430 [experimental] nvptx - NVIDIA PTX 32-bit nvptx64 - NVIDIA PTX 64-bit ppc32 - PowerPC 32 ppc32le - PowerPC 32 LE ppc64 - PowerPC 64 ppc64le - PowerPC 64 LE r600 - AMD GPUs HD2XXX-HD6XXX riscv32 - 32-bit RISC-V riscv64 - 64-bit RISC-V sparc - Sparc sparcel - Sparc LE sparcv9 - Sparc V9 spirv - SPIR-V Logical spirv32 - SPIR-V 32-bit spirv64 - SPIR-V 64-bit systemz - SystemZ thumb - Thumb thumbeb - Thumb (big endian) ve - VE wasm32 - WebAssembly 32-bit wasm64 - WebAssembly 64-bit x86 - 32-bit X86: Pentium-Pro and above x86-64 - 64-bit X86: EM64T and AMD64 xcore - XCore Upgrading project in /home/runner/work/dub/dub/ Starting Performing "release" build using /opt/hostedtoolcache/dc/ldc2-1.38.0/x64/ldc2-1.38.0-linux-x86_64/bin/ldc2 for x86_64. Building dub 1.38.0+commit.49.g88b64c5e: building configuration [application] Linking dub STAT:statistics (-before, +after) STAT:executable size=5259464 bin/dub STAT:rough build time=62s ```
kinke commented 1 year ago

The flag was introduced in LDC v1.1 in 2016: https://github.com/ldc-developers/ldc/commit/141310c77cb433ca358bcc65e7117166b975061f

It's just that since v1.25 it additionally implies a concurrent-safe unique temp dir instead of the cwd (if you don't specify a -od objects dir explicitly).

kinke commented 3 months ago

@WebFreak001: Okay, I've re-added support for all LDC versions.