|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [MirageOS-devel] linking hack considered harmful
Incidentally, I just noticed one good side-effect to the renaming of the global
Console module to Console_unix and Console_xen.
Previously this code would compile:
module Client (C:CONSOLE) (S:STACKV4) = struct
let start c s =
Console.log_s c "Starting to resolve in 3s..." >>= fun () ->
OS.Time.sleep 3.0 >>= fun () ->
<etc>
end
See the problem? It'll now fail to link with a 'module Console not found', and
should be
module Client (C:CONSOLE) (S:STACKV4) = struct
let start c s =
C.log_s c "Starting to resolve in 3s..." >>= fun () ->
OS.Time.sleep 3.0 >>= fun () ->
<etc>
end
So it is parameterised across the Console functor now, and not a global module.
-anil
> On 20 Oct 2014, at 13:27, Anil Madhavapeddy <anil@xxxxxxxxxx> wrote:
>
> Clock and Io_page, at least.
>
> Anil
>
>
>
>> On 20 Oct 2014, at 12:46, Richard Mortier <Richard.Mortier@xxxxxxxxxxxxxxxx>
>> wrote:
>>
>> cool!
>>
>> are there any other (core) modules where this linking hack was also being
>> applied that will also need untangling like this?
>>
>>> On 18 Oct 2014, at 14:43, Anil Madhavapeddy <anil@xxxxxxxxxx> wrote:
>>>
>>> Dave and I have just untangled several build issues with mirage-console.
>>> What was happening previously is that we had two packages:
>>> mirage-console-unix and mirage-console-xen, which both provided a Console
>>> module. Since we never need to have both a Xen and a Unix console, we just
>>> selected the right ocamlfind package at link time to supply the correct one
>>> (aka the "linking hack").
>>>
>>> When the console support became more sophisticated (support for multiple
>>> consoles), Dave factored out some functionality into a common package. At
>>> this point, the linking hack became unworkable due to dependency issues.
>>>
>>> What we've done in mirage-dev is to go back to a unified mirage-console
>>> package that provides these ocamlfind packages:
>>> - mirage-console (module types)
>>> - mirage-console.proto (xen protocol)
>>> - mirage-console.unix (Console_unix console with lwt.unix)
>>> - mirage-console.xen (Console_xen console with xenstore/etc)
>>>
>>> The mirage.2.0.0 frontend now aliases Console to Console_unix or
>>> Console_xen when generating main.ml, which seems a lot simpler than
>>> depending on which link-time module to use.
>>>
>>> Any more build problems, let me or Dave know!
>>>
>>> -anil
>>> _______________________________________________
>>> MirageOS-devel mailing list
>>> MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
>>> http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
>>
>>
>> --
>> Cheers,
>>
>> R.
>>
>>
>>
>>
>
> _______________________________________________
> MirageOS-devel mailing list
> MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
>
_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |