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

>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




Reply via email to