Add gcc-warning-build-env - GCC build environment for warning logs 96/169296/10 accepted/tizen/base/20190111.055038 submit/tizen_base/20181228.105429 submit/tizen_base/20190108.221718
authorOleg Ogurtsov <o.ogurtsov@samsung.com>
Mon, 5 Feb 2018 15:28:35 +0000 (18:28 +0300)
committerDongkyun Son <dongkyun.s@samsung.com>
Fri, 28 Dec 2018 10:44:58 +0000 (10:44 +0000)
Change-Id: Id18859d1a3f5ff8370a59dba2f8812bc7f73d717

packaging/extract-gcc-warning-logs [new file with mode: 0644]
packaging/gcc-contrib.spec
packaging/macros.gcc_warning [new file with mode: 0644]

diff --git a/packaging/extract-gcc-warning-logs b/packaging/extract-gcc-warning-logs
new file mode 100644 (file)
index 0000000..95e870a
--- /dev/null
@@ -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"
index 1be2f2d..2a58a32 100644 (file)
@@ -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 (file)
index 0000000..53adc04
--- /dev/null
@@ -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}