On 12/9/15, 11:31 AM, "dev on behalf of Wiles, Keith" <dev-bounces at dpdk.org 
on behalf of keith.wiles at intel.com> wrote:

>On 12/9/15, 10:19 AM, "Thomas Monjalon" <thomas.monjalon at 6wind.com> wrote:

BTW, I am not overly concerned about the build system per say I just wish I had 
put my $0.02 worth in before the change. We can leave as it is now.

The test-build.sh script build does appear to be a real problem. I would like 
to understand why it does not work. Adding a better help message should be an 
easy fix for someone that wrote the script or I can make the changes, just let 
me know.

>
>>2015-12-09 15:32, Wiles, Keith:
>>> On 12/9/15, 8:59 AM, "Thomas Monjalon" <thomas.monjalon at 6wind.com> wrote:
>>> 
>>> >2015-12-09 14:39, Wiles, Keith:
>>> >> I am having a problem with ?make install T=? command as I was using it 
>>> >> before. I would normally build a x86_64-native-linuxapp-gcc, clang and 
>>> >> icc or a different config all together. Currently the ?make install T=? 
>>> >> gives a warning message at the end of the build plus creates the 
>>> >> x86_64-native-linuxapp-XXX directory. If I use the suggested ?make 
>>> >> config T=? command this command create a directory ?build? with a 
>>> >> .config file. The problem is this method does not allow me to have 
>>> >> multiple builds at the same time.
>>> >> 
>>> >> What is the suggested method to have multiple builds without installing  
>>> >> into the local file system?
>>> >
>>> >The multiple build is not supported anymore. It was only building with
>>> >the default configuration.
>>> >If you want to test various builds, I suggest to use this script:
>>> >   scripts/test-build.sh
>>> >   http://dpdk.org/browse/dpdk/commit/?id=cd31ca579c
>>> 
>>> Having a build script is great, but it give me an error on building. The 
>>> script does not have a ?help option and the unknown option is not very 
>>> usefulas it does not explain the two option -jX and -s in that output 
>>> message. I would have expected a bit more help instructions on using this 
>>> command and adding a -h or ?help would be useful. 
>>
>>Please check.
>>There is a -h option.
>
>The -h option gives the same output as the a unknown option:
>
>rkwiles at rkwiles-supermicro (master):~/.../intel/dpdk$ 
>./scripts/test-build.sh -h
>usage: test-build.sh [-jX] [-s] [config1 [config2] ...]]
>rkwiles at rkwiles-supermicro (master):~/.../intel/dpdk$ 
>
>
>My point was more around the content of the help as it is not very useful as 
>to what the -jX or -s options are, please add more help information as ?man 
>test-build.sh? does not work :-)
>
>>
>>> The error I get from the following command is: './scripts/test-build.sh 
>>> x86_64-native-linuxapp-gcc? building on a Ubuntu 15.10 with all patches. If 
>>> I use ?make install T=x86_64-native-linuxapp-gcc? this command builds 
>>> correctly with the warning at the end.
>>[...]
>>> /work/home/rkwiles/projects/intel/dpdk/lib/librte_eal/linuxapp/eal/eal_pci.c:
>>>  In function \u2018pci_config_extended_tag\u2019:
>>> /work/home/rkwiles/projects/intel/dpdk/lib/librte_eal/linuxapp/eal/eal_pci.c:505:2:
>>>  error: ignoring return value of \u2018fgets\u2019, declared with attribute 
>>> warn_unused_result [-Werror=unused-result]
>>>   fgets(buf, sizeof(buf), f);
>>>   ^
>>
>>It is a compilation error, not related to the script.
>
>This is strange the ?make install T=? command just works, how do you explain 
>that problem.
>The test-build.sh script should be do some setup then ?make config T= ; make? 
>so why is this script not working?
>
>The script should work as expected with ?./scripts/test-build.sh 
>x86_64-native-linuxapp-gcc? correct?
>
>Could be something wrong with my system, but I doubt it.
>
>>
>>> >If you just want to compile, it is simple:
>>> >   make config T=x86_64-native-linuxapp-gcc O=my-gcc-build
>>> >   make O=my-gcc-build
>>> 
>>> IMO we have gone backwards in making DPDK easy to build. I agree using 
>>> ?make install T=? may not be the best solution as ?install? implies we are 
>>> installing the code. I agree not we should not try to build multiple 
>>> configuration with one command, but we should be able to do ?make build 
>>> T=x86_64-native-linuxapp-gcc? to replace the ?make install T=? command. Now 
>>> the developer only needs to type one command with to build a configuration 
>>> and not two. If the developer includes the ?O=? option then the command 
>>> should create that directory and build the configuration into that 
>>> directory. For the 80% rule the ?O=? option should not be required.
>>
>>The O= option is not required.
>>The new syntax is closer to the standard behaviour.
>>You just don't want to type "make config" because you are using a default
>>configuration.
>
>I understand the O= option is not required. I would have liked it to pick the 
>closest configuration to the host system if x86-64 then pick 
>x86_64-native-linuxapp-gcc GCC is the normal default compiler, if a ARM-v7 
>system then pick the correct configuration or powerpc ?
>If they want something else then let them use the ?T=? option. This would have 
>been a nice to have feature, but not a requirement.
>
>>
>>> The ?make config T= O=? then ?make O=? series of commands are not required, 
>>> even the ?config? keyword is not required and just an extra step we do not 
>>> need. What does the ?config? target really add to the made other then 
>>> creating the ?build? directory and a config file. I believe the ?build? 
>>> directory should be dropped/removed all together and just require the ?T=? 
>>> and/or the ?O=? if they really want to define a different output directory.
>>
>>Between "make config" and "make" you can modify the configuration.
>>In the next release, "make config" will be wrapped by a "configure" script
>>which will allow to configure your target in one line.
>>So we will end up with:
>>      ./configure
>>      make
>>      make install
>>It may be weird to you but it is standard to others.
>
>I understand the above configure steps and yes it is nice to have, the only 
>problem is we do not have a real automake-autolib configuration system.
>
>Personally I would not use automake-autolib as it requires more system 
>resources and different version cause different problems plus M4 maybe a great 
>language, but not very friendly. The current DPDK build system just requires 
>make and a shell, which is very common plus very simple to install. If 
>cross-compiling it will be harder to get all of the tools in place to support 
>a real automake system on a embedded environment. Cross-compiling has its own 
>problems to address.
>
>I would like to have the above configure style support, but making the build 
>system a bit more complex is not the answer IMO.
>
>We should never try to build multiple configurations at the same time without 
>using some type of script as the test-build.sh.
>
>Being able to have a very simple build is great and the above steps are great 
>if you have a configure script/build system.
>
>I would like to see done:
> - The ?build? directory is nothing special and we should not use ?build' as a 
> default directory name, but use the configuration name i.e. 
> x86_64-native-linuxapp-gcc or the ?O=? option. Not using ?build? this will 
> simplify the places objects are created using a common scheme, we require a 
> configuration name for the build directory always.
> - If we do not attempt to build a default host based configuration then we 
> must require the ?T=? option in the below commands I assume a we do not have 
> default.
>
>       $ make config T=? [O=?]      # Just creates the build directory and 
> .config file as it does today. (Possible default build configuration)
>       $ make [build] T=? [O=?]     # optional ?T=? option but that would 
> require the build to build all configuration directories which is not desired.
>                                     # Just a 'make? assume ?make build?
>       $ make install [T=?] [O=?]   # installs a possible default or uses the 
> T= configuration. If the configuration directory does not exist then if does 
> a build first.
>
>Using the following we can still have the ./configure above.
>       $ ./configure
>       $ make [build]
>       $ make install       # or just make install without the ?make?/?make 
> build'
>
>Sorry, I missed the original emails as I was very busy and then on vacation.
>
>>
>
>
>Regards,
>Keith
>
>
>
>
>


Regards,
Keith




Reply via email to