Laszlo (Laca) Peter wrote: > Ghee, > > While runtime detection is a step forward, I wouldn't reverse > the packaging changes. With the printing backends in separate > packages, SUNWgtk2 need not depend on _both_ cups and papi. > This is true, also meant all applications that provides printing should now depend on SUNWgtk2-print-cups and SUNWgtk2-print-papi. that is need to modify the Requires for gedit, evince, thunderbird, firefox, gimp-2 etc, right?
-Ghee > Laca > > On Mon, 2009-10-12 at 16:34 +0100, Ghee Teo wrote: > >> Bug: http://defect.opensolaris.org/bz/show_bug.cgi?id=11830 >> >> This is now a new fix which does not include the create of the new packages. >> Essentially, a run-time check is made when the backend modules (cups/papi) >> are >> loaded. If the supporting print system is found then create the print backend >> so that the applications can use. However, it is not then don't create the >> print backend module. >> >> The check for papi is to check for /usr/lib/libpapi.so >> and for cups is /usr/lib/libcups.so >> >> The patch is attached include a reverting the changes made to SUNWgtk2.spec. >> So we would not be generating SUNWgtk2-print-[cups|papi] anymore. >> >> -Ghee >> >> plain text document attachment (print-system-libs-check.diff) >> --- SUNWgtk2.spec 2009-10-12 16:04:25.887908177 +0100 >> +++ SUNWgtk2.spec.reverted 2009-10-12 15:31:54.263184834 +0100 >> @@ -63,7 +63,9 @@ >> SUNW_BaseDir: %{_basedir} >> %include default-depend.inc >> Requires: SUNWgtk2 >> +Requires: SUNWcupsu >> Requires: SUNWlibmsr >> +Requires: SUNWpapi >> Requires: SUNWpng-devel >> Requires: SUNWglib2-devel >> Requires: SUNWcairo-devel >> @@ -71,37 +73,6 @@ >> Requires: SUNWlibatk-devel >> Requires: SUNWxwinc >> >> -%package print-cups >> -Summary: %{summary} - CUPS Print Backend >> -SUNW_BaseDir: %{_basedir} >> -%include default-depend.inc >> -Requires: SUNWglib2 >> -Requires: SUNWgtk2 >> -Requires: SUNWcairo >> -Requires: SUNWcupsu >> -Requires: SUNWpango >> -Requires: SUNWxwplt >> -Requires: SUNWxwrtl >> -Requires: SUNWxorg-clientlibs >> -BuildRequires: SUNWglib2-devel >> -BuildRequires: SUNWcairo-devel >> - >> -%package print-papi >> -Summary: %{summary} - PAPI (LP) Print Backend >> -SUNW_BaseDir: %{_basedir} >> -%include default-depend.inc >> -Requires: SUNWglib2 >> -Requires: SUNWgtk2 >> -Requires: SUNWcairo >> -Requires: SUNWpango >> -Requires: SUNWpapi >> -Requires: SUNWxwplt >> -Requires: SUNWxwrtl >> -Requires: SUNWxorg-clientlibs >> -BuildRequires: SUNWglib2-devel >> -BuildRequires: SUNWgtk2-devel >> -BuildRequires: SUNWcairo-devel >> - >> %if %build_l10n >> %package l10n >> Summary: %{summary} - l10n content >> @@ -243,8 +214,7 @@ >> %{_libdir}/gtk*/*/loaders/*.so >> %{_libdir}/gtk*/*/immodules/im-xim.so >> %{_libdir}/gtk-2.0/modules/*.so >> -%{_libdir}/gtk*/*/printbackends/libprintbackend-file.so >> -%{_libdir}/gtk*/*/printbackends/libprintbackend-lpr.so >> +%{_libdir}/gtk*/*/printbackends >> %ifarch amd64 sparcv9 >> %dir %attr (0755, root, bin) %{_bindir}/%{_arch64} >> %{_bindir}/%{_arch64}/gtk-builder-convert >> @@ -256,8 +226,7 @@ >> %{_libdir}/%{_arch64}/gtk*/*/engines/*.so >> %{_libdir}/%{_arch64}/gtk*/*/immodules/im-xim.so >> %{_libdir}/%{_arch64}/gtk*/modules/*.so >> -%{_libdir}/%{_arch64}/gtk*/*/printbackends/libprintbackend-file.so >> -%{_libdir}/%{_arch64}/gtk*/*/printbackends/libprintbackend-lpr.so >> +%{_libdir}/%{_arch64}/gtk*/*/printbackends >> %endif >> %dir %attr (0755, root, sys) %{_datadir} >> %{_datadir}/themes >> @@ -312,20 +281,6 @@ >> %{_sysconfdir}/%{_arch64}/gtk-2.0/im-multipress.conf >> %endif >> >> -%files print-cups >> -%defattr (-, root, bin) >> -%dir %attr (0755, root, bin) %{_libdir} >> -%{_libdir}/gtk*/*/printbackends/libprintbackend-cups.so >> -%ifarch amd64 sparcv9 >> -%dir %attr (0755, root, bin) %{_libdir}/%{_arch64} >> -%{_libdir}/%{_arch64}/gtk*/*/printbackends/libprintbackend-cups.so >> -%endif >> - >> -%files print-papi >> -%defattr (-, root, bin) >> -%dir %attr (0755, root, bin) %{_libdir} >> -%{_libdir}/gtk*/*/printbackends/libprintbackend-papi.so >> - >> %if %build_l10n >> %files l10n >> %defattr (-, root, bin) >> @@ -334,12 +289,6 @@ >> %endif >> >> %changelog >> -* Sun Oct 11 2009 - ghee.teo at sun.com >> -- rename backend print modules to SUNWgtk2-print-cups and >> SUNWgtk2-print-papi >> -* Sat Oct 10 2009 - dave.lin at sun.com >> -- Fixed directory attribute issue for SUNWgtk2-cups/papi-be. >> -* Fri Oct 09 2009 - ghee.teo at sun.com >> -- split out CUPS and PAPI print backends into SUNWgtk2-cups-be, >> SUNWgtk2-papi-be >> * Thu Sep 10 2009 - jedy.wang at sun.com >> - Remove SUNWmlib dependency. It's optinal now. >> * Tue Jun 30 2009 - dave.lin at sun.com >> diff -urN gtk+-2.18.0/modules/printbackends/cups/gtkprintbackendcups.c >> ../../SUNWgtk2-2.18.0.hacked/i386/gtk+-2.18.0/modules/printbackends/cups/gtkprintbackendcups.c >> --- gtk+-2.18.0/modules/printbackends/cups/gtkprintbackendcups.c >> 2009-09-12 03:58:39.000000000 +0100 >> +++ >> ../../SUNWgtk2-2.18.0.hacked/i386/gtk+-2.18.0/modules/printbackends/cups/gtkprintbackendcups.c >> 2009-10-12 15:16:34.544907874 +0100 >> @@ -228,6 +228,23 @@ >> G_MODULE_EXPORT GtkPrintBackend * >> pb_module_create (void) >> { >> + static gboolean loaded = FALSE; >> + >> + if (!loaded) >> + { >> + GModule *cups; >> + GModuleFlags flags; >> + >> + flags = G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL; >> + >> + cups = g_module_open ("libcups.so", flags); >> + loaded = TRUE; >> + if (!cups) >> + return NULL; >> + else >> + g_module_close (cups); >> + } >> + >> return gtk_print_backend_cups_new (); >> } >> >> diff -urN gtk+-2.18.0/modules/printbackends/papi/gtkprintbackendpapi.c >> ../../SUNWgtk2-2.18.0.hacked/i386/gtk+-2.18.0/modules/printbackends/papi/gtkprintbackendpapi.c >> --- gtk+-2.18.0/modules/printbackends/papi/gtkprintbackendpapi.c >> 2009-09-12 03:58:39.000000000 +0100 >> +++ >> ../../SUNWgtk2-2.18.0.hacked/i386/gtk+-2.18.0/modules/printbackends/papi/gtkprintbackendpapi.c >> 2009-10-12 15:16:10.112638436 +0100 >> @@ -140,6 +140,23 @@ >> G_MODULE_EXPORT GtkPrintBackend * >> pb_module_create (void) >> { >> + static gboolean loaded = FALSE; >> + >> + if (!loaded) >> + { >> + GModule *papi; >> + GModuleFlags flags; >> + >> + flags = G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL; >> + >> + papi = g_module_open ("libpapi.so", flags); >> + loaded = TRUE; >> + if (!papi) >> + return NULL; >> + else >> + g_module_close (papi); >> + } >> + >> return gtk_print_backend_papi_new (); >> } >> >> > > >
