[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] golang/xenlight: Add libxl_utils support
On 7/19/19 2:19 PM, Nicolas Belouin wrote: > > > On 7/19/19 1:04 PM, George Dunlap wrote: >> On 7/19/19 11:24 AM, Nicolas Belouin wrote: >>> >>> On 7/19/19 12:09 PM, George Dunlap wrote: >>>> On 7/19/19 11:03 AM, Nicolas Belouin wrote: >>>>> On 7/19/19 10:50 AM, George Dunlap wrote: >>>>>>> On Jul 19, 2019, at 9:47 AM, George Dunlap <george.dunlap@xxxxxxxxxx> >>>>>>> wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>>> On Jul 19, 2019, at 8:34 AM, Nicolas Belouin >>>>>>>> <nicolas.belouin@xxxxxxxxx> wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On 7/18/19 11:54 PM, George Dunlap wrote: >>>>>>>>> The Go bindings for libxl miss functions from libxl_utils, let's start >>>>>>>>> with the simple libxl_domid_to_name and its counterpart >>>>>>>>> libxl_name_to_domid. >>>>>>>>> >>>>>>>>> NB that C.GoString() will return "" if it's passed a NULL; see >>>>>>>>> https://github.com/golang/go/issues/32734#issuecomment-506835432 >>>>>>>>> >>>>>>>>> Signed-off-by: Nicolas Belouin <nicolas.belouin@xxxxxxxxx> >>>>>>>>> Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> >>>>>>>>> --- >>>>>>>>> v3: >>>>>>>>> - Wire into build system >>>>>>>>> - Add reference to C.GoString() handling NULL to commit message >>>>>>>>> >>>>>>>>> Nicolas, could you test to see if this actually works for you? >>>>>>>> Tested it, it works. >>>>>>>> >>>>>>>> I must confess I do not use that import path as the new modules >>>>>>>> mechanism >>>>>>>> introduced in Go1.11 downloads and compile a versioned copy of every >>>>>>>> dependency per project, and this behavior is incompatible with the >>>>>>>> build >>>>>>>> system used here. >>>>>>> It’s possible that something fundamentally has changed, but I suspect >>>>>>> that rather you don’t quite understand how the current build system is >>>>>>> supposed to work. (In which case a write-up in the tree would probably >>>>>>> be useful.) >>>>>>> >>>>>>> Go has always insisted that there be no binary compatibility between >>>>>>> versions; so it’s always been necessary to re-compile all your >>>>>>> libraries when upgrading from (say) 1.8 to 1.9. Which means that any >>>>>>> useable distribution must also include all the source files necessary >>>>>>> to recompile when you bump the version number. >>>>>>> >>>>>>> So the core mechanism of the “install” is actually to copy all the >>>>>>> source files necessary into the right local directory such that the go >>>>>>> compiler can find them; ATM this is >>>>>>> /usr/share/gocode/golang.xenproject.org/xenlight >>>>>> Nit: This of course should have a `src/` between `gocode/` and >>>>>> `golang.xenproject.org/`. >>>>>> >>>>>> NB also that this naming scheme was designed so that at some point in >>>>>> the future, we could actually host the xenlight packages at the URL >>>>>> provided. >>>>>> >>>>>> -George >>>>>> >>>>> This new mechanism of modules is described here: >>>>> https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more >>>>> >>>>> The module system is intended to supersede the GOPATH approach and >>>>> provide a way to get versioned dependencies, as such >>>>> it does not rely on GOPATH at all and doesn't use sources or compiled >>>>> packages present in GOPATH elements such as /usr/share/gocode >>>>> and systematically fetch (at the asked version) and compile a copy of >>>>> the dependency as it might be a different version from the one >>>>> in GOPATH. >>>>> >>>>> As far as I tried, I have been unable to build my module even with the >>>>> library installed. >>>>> I have to use xenbits.xen.org/git-http/xen.git/tools/golang/xenlight (or >>>>> one of its mirror) in order to build the module using the new >>>>> mechanism >> This will break as soon as we have support in golang/xenlight for libxl >> features not in the version of Xen you're using. >> >> E.g., suppose you're on Xen 4.12. Someone introduces a new feature in >> Xen 4.13, and plumbs it all the way from Xen, through libxl, *and* >> golang/xenlight. Now when *you* do a build, it will fail, because your >> version of golang will expect libxl features which your system doesn't have. > I know of that, and that can be overcome using modules as you can > specify a branch version of the module you depends on (e.g you can set > your dependency as being xxx/xenlight@stable-4.12). That's not terrible I guess. >> I had always planned on getting golang.xenproject.org set up such that >> it could interact with the "normal" go get thing. If you want to help >> us figure out how to get that set up, that would be helpful. > > As far as I looked into vanity URLs, you can't serve a subdirectory of a > repository directly, but you can trick the system using a go-proxy. > To do that you need two things. First, you need > https://golang.xenproject.org/xenlight?go-get=1 > <https://example.org/pkg/foo?go-get=1> to point to a page containing a > <meta name="go-import" content="golang.xenproject.org mod > https://golang.xenproject.org/moduleproxy <https://code.org/moduleproxy>"> > And have golang.xenproject.org/moduleproxy to follow the specifications > of module proxies by proposing '.zip' files containing the different > versions of the module. This part for sure can be scripted to do the > hard work of dynamically packaging the versions from the git repository > on demand. Yes, that's sort of what I had in mind -- although it might be better to statically update the content with a crontab or something, rather than regenerating it from scratch every connection. >> What would be *really* ideal is if we didn't have to link golang against >> one particular hypervisor. Maybe we need to use plugins? >> https://golang.org/pkg/plugin/ > > This is the Go equivalent of ldopen, I'm not fond of this approach in > general, but something like this can indeed do the trick to keep > from linking against libxl directly, it would need a split in two > modules to be easily usable though. It's certainly a lot of work, but it seems a lot nicer than having to recompile your application every time you upgrade your hypervisor. :-) But obviously all that requires work and testing, which requires someone who has enough time to make it happen. -George _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |