force old cups usage on el7

This commit is contained in:
Tom Callaway 2020-06-15 10:50:45 -04:00
parent 9063928687
commit 308a9e3603
2 changed files with 144 additions and 0 deletions

View File

@ -0,0 +1,140 @@
diff -up chromium-83.0.4103.97/chrome/service/cloud_print/print_system_cups.cc.el7cups chromium-83.0.4103.97/chrome/service/cloud_print/print_system_cups.cc
--- chromium-83.0.4103.97/chrome/service/cloud_print/print_system_cups.cc.el7cups 2020-06-15 10:38:45.195693757 -0400
+++ chromium-83.0.4103.97/chrome/service/cloud_print/print_system_cups.cc 2020-06-15 10:40:19.864635638 -0400
@@ -725,8 +725,9 @@ int PrintSystemCUPS::PrintFile(const GUR
// Use default (local) print server.
if (url.is_empty())
return cupsPrintFile(name, filename, title, num_options, options);
-
- printing::HttpConnectionCUPS http(url, encryption, /*blocking=*/false);
+
+ printing::HttpConnectionCUPS http(url, encryption);
+ http.SetBlocking(false);
return cupsPrintFile2(http.http(), name, filename, title, num_options,
options);
}
@@ -742,7 +743,8 @@ int PrintSystemCUPS::GetJobs(cups_job_t*
if (url.is_empty())
return cupsGetJobs(jobs, name, myjobs, whichjobs);
- printing::HttpConnectionCUPS http(url, encryption, /*blocking=*/false);
+ printing::HttpConnectionCUPS http(url, encryption);
+ http.SetBlocking(false);
return cupsGetJobs2(http.http(), jobs, name, myjobs, whichjobs);
}
diff -up chromium-83.0.4103.97/printing/backend/cups_helper.cc.el7cups chromium-83.0.4103.97/printing/backend/cups_helper.cc
--- chromium-83.0.4103.97/printing/backend/cups_helper.cc.el7cups 2020-06-15 10:41:01.848722898 -0400
+++ chromium-83.0.4103.97/printing/backend/cups_helper.cc 2020-06-15 10:43:57.780900879 -0400
@@ -32,18 +32,6 @@ namespace printing {
// This section contains helper code for PPD parsing for semantic capabilities.
namespace {
-// Function availability can be tested by checking whether its address is not
-// nullptr. Weak symbols remove the need for platform specific build flags and
-// allow for appropriate CUPS usage on platforms with non-uniform version
-// support, namely Linux.
-#define WEAK_CUPS_FN(x) extern "C" __attribute__((weak)) decltype(x) x
-
-WEAK_CUPS_FN(httpConnect2);
-
-// Timeout for establishing a CUPS connection. It is expected that cupsd is
-// able to start and respond on all systems within this duration.
-constexpr base::TimeDelta kCupsTimeout = base::TimeDelta::FromSeconds(5);
-
// CUPS default max copies value (taken from default cupsMaxCopies parsing in
// cups/ppd-cache.c).
constexpr int32_t kDefaultMaxCopies = 9999;
@@ -541,8 +529,7 @@ const int kDefaultIPPServerPort = 631;
// Helper wrapper around http_t structure, with connection and cleanup
// functionality.
HttpConnectionCUPS::HttpConnectionCUPS(const GURL& print_server_url,
- http_encryption_t encryption,
- bool blocking)
+ http_encryption_t encryption)
: http_(nullptr) {
// If we have an empty url, use default print server.
if (print_server_url.is_empty())
@@ -552,12 +539,6 @@ HttpConnectionCUPS::HttpConnectionCUPS(c
if (port == url::PORT_UNSPECIFIED)
port = kDefaultIPPServerPort;
- if (httpConnect2) {
- http_ = httpConnect2(print_server_url.host().c_str(), port,
- /*addrlist=*/nullptr, AF_UNSPEC, encryption,
- blocking ? 1 : 0, kCupsTimeout.InMilliseconds(),
- /*cancel=*/nullptr);
- } else {
// Continue to use deprecated CUPS calls because because older Linux
// distribution such as RHEL/CentOS 7 are shipped with CUPS 1.6.
http_ =
@@ -570,8 +551,6 @@ HttpConnectionCUPS::HttpConnectionCUPS(c
return;
}
- if (!httpConnect2)
- httpBlocking(http_, blocking ? 1 : 0);
}
HttpConnectionCUPS::~HttpConnectionCUPS() {
@@ -579,6 +558,10 @@ HttpConnectionCUPS::~HttpConnectionCUPS(
httpClose(http_);
}
+void HttpConnectionCUPS::SetBlocking(bool blocking) {
+ httpBlocking(http_, blocking ? 1 : 0);
+}
+
http_t* HttpConnectionCUPS::http() {
return http_;
}
diff -up chromium-83.0.4103.97/printing/backend/cups_helper.h.el7cups chromium-83.0.4103.97/printing/backend/cups_helper.h
--- chromium-83.0.4103.97/printing/backend/cups_helper.h.el7cups 2020-06-15 10:44:04.949745308 -0400
+++ chromium-83.0.4103.97/printing/backend/cups_helper.h 2020-06-15 10:44:36.653057318 -0400
@@ -23,10 +23,11 @@ struct PrinterSemanticCapsAndDefaults;
class PRINTING_EXPORT HttpConnectionCUPS {
public:
HttpConnectionCUPS(const GURL& print_server_url,
- http_encryption_t encryption,
- bool blocking);
+ http_encryption_t encryption);
~HttpConnectionCUPS();
+ void SetBlocking(bool blocking);
+
http_t* http();
private:
diff -up chromium-83.0.4103.97/printing/backend/print_backend_cups.cc.el7cups chromium-83.0.4103.97/printing/backend/print_backend_cups.cc
--- chromium-83.0.4103.97/printing/backend/print_backend_cups.cc.el7cups 2020-06-15 10:44:51.203741555 -0400
+++ chromium-83.0.4103.97/printing/backend/print_backend_cups.cc 2020-06-15 10:46:23.442739884 -0400
@@ -250,7 +250,8 @@ int PrintBackendCUPS::GetDests(cups_dest
if (print_server_url_.is_empty())
return cupsGetDests2(CUPS_HTTP_DEFAULT, dests);
- HttpConnectionCUPS http(print_server_url_, cups_encryption_, blocking_);
+ HttpConnectionCUPS http(print_server_url_, cups_encryption_);
+ http.SetBlocking(blocking_);
// This call must be made in the same scope as |http| because its destructor
// closes the connection.
@@ -276,7 +277,8 @@ base::FilePath PrintBackendCUPS::GetPPD(
// connection will timeout after 10 seconds of no data period. And it will
// return the same way as if data was completely and successfully
// downloaded.
- HttpConnectionCUPS http(print_server_url_, cups_encryption_, blocking_);
+ HttpConnectionCUPS http(print_server_url_, cups_encryption_);
+ http.SetBlocking(blocking_);
ppd_file_path = cupsGetPPD2(http.http(), name);
// Check if the get full PPD, since non-blocking call may simply return
// normally after timeout expired.
@@ -312,7 +314,8 @@ PrintBackendCUPS::ScopedDestination Prin
// Use default (local) print server.
dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, printer_name.c_str(), nullptr);
} else {
- HttpConnectionCUPS http(print_server_url_, cups_encryption_, blocking_);
+ HttpConnectionCUPS http(print_server_url_, cups_encryption_);
+ http.SetBlocking(blocking_);
dest = cupsGetNamedDest(http.http(), printer_name.c_str(), nullptr);
}
return ScopedDestination(dest);

View File

@ -275,6 +275,9 @@ Patch101: chromium-75.0.3770.100-epel7-stdc++.patch
Patch102: chromium-80.0.3987.132-el7-noexcept.patch
# No linux/kcmp.h on EPEL7
Patch103: chromium-83.0.4103.97-epel7-no-kcmp-h.patch
# Use old cups (chromium's code workaround breaks on gcc)
# Revert: https://github.com/chromium/chromium/commit/c3213f8779ddc427e89d982514185ed5e4c94e91
Patch104: chromium-83.0.4103.97-epel7-old-cups.patch
# Enable VAAPI support on Linux
# NOTE: This patch will never land upstream
@ -858,6 +861,7 @@ udev.
%patch101 -p1 -b .epel7
%patch102 -p1 -b .el7-noexcept
%patch103 -p1 -b .epel7-kcmp
%patch104 -p1 -b .el7cups
%endif
# Feature specific patches