From bd0b511b8194053b98e1c5292a9f1c15dd5242c6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 18 Jan 2023 20:41:22 +0530 Subject: [PATCH] More robust output to stderr for rcc --- src/calibre/utils/rcc/__init__.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/calibre/utils/rcc/__init__.py b/src/calibre/utils/rcc/__init__.py index 94ac2cf066..e3253eac25 100644 --- a/src/calibre/utils/rcc/__init__.py +++ b/src/calibre/utils/rcc/__init__.py @@ -2,7 +2,7 @@ # vim:fileencoding=utf-8 # License: GPL v3 Copyright: 2022, Kovid Goyal -import os +import os, io import sys import tempfile from posixpath import normpath @@ -14,7 +14,12 @@ from calibre_extensions import rcc_backend def compile_qrc(output_path, *qrc_file_paths): rcc = rcc_backend.RCCResourceLibrary() err_device = QFile() - if not err_device.open(sys.stderr.fileno(), QIODevice.OpenModeFlag.WriteOnly | QIODevice.OpenModeFlag.Text): + + try: + fd = sys.__stderr__.fileno() + except io.UnsupportedOperation: + fd = 2 + if not err_device.open(fd, QIODevice.OpenModeFlag.WriteOnly | QIODevice.OpenModeFlag.Text): raise ValueError('Failed to open STDERR for writing') if not qrc_file_paths: raise TypeError('Must specify at least one .qrc file')