From: Oleg Ogurtsov Date: Mon, 5 Feb 2018 15:28:35 +0000 (+0300) Subject: Add gcc-warning-build-env - GCC build environment for warning logs X-Git-Tag: accepted/tizen/base/20190111.055038^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F96%2F169296%2F10;p=platform%2Fupstream%2Fgcc-contrib.git Add gcc-warning-build-env - GCC build environment for warning logs Change-Id: Id18859d1a3f5ff8370a59dba2f8812bc7f73d717 --- diff --git a/packaging/extract-gcc-warning-logs b/packaging/extract-gcc-warning-logs new file mode 100644 index 0000000..95e870a --- /dev/null +++ b/packaging/extract-gcc-warning-logs @@ -0,0 +1,20 @@ +#!/bin/sh + +# /usr/lib/rpm/tizen/extract-gcc-warning-logs + +# If using normal root, avoid changing anything. +if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then + exit 0 +fi + +GCC_WARNING_LOG_DIR="/usr/share/gcc-warnings" + +mkdir -p "$RPM_BUILD_ROOT$GCC_WARNING_LOG_DIR" +find "/tmp/" -name 'cc1*.log' -size 0 -exec rm {} + +find "/tmp/" -name 'cc1*.log' | xargs -I {} mv {} "$RPM_BUILD_ROOT$GCC_WARNING_LOG_DIR/" +find "$RPM_BUILD_ROOT$GCC_WARNING_LOG_DIR/" -name 'cc1*.log' | xargs -I {} sed -e "s#/.*rpmbuild/##" -i {} +find "$RPM_BUILD_ROOT$GCC_WARNING_LOG_DIR/" -name 'cc1*.log' -exec rename cc1 ${RPM_PACKAGE_NAME}-cc1 {} \; + +# Avoid empty resulting RPMs: create a placeholder if there's no logs in directory. +(find "$RPM_BUILD_ROOT$GCC_WARNING_LOG_DIR/" -mindepth 1 -print -quit | grep -q .) || \ + touch "$RPM_BUILD_ROOT$GCC_WARNING_LOG_DIR/${RPM_PACKAGE_NAME}-cc1.empty.log" diff --git a/packaging/gcc-contrib.spec b/packaging/gcc-contrib.spec index 1be2f2d..2a58a32 100644 --- a/packaging/gcc-contrib.spec +++ b/packaging/gcc-contrib.spec @@ -78,6 +78,8 @@ Source25: TSAN_OPTIONS Source26: macros.asan Source27: ESAN_OPTIONS Source28: cc1 +Source29: macros.gcc_warning +Source30: extract-gcc-warning-logs Group: Development/Building Summary: GCC related scripts License: MIT @@ -494,6 +496,18 @@ BuildArch: noarch %description -n sanitizer-sources Sanitizer family tools sources for external tools. +%package -n gcc-warning-build-env +Summary: GCC warning build environment +Group: System Environment +BuildArch: noarch +Requires: gcc rpm + +%description -n gcc-warning-build-env +GCC warning build environment support files and scripts + +%post -n gcc-warning-build-env +cat %{_rpmconfigdir}/macros.gcc_warning >> %{_rpmconfigdir}/tizen_macros + %package -n gcc-log-wrapper Summary: GCC wrapper for logs saving Group: Development/Tools @@ -574,6 +588,8 @@ install -m 0755 %{SOURCE23} %{buildroot}/%{_rpmconfigdir}/tizen/ mkdir -p %{buildroot}/usr/lib/gcc-log-wrapper install -m 0755 %{SOURCE28} %{buildroot}/usr/lib/gcc-log-wrapper/ +install -m 0644 %{SOURCE29} %{buildroot}/%{_rpmconfigdir}/ +install -m 0755 %{SOURCE30} %{buildroot}/%{_rpmconfigdir}/tizen/ %files #%manifest gcc-contrib.manifest @@ -672,6 +688,11 @@ install -m 0755 %{SOURCE28} %{buildroot}/usr/lib/gcc-log-wrapper/ %defattr(-,root,root,-) %{_prefix}/bin/asan_symbolize.py +%files -n gcc-warning-build-env +%defattr(-,root,root,-) +%{_rpmconfigdir}/macros.gcc_warning +%{_rpmconfigdir}/tizen/extract-gcc-warning-logs + %files -n gcc-log-wrapper %defattr(-,root,root,-) /usr/lib/gcc-log-wrapper/cc1 diff --git a/packaging/macros.gcc_warning b/packaging/macros.gcc_warning new file mode 100644 index 0000000..53adc04 --- /dev/null +++ b/packaging/macros.gcc_warning @@ -0,0 +1,39 @@ +# /etc/rpm/macros.gcc_warning + +%_enable_gcc_warning_packages 1 + +%__gcc_warning_install_post %{_rpmconfigdir}/tizen/extract-gcc-warning-logs + +# See original macro (before expansion) and correct lines after the first one. +# Mine is from Fedora RPM macros, YMMV. +%__spec_install_post\ + %{?__gcc_warning_package:%{__gcc_warning_install_post}}\ + %{?__debug_package:%{__debug_install_post}}\ + %{__arch_install_post}\ + %{__os_install_post}\ +%{nil} + +# Same goes here, see your original macro. +%install %{?_enable_gcc_warning_packages:%{gcc_warning_package}}\ +%{?_enable_debug_packages:%{debug_package}}\ +%%install\ +LANG=C\ +export LANG\ +unset DISPLAY\ +rm -rf %{?buildroot:%{buildroot}} \ +mkdir -p %{?buildroot:%{buildroot}} \ +%{nil} + +# Template for GCC warning logs sub-package. +%gcc_warning_package \ +%global __gcc_warning_package 1\ +%package gcc-warning-logs\ +Summary: GCC warning logs for package %{name}\ +Group: Development/GCC\ +AutoReqProv: 0\ +%description gcc-warning-logs\ +This package provides GCC warning log files for package %{name}.\ +%files gcc-warning-logs\ +%defattr(-,root,root)\ +/usr/share/gcc-warnings/%{name}-cc1*.log\ +%{nil}