MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / installNextTinyCorePackage

Method installNextTinyCorePackage

source/ui/data/boxedContainer.cpp:777–834  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

775}
776
777void BoxedContainer::installNextTinyCorePackage(WaitDlg* dlg, std::vector<BString> packages) {
778 if (packages.size() == 0) {
779 return;
780 }
781 BString package = packages.back();
782 packages.pop_back();
783 GlobalSettings::startUpArgs = StartUpArgs();
784 this->launch();
785 if (package.endsWith(".tcz")) {
786 GlobalSettings::startUpArgs.setWorkingDir(B(""));
787 GlobalSettings::startUpArgs.addArg(B("/usr/local/bin/unsquashfs"));
788 GlobalSettings::startUpArgs.addArg(B("-f"));
789 GlobalSettings::startUpArgs.addArg(B("-d"));
790 GlobalSettings::startUpArgs.addArg(B("/"));
791 GlobalSettings::startUpArgs.addArg("/tcCache/" + package);
792 GlobalSettings::startUpArgs.mountInfo.push_back(MountInfo(B("/tcCache"), getCacheFolder(), false));
793 dlg->addSubLabel("Extracting " + package, 5);
794 installingPackages.push_back(package);
795 } else if (package.length()>0) {
796 GlobalSettings::startUpArgs.setWorkingDir(B("/usr/local/sbin"));
797 GlobalSettings::startUpArgs.addArg(package);
798 dlg->addSubLabel("Running post install " + Fs::getFileNameFromPath(package), 5);
799 } else {
800 BString sep = BString::pathSeparator();
801 BString installed = GlobalSettings::getRootFolder(this).stringByApppendingPath("usr") + sep + "local" + sep + "tce.installed";
802 Fs::iterateAllNativeFiles(installed, false, false, [this, &packages](BString filePath, bool isDir) {
803 BString fileName = Fs::getFileNameFromNativePath(filePath);
804 if (vectorContainsIgnoreCase(installingPackages, fileName + ".tcz")) {
805 packages.push_back("/usr/local/tce.installed/" + fileName);
806 }
807 return 0;
808 });
809 GlobalSettings::startUpArgs.setWorkingDir(B("/sbin"));
810 GlobalSettings::startUpArgs.addArg(B("/sbin/ldconfig"));
811 dlg->addSubLabel(B("Running ldconfig"), 5);
812 }
813 GlobalSettings::startUpArgs.readyToLaunch = true;
814 GlobalSettings::startUpArgs.userId = 0;
815#ifndef BOXEDWINE_UI_LAUNCH_IN_PROCESS
816 GlobalSettings::startUpArgs.ttyPrepend = true;
817#endif
818 if (packages.size()) {
819 GlobalSettings::keepUIRunning = [dlg, packages, this]() {
820 runOnMainUI([dlg, packages, this]() {
821 installNextTinyCorePackage(dlg, packages);
822 return false;
823 });
824 };
825 } else {
826 installedPackages.insert(installedPackages.end(), installingPackages.begin(), installingPackages.end());
827 installingPackages.clear();
828 saveInstalledPackageList();
829 BString containerPath = dirPath;
830 GlobalSettings::startUpArgs.runOnRestartUI = [containerPath]() {
831 gotoView(VIEW_CONTAINERS, containerPath);
832 };
833 }
834}

Callers

nothing calls this directly

Calls 15

launchMethod · 0.95
StartUpArgsClass · 0.85
BFunction · 0.85
MountInfoClass · 0.85
vectorContainsIgnoreCaseFunction · 0.85
runOnMainUIFunction · 0.85
gotoViewFunction · 0.85
pop_backMethod · 0.80
endsWithMethod · 0.80
setWorkingDirMethod · 0.80
addArgMethod · 0.80
addSubLabelMethod · 0.80

Tested by

no test coverage detected