@@ -49,58 +49,66 @@ RegistryTracker::~RegistryTracker()
49"Registry.Identity = Registry\n" \
49"Registry.Identity = Registry\n" \
50"Registry.ConfigFile = %1\n" \
50"Registry.ConfigFile = %1\n" \
51"Default.Middleware = Zmq\n" \
51"Default.Middleware = Zmq\n" \
52−"Zmq.ConfigFile = %2\n"
52+"Zmq.ConfigFile = %2\n" \
53+"Smartscopes.Registry.Identity = %3\n"
54#define REGISTRY_CONFIG \
55#define REGISTRY_CONFIG \
55"[Registry]\n" \
56"[Registry]\n" \
56"Middleware = Zmq\n" \
57"Middleware = Zmq\n" \
57−"Zmq.Endpoint = ipc://%1/Registry\n" \
58+"Zmq.ConfigFile = %1\n" \
58−"Zmq.EndpointDir = %2\n" \
59−"Zmq.ConfigFile = %3\n" \
60−"Scope.InstallDir = %4\n" \
59+"Scope.InstallDir = %2\n" \
61−"Scoperunner.Path = %5\n" \
60+"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()
71 QDir tmp(QDir::temp());
68 QDir tmp(QDir::temp());
72− m_runtime_config.setFileTemplate(tmp.filePath("Runtime.ini.XXXXXX"));
69+ m_runtime_config.setFileTemplate(tmp.filePath("Runtime.XXXXXX.ini"));
73− m_registry_config.setFileTemplate(tmp.filePath("Registry.ini.XXXXXX"));
70+ m_registry_config.setFileTemplate(tmp.filePath("Registry.XXXXXX.ini"));
74− m_mw_config.setFileTemplate(tmp.filePath("Zmq.ini.XXXXXX"));
71+ m_mw_config.setFileTemplate(tmp.filePath("Zmq.XXXXXX.ini"));
76 if (!m_runtime_config.open() || !m_registry_config.open() || !m_mw_config.open() || !m_endpoints_dir.isValid()) {
73 if (!m_runtime_config.open() || !m_registry_config.open() || !m_mw_config.open() || !m_endpoints_dir.isValid()) {
77 qWarning("Unable to open temporary files!");
74 qWarning("Unable to open temporary files!");
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());
101 // FIXME: keep in sync with the SSRegistry config
110 // FIXME: keep in sync with the SSRegistry config
102− QString serverRegistryConfig(m_serverScopes ? "SS.Registry.Identity = SSRegistry\nSS.Registry.Endpoint = ipc:///tmp/SSRegistry" : "");
111+ QString runtime_ini = QString(RUNTIME_CONFIG).arg(m_registry_config.fileName()).arg(m_mw_config.fileName()).arg(m_serverScopes ? "SSRegistry" : "");
103− QString scopeInstallDir(scopesLibdir + "/unity-scopes");
104 if (!m_systemScopes) {
112 if (!m_systemScopes) {
105 m_scopeInstallDir.reset(new QTemporaryDir(tmp.filePath("scopes.XXXXXX")));
113 m_scopeInstallDir.reset(new QTemporaryDir(tmp.filePath("scopes.XXXXXX")));
106 if (!m_scopeInstallDir->isValid()) {
114 if (!m_scopeInstallDir->isValid()) {
@@ -108,8 +116,8 @@ void RegistryTracker::runRegistry()
109 scopeInstallDir = m_scopeInstallDir->path();
117 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);
119+ QString registry_ini = QString(REGISTRY_CONFIG).arg(m_mw_config.fileName()).arg(scopeInstallDir).arg(scopeRunnerBin);
112− QString mw_ini = QString(MW_CONFIG).arg(m_endpoints_dir.path()).arg(m_endpoints_dir.path());
120+ QString mw_ini = QString(MW_CONFIG).arg(m_endpoints_dir.path());
114 m_runtime_config.write(runtime_ini.toUtf8());
122 m_runtime_config.write(runtime_ini.toUtf8());
115 m_registry_config.write(registry_ini.toUtf8());
123 m_registry_config.write(registry_ini.toUtf8());
@@ -121,11 +129,10 @@ void RegistryTracker::runRegistry()
122 qputenv("UNITY_SCOPES_RUNTIME_PATH", m_runtime_config.fileName().toLocal8Bit());
130 qputenv("UNITY_SCOPES_RUNTIME_PATH", m_runtime_config.fileName().toLocal8Bit());
124− QString registryBin(QDir(scopesLibdir).filePath("scoperegistry/scoperegistry"));
125 QStringList arguments;
132 QStringList arguments;
126 arguments << m_runtime_config.fileName();
133 arguments << m_runtime_config.fileName();
127 arguments << m_scopes;
134 arguments << m_scopes;
129 m_registry.setProcessChannelMode(QProcess::ForwardedChannels);
136 m_registry.setProcessChannelMode(QProcess::ForwardedChannels);
130− m_registry.start(registryBin, arguments);
137+ m_registry.start(scopeRegistryBin, arguments);