Accepting request 1098665 from devel:tools:building

OBS-URL: https://build.opensuse.org/request/show/1098665
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/meson?expand=0&rev=96
This commit is contained in:
Dominique Leuenberger 2023-07-16 15:28:33 +00:00 committed by Git OBS Bridge
commit 1b19186e4c
2 changed files with 84 additions and 29 deletions

View File

@ -1,3 +1,17 @@
-------------------------------------------------------------------
Fri Jul 14 10:01:09 UTC 2023 - Dominique Leuenberger <dimstar@opensuse.org>
- Be leaner with the build deps:
+ Do not buildrequire python-pip and -wheel: being part of ring0
we have to be extra careful.
+ Use python_build/python_install instead of
pyproject_wheel/pyproject_install.
-------------------------------------------------------------------
Thu Jun 29 07:26:32 UTC 2023 - Andreas Schneider <asn@cryptomilk.org>
- Set pythons for Leap and Tumbleweed
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Jun 6 18:22:01 UTC 2023 - Dominique Leuenberger <dimstar@opensuse.org> Tue Jun 6 18:22:01 UTC 2023 - Dominique Leuenberger <dimstar@opensuse.org>

View File

@ -16,6 +16,12 @@
# #
%if 0%{?sle_version} >= 150400 && 0%{?sle_version} < 160000
%global pythons python311
%else
%global pythons python3
%endif
%global flavor @BUILD_FLAVOR@%{nil} %global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test" %if "%{flavor}" == "test"
%define name_ext -test %define name_ext -test
@ -44,31 +50,38 @@ Patch0: meson-test-installed-bin.patch
Patch1: extend-test-timeout-on-qemu-builds.patch Patch1: extend-test-timeout-on-qemu-builds.patch
# PATCH-FIX-OPENSUSE meson-distutils.patch -- meson is ring0 and therefor setuptools is not available # PATCH-FIX-OPENSUSE meson-distutils.patch -- meson is ring0 and therefor setuptools is not available
Patch2: meson-distutils.patch Patch2: meson-distutils.patch
BuildRequires: %{python_module base >= 3.7}
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: python-rpm-macros BuildRequires: python-rpm-macros
BuildRequires: python3-base >= 3.7
%if %{with setuptools} %if %{with setuptools}
BuildRequires: python3-setuptools BuildRequires: %{python_module setuptools}
Requires: python3-setuptools Requires: python3-setuptools
%endif %endif
%if "%{flavor}" != "test" %if "%{flavor}" != "test"
Requires: ninja >= 1.8.2 Requires: ninja >= 1.8.2
Requires: python3-base >= 3.7
# meson-gui was last used in openSUSE Leap 42.1. # meson-gui was last used in openSUSE Leap 42.1.
Provides: meson-gui = %{version} Provides: meson-gui = %{version}
Obsoletes: meson-gui < %{version} Obsoletes: meson-gui < %{version}
BuildArch: noarch BuildArch: noarch
%else %else
ExclusiveArch: %{ix86} x86_64 ExclusiveArch: %{ix86} x86_64
BuildRequires: %{python_module devel}
BuildRequires: bison BuildRequires: bison
BuildRequires: clang BuildRequires: clang >= 15
BuildRequires: cups-devel BuildRequires: cups-devel
BuildRequires: distribution-release BuildRequires: distribution-release
BuildRequires: flex BuildRequires: flex
BuildRequires: gcc-c++ %if 0%{?sle_version} >= 150400 && 0%{?sle_version} < 160000
BuildRequires: gcc-fortran BuildRequires: gcc12-c++
BuildRequires: gcc-obj-c++ BuildRequires: gcc12-fortran
BuildRequires: gcc-objc BuildRequires: gcc12-obj-c++
BuildRequires: gcc12-objc
%else
BuildRequires: gcc-c++ >= 12
BuildRequires: gcc-fortran >= 12
BuildRequires: gcc-obj-c++ >= 12
BuildRequires: gcc-objc >= 12
%endif
BuildRequires: gettext BuildRequires: gettext
BuildRequires: git BuildRequires: git
BuildRequires: gmock BuildRequires: gmock
@ -77,7 +90,11 @@ BuildRequires: googletest-devel
BuildRequires: itstool BuildRequires: itstool
BuildRequires: java-headless BuildRequires: java-headless
BuildRequires: libboost_log-devel BuildRequires: libboost_log-devel
# This will be required to build to python311
BuildRequires: libboost_python3-devel BuildRequires: libboost_python3-devel
BuildRequires: %{python_module devel}
BuildRequires: %{python_module gobject}
BuildRequires: %{python_module pytest-xdist}
BuildRequires: libboost_system-devel BuildRequires: libboost_system-devel
BuildRequires: libboost_test-devel BuildRequires: libboost_test-devel
BuildRequires: libboost_thread-devel BuildRequires: libboost_thread-devel
@ -90,9 +107,6 @@ BuildRequires: llvm-devel
BuildRequires: meson = %{version} BuildRequires: meson = %{version}
BuildRequires: ninja BuildRequires: ninja
BuildRequires: pkgconfig BuildRequires: pkgconfig
BuildRequires: python3-devel
BuildRequires: python3-gobject
BuildRequires: python3-pytest-xdist
BuildRequires: rust BuildRequires: rust
BuildRequires: wxWidgets-any-devel BuildRequires: wxWidgets-any-devel
BuildRequires: zlib-devel-static BuildRequires: zlib-devel-static
@ -114,6 +128,7 @@ BuildRequires: libboost_python-devel
# Leap / SLE 15.x # Leap / SLE 15.x
BuildRequires: python2-PyYAML BuildRequires: python2-PyYAML
BuildRequires: python2-devel BuildRequires: python2-devel
BuildRequires: python3-devel
%endif %endif
%if %{with mono} %if %{with mono}
BuildRequires: mono(csharp) BuildRequires: mono(csharp)
@ -158,27 +173,31 @@ Vim/NeoVim.
%patch2 -p1 %patch2 -p1
%endif %endif
# We do not have appleframeworks available at this moment - can't run the test suite for it %if 0%{?sle_version} >= 150400 && 0%{?sle_version} < 160000
# boost is currently borked too
rm -r "test cases/frameworks/1 boost" \
"test cases/objc/2 nsstring"
# AddressSanitizer fails here because of ulimit. # AddressSanitizer fails here because of ulimit.
sed -i "/def test_generate_gir_with_address_sanitizer/{ sed -i "/def test_generate_gir_with_address_sanitizer/{
s/$/\n raise unittest.SkipTest('ulimit')/; s/$/\n raise unittest.SkipTest('ulimit')/;
}" run_unittests.py }" unittests/linuxliketests.py
# Expects modern glibc with pthread symbols in libc.so
rm -rf test\ cases/rust/17\ staticlib\ link\ staticlib
%endif
# Remove hashbang from non-exec script # Remove hashbang from non-exec script
sed -i '1{/\/usr\/bin\/env/d;}' \ sed -i '1{/\/usr\/bin\/env/d;}' \
./mesonbuild/rewriter.py \ ./mesonbuild/rewriter.py \
./mesonbuild/scripts/cmake_run_ctgt.py ./mesonbuild/scripts/cmake_run_ctgt.py
# We do not have appleframeworks available at this moment - can't run the test suite for it
# boost is currently borked too
rm -r "test cases/frameworks/1 boost" \
"test cases/objc/2 nsstring"
# remove gtest check that actually works because our gtest has .pc files # remove gtest check that actually works because our gtest has .pc files
rm -rf test\ cases/failing/85\ gtest\ dependency\ with\ version rm -rf test\ cases/failing/85\ gtest\ dependency\ with\ version
%build %build
%if !%{with test} %if %{without test}
%python3_build %python_build
%else %else
# Ensure we have no mesonbuild / meson in CWD, thus guaranteeing we use meson in $PATH # Ensure we have no mesonbuild / meson in CWD, thus guaranteeing we use meson in $PATH
rm -r meson.py mesonbuild rm -r meson.py mesonbuild
@ -186,9 +205,8 @@ rm -r meson.py mesonbuild
%install %install
# If this is the test suite, we don't need anything else but the meson package # If this is the test suite, we don't need anything else but the meson package
%if !%{with test} %if %{without test}
%python3_install %python_install
%fdupes %{buildroot}%{python3_sitelib}
install -Dpm 0644 data/macros.meson \ install -Dpm 0644 data/macros.meson \
%{buildroot}%{_rpmconfigdir}/macros.d/macros.meson %{buildroot}%{_rpmconfigdir}/macros.d/macros.meson
@ -204,21 +222,24 @@ install -Dpm 0644 data/syntax-highlighting/vim/syntax/meson.vim \
%if !%{with setuptools} %if !%{with setuptools}
mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_bindir}
echo """#!%{_bindir}/python3 echo """#!%{_bindir}/python3
import sys
from mesonbuild.mesonmain import main from mesonbuild.mesonmain import main
import sys
sys.exit(main()) sys.exit(main())
""" > %{buildroot}%{_bindir}/%{name} """ > %{buildroot}%{_bindir}/%{name}
chmod +x %{buildroot}%{_bindir}/%{name} chmod +x %{buildroot}%{_bindir}/%{name}
%{python_expand %{$python_fix_shebang}
# ensure egg-info is a directory # ensure egg-info is a directory
rm %{buildroot}%{python3_sitelib}/*.egg-info rm %{buildroot}%{$python_sitelib}/*.egg-info
cp -r meson.egg-info %{buildroot}%{python3_sitelib}/meson-%{version}-py%{python3_version}.egg-info cp -r meson.egg-info %{buildroot}%{$python_sitelib}/meson-%{version}-py%{$python_version}.egg-info
}
# Fix missing data files with distutils # Fix missing data files with distutils
while read line; do while read line; do
if [[ "$line" = %{_name}/* ]]; then if [[ "$line" = %{_name}/* ]]; then
[[ "$line" = *.py ]] && continue [[ "$line" = *.py ]] && continue
cp "$line" "%{buildroot}%{python3_sitelib}/$line" cp "$line" "%{buildroot}%{python_sitelib}/$line"
fi fi
done < meson.egg-info/SOURCES.txt done < meson.egg-info/SOURCES.txt
%endif %endif
@ -226,17 +247,37 @@ done < meson.egg-info/SOURCES.txt
%if %{with test} %if %{with test}
%check %check
%if 0%{?sle_version} >= 150400 && 0%{?sle_version} < 160000
# Use gcc-12 for clang-tidy
install -d -m 0755 bin
ln -s /usr/bin/cpp-12 bin/cpp
ln -s /usr/bin/g++-12 bin/c++
ln -s /usr/bin/g++-12 bin/g++
ln -s /usr/bin/gcc-12 bin/cc
ln -s /usr/bin/gcc-12 bin/gcc
export PATH="$(pwd)/bin:${PATH}"
c++ --version
# Fix shebang in test cases getting executed by ninja
%python_expand find test\ cases -type f -name "*.py" -exec sed -i "1s@#!.*python.*@#!$(realpath %{_bindir}/$python)@" {} +
%endif
export LANG=C.UTF-8 export LANG=C.UTF-8
export MESON_EXE=%{_bindir}/meson export MESON_EXE=%{_bindir}/meson
python3 run_tests.py --failfast export PYTHONDONTWRITEBYTECODE=1
# See prep section for removed tests
%python_flavored_alternatives \
%python_expand $python run_tests.py --failfast
%endif %endif
%files %files
%license COPYING %license COPYING
%if !%{with test} %if !%{with test}
%{_bindir}/meson %{_bindir}/meson
%{python3_sitelib}/%{_name}/ %{python_sitelib}/%{_name}/
%{python3_sitelib}/meson-* %{python_sitelib}/meson-*
%dir %{_datadir}/polkit-1/ %dir %{_datadir}/polkit-1/
%dir %{_datadir}/polkit-1/actions/ %dir %{_datadir}/polkit-1/actions/
%{_datadir}/polkit-1/actions/com.mesonbuild.install.policy %{_datadir}/polkit-1/actions/com.mesonbuild.install.policy