Skip to content

Commit

Permalink
chore: 修改包可安装状态获取途径
Browse files Browse the repository at this point in the history
    修改包可安装状态获取途径

Log: 修改包可安装状态获取途径
Change-Id: I806aaee62e04adf6d46bafeed1e5054bf1c66dca
  • Loading branch information
jinniliew committed Jul 25, 2024
1 parent f1bb139 commit 535d5e2
Showing 1 changed file with 39 additions and 2 deletions.
41 changes: 39 additions & 2 deletions src/Common/vendor/addprinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <QDBusReply>
#include <QJsonObject>
#include <QJsonArray>
#include <QProcessEnvironment>

static QString g_captexec = "/opt/cndrvcups-capt/add";

Expand Down Expand Up @@ -186,6 +187,42 @@ static bool containsIpAddress(const QString &str) {
return match.hasMatch();
}

static int shellCmdLocal(const QString &cmd, QString &out, QString &strErr, int timeout)
{
QProcess proc;
QStringList env = QProcess::systemEnvironment();
env.append("LANG=utf-8");
proc.setEnvironment(env);
proc.start(cmd);
if (proc.waitForFinished(timeout)) {
out = proc.readAll();
if (proc.exitCode() != 0 || proc.exitStatus() != QProcess::NormalExit) {
strErr = QString("err %1, string: %2").arg(proc.exitCode()).arg(QString::fromUtf8(proc.readAllStandardError()));
qCDebug(COMMONMOUDLE) << cmd;
qCWarning(COMMONMOUDLE) << "shellCmd exit with err: " << strErr;
return -1;
}
} else {
qCWarning(COMMONMOUDLE) << "shellCmd timeout";
return -2;
}

return 0;
}

static bool isPackageInstallable(const QString &packagename)
{
QString strRet, strErr;
QString srcParts = "Dir::Etc::SourceParts=/etc/apt/sources.list.d";
QString srcList = "Dir::Etc::SourceList=/etc/deepin/lastore-daemon/sources.list.d/local-driver.list";
int iRet = shellCmdLocal(QString("apt policy %1 -o %2 -o %3").arg(packagename).arg(srcParts).arg(srcList), strRet, strErr, 5000);
if (iRet == 0 && !strRet.isEmpty() && strRet.contains("Candidate:", Qt::CaseInsensitive)){
return true;
}

return false;
}

FixHplipBackend::FixHplipBackend(QObject *parent)

Check warning on line 226 in src/Common/vendor/addprinter.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Member variable 'FixHplipBackend::m_hplipBackend' is not initialized in the constructor.
: QObject(parent)
{
Expand Down Expand Up @@ -364,9 +401,9 @@ void InstallInterface::startInstallPackages(bool status)
m_installPackages.append(package.packageName);
qCInfo(COMMONMOUDLE) << package.packageName << "need install";
}
QDBusReply<bool> installable = interface->call("PackageInstallable", package.packageName);

/*hplip-plugin包 mips架构目前不存在,所以忽略无法安装的错误,避免安装打印机流程阻塞*/
if ((!installable.isValid() || !installable) && (!package.packageName.contains("hplip-plugin"))) {
if (!isPackageInstallable(package.packageName) && (!package.packageName.contains("hplip-plugin"))) {
if (status) {
QDBusReply<QDBusObjectPath> updatePath = interface->call("UpdateSource");
m_updatePath = updatePath.value().path();
Expand Down

0 comments on commit 535d5e2

Please sign in to comment.