@@ -54,17 +54,14 @@ RegistryTracker::~RegistryTracker()
54#define REGISTRY_CONFIG \
54#define REGISTRY_CONFIG \
55"[Registry]\n" \
55"[Registry]\n" \
56"Middleware = Zmq\n" \
56"Middleware = Zmq\n" \
57−"Zmq.Endpoint = ipc://%1/Registry\n" \
58−"Zmq.EndpointDir = %2\n" \
59−"Zmq.ConfigFile = %3\n" \
57+"Zmq.ConfigFile = %1\n" \
60−"Scope.InstallDir = %4\n" \
58+"Scope.InstallDir = %2\n" \
61−"Scoperunner.Path = %5\n" \
59+"Scoperunner.Path = %3\n" \
64#define MW_CONFIG \
62#define MW_CONFIG \
65"[Zmq]\n" \
63"[Zmq]\n" \
66−"EndpointDir.Public = %1\n" \
64+"EndpointDir = %1\n"
67−"EndpointDir.Private = %2\n"
69void RegistryTracker::runRegistry()
66void RegistryTracker::runRegistry()
@@ -78,29 +75,41 @@ void RegistryTracker::runRegistry()
81− QString scopesLibdir;
78+ QString scopeInstallDir;
79+ QString scopeRegistryBin;
80+ QString scopeRunnerBin;
83 QProcess pkg_config;
82 QProcess pkg_config;
84 QStringList arguments;
84 QStringList arguments;
85− arguments << "--variable=libdir";
85+ arguments << "--variable=scopesdir";
86 arguments << "libunity-scopes";
86 arguments << "libunity-scopes";
87 pkg_config.start("pkg-config", arguments);
87 pkg_config.start("pkg-config", arguments);
88 pkg_config.waitForFinished();
88 pkg_config.waitForFinished();
89− QByteArray libdir = pkg_config.readAllStandardOutput();
89+ output = pkg_config.readAllStandardOutput();
90− scopesLibdir = QDir(QString::fromLocal8Bit(libdir)).path().trimmed();
90+ scopeInstallDir = QDir(QString::fromLocal8Bit(output)).path().trimmed();
92+ arguments[0] = "--variable=scoperegistry_bin";
93+ pkg_config.start("pkg-config", arguments);
94+ pkg_config.waitForFinished();
95+ output = pkg_config.readAllStandardOutput();
96+ scopeRegistryBin = QString::fromLocal8Bit(output).trimmed();
98+ arguments[0] = "--variable=scoperunner_bin";
99+ pkg_config.start("pkg-config", arguments);
100+ pkg_config.waitForFinished();
101+ output = pkg_config.readAllStandardOutput();
102+ scopeRunnerBin = QString::fromLocal8Bit(output).trimmed();
93− if (scopesLibdir.size() == 0) {
105+ if (scopeInstallDir.isEmpty() || scopeRegistryBin.isEmpty() || scopeRunnerBin.isEmpty()) {
94 qWarning("Unable to find libunity-scopes package config file");
106 qWarning("Unable to find libunity-scopes package config file");
98− QString scopeRunnerPath = QDir(scopesLibdir).filePath("scoperunner/scoperunner");
100 QString runtime_ini = QString(RUNTIME_CONFIG).arg(m_registry_config.fileName()).arg(m_mw_config.fileName());
110 QString runtime_ini = QString(RUNTIME_CONFIG).arg(m_registry_config.fileName()).arg(m_mw_config.fileName());
101 // FIXME: keep in sync with the SSRegistry config
111 // FIXME: keep in sync with the SSRegistry config
102− QString serverRegistryConfig(m_serverScopes ? "SS.Registry.Identity = SSRegistry\nSS.Registry.Endpoint = ipc:///tmp/SSRegistry" : "");
112+ QString serverRegistryConfig(m_serverScopes ? "SS.Registry.Identity = SSRegistry\n" : "");
103− QString scopeInstallDir(scopesLibdir + "/unity-scopes");
104 if (!m_systemScopes) {
113 if (!m_systemScopes) {
105 m_scopeInstallDir.reset(new QTemporaryDir(tmp.filePath("scopes.XXXXXX")));
114 m_scopeInstallDir.reset(new QTemporaryDir(tmp.filePath("scopes.XXXXXX")));
106 if (!m_scopeInstallDir->isValid()) {
115 if (!m_scopeInstallDir->isValid()) {
@@ -108,8 +117,8 @@ void RegistryTracker::runRegistry()
109 scopeInstallDir = m_scopeInstallDir->path();
118 scopeInstallDir = m_scopeInstallDir->path();
111− QString registry_ini = QString(REGISTRY_CONFIG).arg(m_endpoints_dir.path()).arg(m_endpoints_dir.path()).arg(m_mw_config.fileName()).arg(scopeInstallDir).arg(scopeRunnerPath).arg(serverRegistryConfig);
120+ QString registry_ini = QString(REGISTRY_CONFIG).arg(m_mw_config.fileName()).arg(scopeInstallDir).arg(scopeRunnerBin).arg(serverRegistryConfig);
112− QString mw_ini = QString(MW_CONFIG).arg(m_endpoints_dir.path()).arg(m_endpoints_dir.path());
121+ QString mw_ini = QString(MW_CONFIG).arg(m_endpoints_dir.path());
114 m_runtime_config.write(runtime_ini.toUtf8());
123 m_runtime_config.write(runtime_ini.toUtf8());
115 m_registry_config.write(registry_ini.toUtf8());
124 m_registry_config.write(registry_ini.toUtf8());
@@ -121,11 +130,10 @@ void RegistryTracker::runRegistry()
122 qputenv("UNITY_SCOPES_RUNTIME_PATH", m_runtime_config.fileName().toLocal8Bit());
131 qputenv("UNITY_SCOPES_RUNTIME_PATH", m_runtime_config.fileName().toLocal8Bit());
124− QString registryBin(QDir(scopesLibdir).filePath("scoperegistry/scoperegistry"));
125 QStringList arguments;
133 QStringList arguments;
126 arguments << m_runtime_config.fileName();
134 arguments << m_runtime_config.fileName();
127 arguments << m_scopes;
135 arguments << m_scopes;
129 m_registry.setProcessChannelMode(QProcess::ForwardedChannels);
137 m_registry.setProcessChannelMode(QProcess::ForwardedChannels);
130− m_registry.start(registryBin, arguments);
138+ m_registry.start(scopeRegistryBin, arguments);