From a1ad2ecb29476840762053185ba417d8db802b5e Mon Sep 17 00:00:00 2001 From: yaqiangchen Date: Mon, 23 Oct 2023 15:44:25 +0800 Subject: [PATCH] fix dpdk-21.11 build failure --- ...directory-name-from-output-file-name.patch | 142 ++++++++++++++++++ meson.spec | 6 +- 2 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 Build-private-directory-name-from-output-file-name.patch diff --git a/Build-private-directory-name-from-output-file-name.patch b/Build-private-directory-name-from-output-file-name.patch new file mode 100644 index 0000000..9157e03 --- /dev/null +++ b/Build-private-directory-name-from-output-file-name.patch @@ -0,0 +1,142 @@ +From b4b1a2c5a145c1459fc4563a289e164e23bd6a02 Mon Sep 17 00:00:00 2001 +From: Jussi Pakkanen +Date: Sat, 11 Apr 2020 00:08:51 +0300 +Subject: [PATCH] Build private directory name from output file name. + +Prefer:https://github.com/mesonbuild/meson/commit/b4bla2c5a145c1459fc4563a289e164e23bd6a02 + +--- + mesonbuild/backend/backends.py | 2 +- + mesonbuild/backend/vs2010backend.py | 3 +++ + run_unittests.py | 38 +++++++++++++++++++---------- + 3 files changed, 29 insertions(+), 14 deletions(-) + +diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py +index 9d527cbc9a67..3d12651c261b 100644 +--- a/mesonbuild/backend/backends.py ++++ b/mesonbuild/backend/backends.py +@@ -259,7 +259,7 @@ def get_target_source_dir(self, target): + return self.build_to_src + + def get_target_private_dir(self, target): +- return os.path.join(self.get_target_dir(target), target.get_id()) ++ return os.path.join(self.get_target_filename(target) + '.p') + + def get_target_private_dir_abs(self, target): + return os.path.join(self.environment.get_build_dir(), self.get_target_private_dir(target)) +diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py +index 614d35700215..6965c423614d 100644 +--- a/mesonbuild/backend/vs2010backend.py ++++ b/mesonbuild/backend/vs2010backend.py +@@ -98,6 +98,9 @@ def __init__(self, build: T.Optional[build.Build], interpreter: T.Optional[Inter + self.subdirs = {} + self.handled_target_deps = {} + ++ def get_target_private_dir(self, target): ++ return os.path.join(self.get_target_dir(target), target.get_id()) ++ + def generate_custom_generator_commands(self, target, parent_node): + generator_output_files = [] + custom_target_include_dirs = [] +diff --git a/run_unittests.py b/run_unittests.py +index b21f785ea428..c04b82523a2d 100755 +--- a/run_unittests.py ++++ b/run_unittests.py +@@ -2449,9 +2449,12 @@ def test_internal_include_order(self): + # Check include order for 'someexe' + incs = [a for a in split_args(execmd) if a.startswith("-I")] + self.assertEqual(len(incs), 9) +- # target private dir +- someexe_id = Target.construct_id_from_path("sub4", "someexe", "@exe") +- self.assertPathEqual(incs[0], "-I" + os.path.join("sub4", someexe_id)) ++ # Need to run the build so the private dir is created. ++ self.build() ++ pdirs = glob(os.path.join(self.builddir, 'sub4/someexe*.p')) ++ self.assertEqual(len(pdirs), 1) ++ privdir = pdirs[0][len(self.builddir)+1:] ++ self.assertPathEqual(incs[0], "-I" + privdir) + # target build subdir + self.assertPathEqual(incs[1], "-Isub4") + # target source subdir +@@ -2472,7 +2475,10 @@ def test_internal_include_order(self): + incs = [a for a in split_args(fxecmd) if a.startswith('-I')] + self.assertEqual(len(incs), 9) + # target private dir +- self.assertPathEqual(incs[0], '-Isomefxe@exe') ++ pdirs = glob(os.path.join(self.builddir, 'somefxe*.p')) ++ self.assertEqual(len(pdirs), 1) ++ privdir = pdirs[0][len(self.builddir)+1:] ++ self.assertPathEqual(incs[0], '-I' + privdir) + # target build dir + self.assertPathEqual(incs[1], '-I.') + # target source dir +@@ -5577,6 +5583,10 @@ def test_qt5dependency_qmake_detection(self): + self.assertRegex('\n'.join(mesonlog), + r'Run-time dependency qt5 \(modules: Core\) found: YES .* \((qmake|qmake-qt5)\)\n') + ++ def glob_sofiles_without_privdir(self, g): ++ files = glob(g) ++ return [f for f in files if not f.endswith('.p')] ++ + def _test_soname_impl(self, libpath, install): + if is_cygwin() or is_osx(): + raise unittest.SkipTest('Test only applicable to ELF and linuxlike sonames') +@@ -5592,28 +5602,28 @@ def _test_soname_impl(self, libpath, install): + self.assertPathExists(nover) + self.assertFalse(os.path.islink(nover)) + self.assertEqual(get_soname(nover), 'libnover.so') +- self.assertEqual(len(glob(nover[:-3] + '*')), 1) ++ self.assertEqual(len(self.glob_sofiles_without_privdir(nover[:-3] + '*')), 1) + + # File with version set + verset = os.path.join(libpath, 'libverset.so') + self.assertPathExists(verset + '.4.5.6') + self.assertEqual(os.readlink(verset), 'libverset.so.4') + self.assertEqual(get_soname(verset), 'libverset.so.4') +- self.assertEqual(len(glob(verset[:-3] + '*')), 3) ++ self.assertEqual(len(self.glob_sofiles_without_privdir(verset[:-3] + '*')), 3) + + # File with soversion set + soverset = os.path.join(libpath, 'libsoverset.so') + self.assertPathExists(soverset + '.1.2.3') + self.assertEqual(os.readlink(soverset), 'libsoverset.so.1.2.3') + self.assertEqual(get_soname(soverset), 'libsoverset.so.1.2.3') +- self.assertEqual(len(glob(soverset[:-3] + '*')), 2) ++ self.assertEqual(len(self.glob_sofiles_without_privdir(soverset[:-3] + '*')), 2) + + # File with version and soversion set to same values + settosame = os.path.join(libpath, 'libsettosame.so') + self.assertPathExists(settosame + '.7.8.9') + self.assertEqual(os.readlink(settosame), 'libsettosame.so.7.8.9') + self.assertEqual(get_soname(settosame), 'libsettosame.so.7.8.9') +- self.assertEqual(len(glob(settosame[:-3] + '*')), 2) ++ self.assertEqual(len(self.glob_sofiles_without_privdir(settosame[:-3] + '*')), 2) + + # File with version and soversion set to different values + bothset = os.path.join(libpath, 'libbothset.so') +@@ -5621,7 +5631,7 @@ def _test_soname_impl(self, libpath, install): + self.assertEqual(os.readlink(bothset), 'libbothset.so.1.2.3') + self.assertEqual(os.readlink(bothset + '.1.2.3'), 'libbothset.so.4.5.6') + self.assertEqual(get_soname(bothset), 'libbothset.so.1.2.3') +- self.assertEqual(len(glob(bothset[:-3] + '*')), 3) ++ self.assertEqual(len(self.glob_sofiles_without_privdir(bothset[:-3] + '*')), 3) + + def test_soname(self): + self._test_soname_impl(self.builddir, False) +@@ -5741,10 +5751,12 @@ def test_compiler_cpp_stds(self): + def test_unity_subproj(self): + testdir = os.path.join(self.common_test_dir, '45 subproject') + self.init(testdir, extra_args='--unity=subprojects') +- simpletest_id = Target.construct_id_from_path('subprojects/sublib', 'simpletest', '@exe') +- self.assertPathExists(os.path.join(self.builddir, 'subprojects/sublib', simpletest_id, 'simpletest-unity0.c')) +- sublib_id = Target.construct_id_from_path('subprojects/sublib', 'sublib', '@sha') +- self.assertPathExists(os.path.join(self.builddir, 'subprojects/sublib', sublib_id, 'sublib-unity0.c')) ++ pdirs = glob(os.path.join(self.builddir, 'subprojects/sublib/simpletest*.p')) ++ self.assertEqual(len(pdirs), 1) ++ self.assertPathExists(os.path.join(pdirs[0], 'simpletest-unity0.c')) ++ sdirs = glob(os.path.join(self.builddir, 'subprojects/sublib/*sublib*.p')) ++ self.assertEqual(len(sdirs), 1) ++ self.assertPathExists(os.path.join(sdirs[0], 'sublib-unity0.c')) + self.assertPathDoesNotExist(os.path.join(self.builddir, 'user@exe/user-unity.c')) + self.build() + diff --git a/meson.spec b/meson.spec index 60ea8a5..33a5f83 100644 --- a/meson.spec +++ b/meson.spec @@ -1,10 +1,11 @@ Name: meson Version: 0.54.3 -Release: 1 +Release: 2 Summary: An open source high quality build system License: ASL 2.0 URL: https://mesonbuild.com/ Source0: https://github.com/mesonbuild/meson/archive/%{version}/%{name}-%{version}.tar.gz +Patch0: Build-private-directory-name-from-output-file-name.patch BuildArch: noarch Obsoletes: %{name}-gui < 0.31.0-3 @@ -48,6 +49,9 @@ install -Dpm0644 data/macros.%{name} %{buildroot}%{_rpmmacrodir}/macros.%{name} %{_mandir}/man1/%{name}.1* %changelog +* Mon Oct 16 2023 chenyaqiang - 0.54.3-2 +- fix dpdk-21.11 build failure + * Sun Jun 28 2020 huanghaitao - 0.54.3-1 - Upgrade to meet compilation needs