@@ -54,17 +54,14 @@ RegistryTracker::~RegistryTracker()
5454#define REGISTRY_CONFIG \
5555"[Registry]\n" \
5656"Middleware = Zmq\n" \
57−"Zmq.Endpoint = ipc://%1/Registry\n" \
58−"Zmq.EndpointDir = %2\n" \
59−"Zmq.ConfigFile = %3\n" \
60−"Scope.InstallDir = %4\n" \
61−"Scoperunner.Path = %5\n" \
62−"%6"
57+"Zmq.ConfigFile = %1\n" \
58+"Scope.InstallDir = %2\n" \
59+"Scoperunner.Path = %3\n" \
60+"%4"
6361
6462#define MW_CONFIG \
6563"[Zmq]\n" \
66−"EndpointDir.Public = %1\n" \
67−"EndpointDir.Private = %2\n"
64+"EndpointDir = %1\n"
6865
6966void RegistryTracker::runRegistry()
7067{
@@ -78,29 +75,41 @@ void RegistryTracker::runRegistry()
7875 return;
7976 }
8077
81− QString scopesLibdir;
78+ QString scopeInstallDir;
79+ QString scopeRegistryBin;
80+ QString scopeRunnerBin;
8281 {
8382 QProcess pkg_config;
83+ QByteArray output;
8484 QStringList arguments;
85− arguments << "--variable=libdir";
85+ arguments << "--variable=scopesdir";
8686 arguments << "libunity-scopes";
8787 pkg_config.start("pkg-config", arguments);
8888 pkg_config.waitForFinished();
89− QByteArray libdir = pkg_config.readAllStandardOutput();
90− scopesLibdir = QDir(QString::fromLocal8Bit(libdir)).path().trimmed();
89+ output = pkg_config.readAllStandardOutput();
90+ scopeInstallDir = QDir(QString::fromLocal8Bit(output)).path().trimmed();
91+
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();
97+
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();
91103 }
92104
93− if (scopesLibdir.size() == 0) {
105+ if (scopeInstallDir.isEmpty() || scopeRegistryBin.isEmpty() || scopeRunnerBin.isEmpty()) {
94106 qWarning("Unable to find libunity-scopes package config file");
95107 return;
96108 }
97109
98− QString scopeRunnerPath = QDir(scopesLibdir).filePath("scoperunner/scoperunner");
99−
100110 QString runtime_ini = QString(RUNTIME_CONFIG).arg(m_registry_config.fileName()).arg(m_mw_config.fileName());
101111 // FIXME: keep in sync with the SSRegistry config
102− QString serverRegistryConfig(m_serverScopes ? "SS.Registry.Identity = SSRegistry\nSS.Registry.Endpoint = ipc:///tmp/SSRegistry" : "");
103− QString scopeInstallDir(scopesLibdir + "/unity-scopes");
112+ QString serverRegistryConfig(m_serverScopes ? "SS.Registry.Identity = SSRegistry\n" : "");
104113 if (!m_systemScopes) {
105114 m_scopeInstallDir.reset(new QTemporaryDir(tmp.filePath("scopes.XXXXXX")));
106115 if (!m_scopeInstallDir->isValid()) {
@@ -108,8 +117,8 @@ void RegistryTracker::runRegistry()
108117 }
109118 scopeInstallDir = m_scopeInstallDir->path();
110119 }
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);
112− QString mw_ini = QString(MW_CONFIG).arg(m_endpoints_dir.path()).arg(m_endpoints_dir.path());
120+ QString registry_ini = QString(REGISTRY_CONFIG).arg(m_mw_config.fileName()).arg(scopeInstallDir).arg(scopeRunnerBin).arg(serverRegistryConfig);
121+ QString mw_ini = QString(MW_CONFIG).arg(m_endpoints_dir.path());
113122
114123 m_runtime_config.write(runtime_ini.toUtf8());
115124 m_registry_config.write(registry_ini.toUtf8());
@@ -121,11 +130,10 @@ void RegistryTracker::runRegistry()
121130
122131 qputenv("UNITY_SCOPES_RUNTIME_PATH", m_runtime_config.fileName().toLocal8Bit());
123132
124− QString registryBin(QDir(scopesLibdir).filePath("scoperegistry/scoperegistry"));
125133 QStringList arguments;
126134 arguments << m_runtime_config.fileName();
127135 arguments << m_scopes;
128136
129137 m_registry.setProcessChannelMode(QProcess::ForwardedChannels);
130− m_registry.start(registryBin, arguments);
138+ m_registry.start(scopeRegistryBin, arguments);
131139}