Resolves: rhbz#1993771 replace use of ucpp with gcc cpp

which enables dropping the ucpp build dependency from RHEL-9
This commit is contained in:
Caolán McNamara 2021-08-16 09:31:18 +01:00
parent f4207dfa5c
commit cb334a5350
3 changed files with 189 additions and 4 deletions

View File

@ -0,0 +1,69 @@
From 5d56e9f13b9c6ccad080efaea9cbc7f065b56bac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 12 Aug 2021 12:55:30 +0100
Subject: [PATCH] Resolves: tdf#132739 two style tags where there should be
just one
Change-Id: Id9c8c8cc8c5ffdd21ba79ff39a6279cf2ddc8025
---
sw/source/filter/html/css1atr.cxx | 4 +++-
sw/source/filter/html/htmltabw.cxx | 9 ++++++---
sw/source/filter/html/wrthtml.hxx | 2 +-
3 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx
index 7b1a5cc19be3..c401d95a788f 100644
--- a/sw/source/filter/html/css1atr.cxx
+++ b/sw/source/filter/html/css1atr.cxx
@@ -2113,10 +2113,12 @@ void SwHTMLWriter::OutCSS1_TableFrameFormatOptions( const SwFrameFormat& rFrameF
Strm().WriteChar( '\"' );
}
-void SwHTMLWriter::OutCSS1_TableCellBorderHack(SwFrameFormat const& rFrameFormat)
+void SwHTMLWriter::OutCSS1_TableCellBordersAndBG(SwFrameFormat const& rFrameFormat, const SvxBrushItem *pBrushItem)
{
SwCSS1OutMode const aMode( *this,
CSS1_OUTMODE_STYLE_OPT_ON|CSS1_OUTMODE_ENCODE|CSS1_OUTMODE_TABLEBOX, nullptr );
+ if (pBrushItem)
+ OutCSS1_SvxBrush(*this, *pBrushItem, Css1Background::Table, nullptr);
OutCSS1_SvxBox(*this, rFrameFormat.GetBox());
if (!m_bFirstCSS1Property)
{
diff --git a/sw/source/filter/html/htmltabw.cxx b/sw/source/filter/html/htmltabw.cxx
index 4c83319747b7..63812a9b3ef6 100644
--- a/sw/source/filter/html/htmltabw.cxx
+++ b/sw/source/filter/html/htmltabw.cxx
@@ -424,11 +424,14 @@ void SwHTMLWrtTable::OutTableCell( SwHTMLWriter& rWrt,
// Avoid non-CSS version in the ReqIF case.
rWrt.OutBackground( pBrushItem, false );
- if( rWrt.m_bCfgOutStyles )
- OutCSS1_TableBGStyleOpt( rWrt, *pBrushItem );
+ if (!rWrt.m_bCfgOutStyles)
+ pBrushItem = nullptr;
}
- rWrt.OutCSS1_TableCellBorderHack(*pBox->GetFrameFormat());
+ // tdf#132739 with rWrt.m_bCfgOutStyles of true bundle the brush item css
+ // properties into the same "style" tag as the borders so there is only one
+ // style tag
+ rWrt.OutCSS1_TableCellBordersAndBG(*pBox->GetFrameFormat(), pBrushItem);
sal_uInt32 nNumFormat = 0;
double nValue = 0.0;
diff --git a/sw/source/filter/html/wrthtml.hxx b/sw/source/filter/html/wrthtml.hxx
index ab282ba652ff..f82325ee50ae 100644
--- a/sw/source/filter/html/wrthtml.hxx
+++ b/sw/source/filter/html/wrthtml.hxx
@@ -484,7 +484,7 @@ public:
void writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameFormat& rFrameFormat, const OUString& rAltText, HtmlFrmOpts nFrameOpts);
void OutCSS1_TableFrameFormatOptions( const SwFrameFormat& rFrameFormat );
- void OutCSS1_TableCellBorderHack(const SwFrameFormat& rFrameFormat);
+ void OutCSS1_TableCellBordersAndBG(const SwFrameFormat& rFrameFormat, const SvxBrushItem *pBrushItem);
void OutCSS1_SectionFormatOptions( const SwFrameFormat& rFrameFormat, const SwFormatCol *pCol );
void OutCSS1_FrameFormatOptions( const SwFrameFormat& rFrameFormat, HtmlFrmOpts nFrameOpts,
const SdrObject *pSdrObj=nullptr,
--
2.31.1

View File

@ -0,0 +1,111 @@
From 748a9fd3a8e90e52a126190dbe0d97da6e0941ff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 11 Aug 2021 20:55:14 +0100
Subject: [PATCH] make --with-idlc-cpp=cpp work for gcc cpp as a ucpp
replacement
e.g. the example of
https://bugs.launchpad.net/ubuntu/+source/libreoffice/+bug/1524638
has the same output .urd using cpp with these flags as ucpp created
Change-Id: Iadfd2deba7d365c66c3260fd6736c031987e107c
---
config_host.mk.in | 1 +
configure.ac | 14 ++++++++++++++
idlc/Executable_idlc.mk | 8 ++++++++
idlc/source/idlccompile.cxx | 8 ++++++++
4 files changed, 31 insertions(+)
diff --git a/config_host.mk.in b/config_host.mk.in
index 58ca1d1c14fb..6810660067b0 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -635,6 +635,7 @@ export SYSTEM_RHINO=@SYSTEM_RHINO@
export SYSTEM_SERF=@SYSTEM_SERF@
export SYSTEM_STAROFFICE=@SYSTEM_STAROFFICE@
export SYSTEM_UCPP=@SYSTEM_UCPP@
+export SYSTEM_UCPP_IS_GCC=@SYSTEM_UCPP_IS_GCC@
export SYSTEM_VISIO=@SYSTEM_VISIO@
export SYSTEM_WPD=@SYSTEM_WPD@
export SYSTEM_WPG=@SYSTEM_WPG@
diff --git a/configure.ac b/configure.ac
index 3d2bf7e24555..ac226fd46ace 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8807,9 +8807,22 @@ dnl ===================================================================
dnl Check for C preprocessor to use
dnl ===================================================================
AC_MSG_CHECKING([which C preprocessor to use in idlc])
+SYSTEM_UCPP_IS_GCC=
if test -n "$with_idlc_cpp"; then
AC_MSG_RESULT([$with_idlc_cpp])
AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
+ AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
+ # ucpp will accept -v (to output version), warn about the others as unknown
+ # and return 1 (due to -v)
+ # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
+ # and return 0 (due to --version ) if all options are supported
+ $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
+ if test $? -eq 0; then
+ SYSTEM_UCPP_IS_GCC=TRUE
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
else
AC_MSG_RESULT([ucpp])
AC_MSG_CHECKING([which ucpp tp use])
@@ -8822,6 +8835,7 @@ else
fi
fi
AC_SUBST(SYSTEM_UCPP)
+AC_SUBST(SYSTEM_UCPP_IS_GCC)
dnl ===================================================================
dnl Check for epm (not needed for Windows)
diff --git a/idlc/Executable_idlc.mk b/idlc/Executable_idlc.mk
index e194e9049c77..f2f79dcb8911 100644
--- a/idlc/Executable_idlc.mk
+++ b/idlc/Executable_idlc.mk
@@ -35,10 +35,18 @@ $(eval $(call gb_Executable_add_scanners,idlc,\
))
ifneq (,$(SYSTEM_UCPP))
+
$(eval $(call gb_Executable_add_defs,idlc,\
-DSYSTEM_UCPP \
-DUCPP=\"file://$(SYSTEM_UCPP)\" \
))
+
+ifneq ($(SYSTEM_UCPP_IS_GCC),)
+$(eval $(call gb_Executable_add_defs,idlc,\
+ -DSYSTEM_UCPP_IS_GCC \
+))
+endif
+
endif
$(eval $(call gb_Executable_add_exception_objects,idlc,\
diff --git a/idlc/source/idlccompile.cxx b/idlc/source/idlccompile.cxx
index bf3325d6821a..1902d63e0cad 100644
--- a/idlc/source/idlccompile.cxx
+++ b/idlc/source/idlccompile.cxx
@@ -237,7 +237,15 @@ sal_Int32 compileFile(const OString * pathname)
::std::vector< OUString> lCppArgs;
lCppArgs.emplace_back("-DIDL");
lCppArgs.emplace_back("-C");
+#ifdef SYSTEM_UCPP_IS_GCC
+ // -nostdinc Do not search the standard system directories for header files
+ lCppArgs.emplace_back("-nostdinc");
+ // with gcc cpp, even when not explicitly including anything, /usr/include/stdc-predef.h
+ // gets inserted without -nostdinc
+#else
+ // -zI Do not use the standard (compile-time) include path.
lCppArgs.emplace_back("-zI");
+#endif
Options* pOptions = idlc()->getOptions();
--
2.31.1

View File

@ -50,7 +50,7 @@ Summary: Free Software Productivity Suite
Name: libreoffice
Epoch: 1
Version: %{libo_version}.2
Release: 4%{?libo_prerelease}%{?dist}
Release: 5%{?libo_prerelease}%{?dist}
License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and MPLv2.0 and CC0
URL: http://www.libreoffice.org/
@ -116,7 +116,6 @@ BuildRequires: perl(base)
BuildRequires: glibc-all-langpacks
BuildRequires: libappstream-glib
%endif
BuildRequires: ucpp
BuildRequires: zip
# libs / headers - common
@ -258,6 +257,8 @@ Patch8: 0001-Simplify-construction-of-a-hardcoded-IPv4-address.patch
Patch9: 0001-Remove-unused-DOCTYPE-from-odk-examples-xcu-file.patch
Patch10: 0001-math.desktop-include-Spreadsheet-category.patch
Patch11: 0001-rhbz-1980800-allow-convert-to-csv-to-write-each-shee.patch
Patch12: 0001-make-with-idlc-cpp-cpp-work-for-gcc-cpp-as-a-ucpp-re.patch
Patch13: 0001-Resolves-tdf-132739-two-style-tags-where-there-shoul.patch
# not upstreamed
Patch500: 0001-disable-libe-book-support.patch
@ -1111,7 +1112,7 @@ touch autogen.lastrun
--with-gdrive-client-secret="GYWrDtzyZQZ0_g5YoBCC6F0I" \
--with-gdrive-client-id="457862564325.apps.googleusercontent.com" \
--enable-python=system \
--with-system-ucpp \
--with-idlc-cpp=cpp \
%{distrooptions} \
%{?bundling_options} \
%{?archoptions} \
@ -2243,7 +2244,11 @@ gtk-update-icon-cache -q %{_datadir}/icons/hicolor &>/dev/null || :
%{_includedir}/LibreOfficeKit
%changelog
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com>
* Thu Aug 12 2021 Caolán McNamara <caolanm@redhat.com> - 1:7.1.5.2-5
- replace use of ucpp with gcc cpp
- Resolves: tdf#132739 two html style tags where there should be just one
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1:7.1.5.2-4
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688