Example #1
0
        private void CheckPackage(string name, ProfilerPackage package)
        {
            InstalledWaiter waiter  = new InstalledWaiter();
            var             proc    = SDBLib.CreateSdbProcess(true, true);
            string          cmdline = DeviceManager.AdjustSdbArgument("shell \"rpm -q " + name + "\"");
            var             result  = SDBLib.RunSdbProcessAsync(proc, cmdline, true, waiter);

            if (!waiter.Waiter.WaitOne(30000))
            {
                Print($"CheckPackage fails for {name}");
                return;
            }

            bool installed = !string.IsNullOrEmpty(waiter.InstalledStatus) &&
                             !waiter.InstalledStatus.EndsWith("not installed");

            Print($"Package {name} installed: {installed}");
            if (installed)
            {
                string[] components = ParsePackageFilename(waiter.InstalledStatus);
                if (components.Length > 2)
                {
                    package.InstalledVersion = components[2];
                }

                if (components.Length > 3)
                {
                    package.InstalledRelease = components[3];
                }
            }

            package.NeedToInstall = !installed;
        }
Example #2
0
        private bool InstallPackage(string name, ProfilerPackage p)
        {
            string rpm = name + "-" + p.AvailableVersion + "-" + p.AvailableRelease
                         + "." + ArchToSuffix(GetArch()) + ".rpm";
            string package_path = GetRpmsPath() + "/" + rpm;

            Print($"Installing {package_path}");
            var    process = SDBLib.CreateSdbProcess();
            string cmdline = DeviceManager.AdjustSdbArgument($"shell \"rpm -U --force {package_path}\"");

            SDBLib.RunSdbProcess(process, cmdline, true);
            int rc = process.ExitCode;

            process.Close();
            return(rc == 0);
        }
Example #3
0
        private bool PushPackage(string name, ProfilerPackage p)
        {
            string rpm = name + "-" + p.AvailableVersion + "-" + p.AvailableRelease
                         + "." + ArchToSuffix(GetArch()) + ".rpm";
            string src = ToolsPathInfo.OndemandFolderPath + @"\" + rpm;
            string dst = GetRpmsPath() + "/" + rpm;

            Print($"Push {src} -> {dst}");
            var    proc    = SDBLib.CreateSdbProcess(true, true);
            string cmdline = DeviceManager.AdjustSdbArgument($"push \"{src}\" {dst}");

            SDBLib.RunSdbProcess(proc, cmdline, true);
            int rc = proc.ExitCode;

            proc.Close();
            return(rc == 0);
        }
Example #4
0
        private void CheckInstalled()
        {
            foreach (KeyValuePair <string, ProfilerPackage> package in _packages)
            {
                CheckPackage(package.Key, package.Value);
                if (!package.Value.NeedToInstall)
                {
                    Version av = null, iv = null;
                    double  ar = 0, ir = 0;
                    if (!string.IsNullOrEmpty(package.Value.AvailableVersion) &&
                        !string.IsNullOrEmpty(package.Value.InstalledVersion))
                    {
                        av = new Version(package.Value.AvailableVersion);
                        iv = new Version(package.Value.InstalledVersion);
                    }

                    if (!string.IsNullOrEmpty(package.Value.AvailableRelease) &&
                        !string.IsNullOrEmpty(package.Value.InstalledRelease))
                    {
                        ar = double.Parse(package.Value.AvailableRelease);
                        ir = double.Parse(package.Value.InstalledRelease);
                    }

                    if (av != null && iv != null)
                    {
                        if (av > iv)
                        {
                            package.Value.NeedToInstall = true;
                        }
                        else if (av == iv)
                        {
                            if (ar > ir)
                            {
                                package.Value.NeedToInstall = true;
                            }
                        }
                    }
                }
            }


            ProfilerPackage liburcu1 = _packages["liburcu0"], liburcu2 = _packages["userspace-rcu"];

            if (liburcu1 != null && liburcu2 != null)
            {
                if (liburcu1.NeedToInstall && liburcu2.NeedToInstall)
                {
                    if (!string.IsNullOrEmpty(liburcu2.AvailableVersion))
                    {
                        liburcu1.NeedToInstall = false;
                    }
                    else if (!string.IsNullOrEmpty(liburcu1.AvailableVersion))
                    {
                        liburcu2.NeedToInstall = false;
                    }
                }
                else if (liburcu2.NeedToInstall && !liburcu1.NeedToInstall)
                {
                    liburcu2.NeedToInstall = false;
                }
                else if (liburcu1.NeedToInstall && !liburcu2.NeedToInstall)
                {
                    liburcu1.NeedToInstall = false;
                }
            }
        }