<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/55882>55882</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [packaging] Building LLVM 15 source packages from apt.llvm.org fails in clean pbuilder environment
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          TheRealCuran
      </td>
    </tr>
</table>

<pre>
    Since recent LLVM versions [break Mesa](https://gitlab.freedesktop.org/mesa/mesa/-/issues/6615) and apt.llvm.org only offers the very latest build, I wanted to build the last known working version (`1:15~++20220601100758+8c8a2679a20f-1~exp1~20220601220850.532`) myself. Therefore I downloaded the source package as offered by https://llvm-jenkins.debian.net/job/llvm-toolchain-source/532/ with `dget` (`dget https://llvm-jenkins.debian.net/job/llvm-toolchain-source/532/artifact/llvm-toolchain-snapshot_15%7E++20220601100758+8c8a2679a20f-1%7Eexp1%7E20220601220850.532.dsc`) and used a clean `pbuilder` ([PTS](https://tracker.debian.org/pkg/pbuilder)) unstable (Sid) environment to build the package. This fails with an error, telling me the stage2 `clang++` binary was not found.

The problem seems to stem from `debian-libfuzzer-build` (`debian-libclc-build` would probably trigger this as well, but for me `debian-libfuzzer-build` is executed first) being executed in parallel to `debian-full-build`, ie. before `debian-full-build` is finished. I have no idea what you do on Jenkins to make it work there, though I guess it's probably something like `-j1`. And since make will wait for all jobs to finish, the time to fail is rather high (`debian-full-build` is run in total).

In addition there is the `CMP0114` warning raised with current CMake versions. But those can easily be suppressed for now by setting the policy to `OLD` (something like [set_cmake_stage_policy.patch](https://github.com/llvm/llvm-project/files/8840018/set_cmake_stage_policy.patch.txt)).

Please enforce a proper rule dependency chain in `debian/rules`. For me it was enough to make the following changes:
```patch
--- a/debian/rules
+++ b/debian/rules
@@ -642,7 +642,7 @@
        fi
        touch $@
 
-debian-libfuzzer-build:
+debian-libfuzzer-build: debian-full-build
 ifeq (${LIBFUZZER_ENABLE},yes)
        cd $(TARGET_BUILD); \
        CFLAGS="$(opt_flags) $(STAGE_2_CFLAGS)"; \
@@ -652,7 +652,7 @@
 endif
        touch $@
 
-debian-libclc-build:
+debian-libclc-build: debian-full-build
 ifeq ($(LLVM_SPIRV_INSTALLED),yes)
 # Builds libclc
        mkdir -p libclc/build
@@ -678,7 +678,7 @@
 endif
        touch $@
 
-override_dh_auto_build: debian-full-build debian-libfuzzer-build debian-libclc-build
+override_dh_auto_build: debian-libfuzzer-build debian-libclc-build
 
 override_dh_prep: build_doc
        dh_prep
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytV01T4zgQ_TXJRRWX4-DYOeRAAkyxFWYpYOYwl5Rst2MRRfJKMpnsr99uKR-EgdmZraWMSaxWd7_Xr9ui0NVu-ihUCcxACcqxxeLrHXsBY4VWlvXSWWGAr9kdWN5Lr3pJ3jjX2t7ospfc4LUSTvIiqg1ABXbtdBtps8KFDW04_hngr7C2A4sfxuNh2ksmjKuK8dZFUr5saBfTSu6YrmuMzlwDlMaOSe7AOlZ0Qla9ZM5u2ZYrBxVzOjz0ppKjzVrprWJbbdZCrQ4gGObcG8dDTBnDZte9ZIZXEidJjE-HcZylOT7Iy5wn42zCk7geDNEOvrf052CI9zyNo3SUoDPKfrOzIOuIPTVgoNYGMLMK40vNKwhJWd0ZZLbl5ZqvgHEbwOFqsWPnPBIHg2dQmLmNKigEV5EChyvPujisO61l2XChBsEzPqd8khu2Fa5hmFi1wj3jeI-Zvv2vcbhxouale8dQ8dY22i2ptOmvskyWnmf68CPTUWXLPduklc4ic5yVErgisK0vP5gD4HR2__T4nkidwQqAOeANAm3X_n7wkUwoTKes44UE8vcoKnoE6kUYrTbUHGeS25eVFCAsq7mQNtQBswNjtCG1OpCSxLiBoAiHOxJKvpRcrQJLlH8hFEexb1EjSjtW605VUS--6sWX4f5EEY3G3DbMAmwsJWMdfquN3vjae3QDKYq6-_tvMIPQMic1HNdLWZ4Wt7pDQOQage-YM2K1AoPZIijMZosACEjRUVaGgPw0Fu6C71B21KG1MNYRhwUQB8fnQiF5hksJklCc_NWdlEdXFFUgvUXorg-sKGAtlLANVBG2YMNfAClkogLOtg13bKc7bEwcLuyPoHuKueFrYML5YUGVMeCr1ehu1aCXFU4qi-u9JLMnbqzeAPKCUKRY-4wGz0O8R-wS5Wn9GPWOt0JKrKUIlCFQht3l44ZUQyyUhCBdaC8eAmI4pcIagUmcFe0HyKZTRKPTjmN5JmdSuVWMV5VwNPw8NNpA4XDv_O4e2_HCF54bRVgMF9RYXrplZwwJfX5HMA6vgYjNsPpIjgVWkrq5FUhHgXru2tYgVVRsRIrzl0abBefIs-8SLUW525f5z8XVXo9vqUxnuGlZEntL3yTLsDFquSubD948TVdEpd7sp9FhKGG5nsHPqFpI_8LJ84s4HuL8uflZkMh9d2EMnLF5j-MGcYNCgFhfTnJosUimwzFRQQuqAoUI_RykmhyrhvHIyHqF3ITeIclhV4HyQjsIkYiqtZR6S4ygJ7UCjzTkgb3gr8CFfzYYDBi9WN9ECvZhqiQzVnxkcRHjxQbjC5zq8wwLMjt-9EvBjO1_anH-3emuJIFenCz3WX0wF45IktmHFuxHqQfXooa_fDdgvGy2uJ3dfPn27fphef35cra47mUojfmO6jw5z7KsfIpJ_nT58On6aTn7covyQ6vRDPU2Pzee3ywuPz32RmiQhF26dcta8hU53jt6fLr8dL1Mlntj0kpy5u3Ia3riNX2HV9SMqH-f09PcfpfQ18u_xGaS02lv-Xh_-_B1efsZ4S0W156iN4z2khGOAHRiWYhznvtmXQnDBu1hMbl5FfHISZYfOTl8_M-caBxNBkf8smqWvHN6-TFu9r7i2Hu8HTj9V_e_7GyfMHvtESdmS7682bLSb9g8WJz3fr-ajqrJaML7Do_cMMWJGQ4gODFwPIby0PTwB_hh-ubwacMx4ey4HY4sOLHCiepwFHp94ul3Rk5_e-4eT_ppmudJv5lWo2E2HmVlwhM-hmyST4bjMh9leZpVOYzSPv4PAdISKGwpBVvmXVB7pVd9Md0fDdPhaJhepFFWZ5DHyaTkoyEUwwTlARsEc4TWN1OfUtFh-17EUlhnT4vcWrFS4Dkk_1jhRpspnrAegMt5Z7jq-_hTn_8__nscpg">