[sword-devel] Question regarding InstallMgr
P Mosier
paladin1 at sdf.org
Wed Dec 14 20:26:20 EST 2022
Okay, so I've made some progress but appear to be stalled a bit.
When instructed to install a module, the command line installmgr doesn't
seem to call InstallMgr::refreshRemoteSource() at all, and somehow the
call to do the install succeeds. Yet my example below fails if I don't
call to refresh the source.
However, if I DO call refreshRemoteSource(), I will end up downloading
EVERY module, despite only specifying one:
int myInstallModule(const char* modname) {
sword::InstallSource is("FTP");
is.source = "ftp.crosswire.org";
is.directory = "/pub/sword/raw";
sword::SWBuf installpath = getenv("HOME");
installpath += "/.sword/";
sword::InstallMgr* im = new sword::InstallMgr(installpath);
im->setUserDisclaimerConfirmed(true);
// XXX -- the call below appears to be required
int refresh = im->refreshRemoteSource(&is);
if (refresh) {
printf("Refresh call failed, error: %d\n", refresh);
exit(0);
}
// XXX -- this installs EVERY module, not just what is passed as an
argument
return im->installModule(&swrd, 0, modname, &is);
}
Someone have an idea what I might be missing?
Thanks,
- Paul M
On 12/8/22 16:18, Greg Hellings wrote:
> I believe you will need to refresh that source before you call the
> install method. It's trying to look up the config file for that module
> and isn't finding it. Those get downloaded and cached by the
> Installmgr class when it refreshes a source.
>
> --Greg
>
> On Thu, Dec 8, 2022, 14:51 P Mosier <paladin1 at sdf.org> wrote:
>
> Hello,
>
> I am trying to figure out what the appropriate steps to take are for
> programmatically installing a module through FTP. Looking through
> the
> backend codebase, it seems like there are some configuration settings
> that have to be initialized in SWMgr order for
> InstallMgr::installModule
> to work. However, tracking this down has eluded me as InstallMgr
> never
> seems to be set up and called the same way twice.
>
> I have this as a simple example:
>
> sword::SWMgr swrd;
> sword::InstallSource is("FTP");
> is.source = "ftp.crosswire.org <http://ftp.crosswire.org>";
> is.directory = "/pub/sword";
>
> sword::InstallMgr im;
> im.installModule(&swrd, 0, "KJVA", &is);
>
> The call to installModule segfaults at this line:
>
> module = mgr.config->getSections().find(modName);
>
> I recognize it might be related to my own environment. This is the
> entire content of my /etc/sword:
> [Install]
> DataPath=/usr/share/sword/
>
> Does someone have an idea for what I'm missing, or an example to
> direct
> me to so I can get a better handle on this area of code?
>
> Thanks,
> - Paul M
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page
>
>
> _______________________________________________
> sword-devel mailing list:sword-devel at crosswire.org
> http://crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://crosswire.org/pipermail/sword-devel/attachments/20221214/be3d0784/attachment.htm>
More information about the sword-devel
mailing list