[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT/PYTHON3 PATCH v3 14/14] README.md: Update with info about building and running



Hi,

On 08.10.19, 17:47, "Minios-devel on behalf of Costin Lupu" 
<minios-devel-bounces@xxxxxxxxxxxxxxxxxxxx on behalf of costin.lup@xxxxxxxxx> 
wrote:

    On 10/7/19 10:36 AM, Felipe Huici wrote:
    > Hi Costin, Vlad,
    > 
    > I have quite a few comments here; they're not all to do with README.md 
directly but since the README.md refers to them I'm putting them here.
    > 
    > * In README.md please be more precise about optional libs supported, for 
now it says “etc”. 
    
    I can list all the libs we support now, but it should be updated each
    time a new module will be enabled.
    
    > * Please mention the option to provide a main function (i.e., what it is) 
    
    You mean like pointing where in the menuconfig to tick it?

I mean saying at least a sentence about what it does, that with it ticked the 
image will automatically go into Python's main loop, and that without it the 
user has to provide a main that then calls _Py_UnixMain .
    
    > * It would be great to support initrd as one more Running mode, so that 
people who only want to run a simple script don't have to bother with a file 
initrd. Or does Python3 always need a filesystem to host its standard libs?
    
    From my understanding so far, there is no way of serializing the whole
    standard library in one file. You can always run just one file without
    the standard library though, if that's what you want.

Yes, I meant for simple cases that might not require the standard lib.
    
    > * Regarding the tests:
    >   - When running on KVM/QEMU, I've had to add "--" to the append line, 
both for intearctive mode and for running the tests. This should be mentioned 
in the readme.
    
    True.
    
    >   - Regarding the full test suite, some tests block (I think this is 
known to you) but users might not know this. It might be good to mention this, 
and to provide a file listing only tests that don't block.
    
    s/users/developers . As you already know, we do keep internally the
    status of all tests of the unit tests. I'd rather not to do this now,
    when it will be needed I will provide it.

Well, you mention this in the README.md, but this functionality is broken. If 
you put it in the README.md people will expect the tests to run (whether fail 
or pass), but not to block. So either make this more clear, or remove this from 
the README.md. The way it is now is confusing.
    
    >   - It might be good to mention how much memory to assign the VM in order 
for the test run to finish.
    
    Actually we don't know exactly how much memory it needs, we just assign
    all of it. But I agree that this should be in the README.

Sure, just a rough number will do, or a mention that you might need a certain 
amount for certain tests to pass.
    
    > 
    > Thanks,
    > 
    > -- Felipe
    > 
    > On 23.09.19, 11:59, "Costin Lupu" <costin.lupu@xxxxxxxxx> wrote:
    > 
    >     From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
    >     
    >     Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
    >     Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
    >     ---
    >      README.md | 42 +++++++++++++++++++++++++++++++++++++++---
    >      1 file changed, 39 insertions(+), 3 deletions(-)
    >     
    >     diff --git a/README.md b/README.md
    >     index c9544d1..d2b4868 100644
    >     --- a/README.md
    >     +++ b/README.md
    >     @@ -1,7 +1,43 @@
    >     -python3 for Unikraft
    >     -=============================
    >     -
    >     +# python3 for Unikraft
    >      This is the port of python3 for Unikraft as external library.
    >      
    >     +## Build
    >     +Python 3 interpreter depends on the following libraries, that need 
to be added to `Makefile` in this order:
    >     +* `pthreads`, e.g. `pthread-embedded`
    >     +* `libc`, e.g. `newlib`
    >     +* network stack, e.g. `lwip`
    >     +* a SIMD library, e.g. `intel-intrinsics`
    >     +* optional extensions: `openssl`, `zlib`, `libuuid`, etc
    >     +
    >     +## Root filesystem
    >     +### Creating the filesystem
    >     +Python 3 interpreter needs a filesystem which should contain its 
standard library. Therefore, the filesystem needs to be created before running 
the VM. You can do this by running the following command:
    >     +
    >     +```bash
    >     +make python-rootfs path=<some directory>
    >     +```
    >     +
    >     +It will create the filesystem in the directory you choose, by first 
creating a virtual Python environment. After that it will install the Python 
standard library into it. For this second step, the original code needs to be 
configured and build with paths relative to the provided root directory. These 
two steps are executed transparently, all you have to do is just running the 
above `make` command.
    >     +
    >     +### Using the filesystem
    >     +Mounting the filesystem is a transparent operation. All you have to 
do is to provide the right Qemu parameters in order for Unikraft to mount the 
filesystem. We will use the 9pfs support for filesystems and for this you will 
need to use the following parameters:
    >     +
    >     +```bash
    >     +-fsdev local,id=myid,path=<some directory>,security_model=none \
    >     +-device 
virtio-9p-pci,fsdev=myid,mount_tag=test,disable-modern=on,disable-legacy=off
    >     +```
    >     +
    >     +## Running modes
    >     +Next step is to pick a running mode. We currently support 3 running 
modes:
    >     +
    >     +1. **Python shell**. No extra parameters are needed
    >     +2. **Python script**. You can use any file available in the root 
filesystem. You should use Qemu's `-append` option to pass parameter to Python 
interpreter, e.g. `-append "-f <some file in rootfs>"`
    >     +3. **Python unit testing**. With this mode you can check what 
functionality is completely supported by the Python 3 port. The unit testing 
mode itself does support several modes:
    >     +    * **Running all the tests**. You have to use the following Qemu 
parameters: `-append "-B -c 'from test import autotest'"`
    >     +    * Check the supported options of the test script, e.g. `-append 
"-B -c 'from test import autotest' -h`.
    >     +       * For example, you can run only one unit test with verbosity 
using `-append "-B -c 'from test import autotest' -v test_dict"`.
    >     +       * Or you can run only the tests listed in a file using 
`-append "-B -c 'from test import autotest' -f <file in rootfs>"`.
    >     +
    >     +## Further information
    >      Please refer to the `README.md` as well as the documentation in the 
`doc/`
    >      subdirectory of the main unikraft repository.
    >     -- 
    >     2.20.1
    >     
    >     
    > 
    > _______________________________________________
    > Minios-devel mailing list
    > Minios-devel@xxxxxxxxxxxxxxxxxxxx
    > https://lists.xenproject.org/mailman/listinfo/minios-devel
    > 
    
    _______________________________________________
    Minios-devel mailing list
    Minios-devel@xxxxxxxxxxxxxxxxxxxx
    https://lists.xenproject.org/mailman/listinfo/minios-devel

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.