Re: [PATCH v2 5/5] kconfig: refactor ncurses package checks for building nconf

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

 



Randy,


2018-05-21 15:24 GMT+09:00 Randy Dunlap <rdunlap@xxxxxxxxxxxxx>:
> On 05/20/2018 09:58 PM, Masahiro Yamada wrote:
>> 2018-05-21 13:51 GMT+09:00 Randy Dunlap <rdunlap@xxxxxxxxxxxxx>:
>>> On 05/20/2018 09:48 PM, Masahiro Yamada wrote:
>>>> 2018-05-21 8:41 GMT+09:00 Randy Dunlap <rdunlap@xxxxxxxxxxxxx>:
>>>>> On 05/20/2018 01:16 AM, Masahiro Yamada wrote:
>>>>>> Building nconf requires ncurses, but its presence is not checked.
>>>>>> Check and configure necessary packages by a shell script like the
>>>>>> other GUI frontends.
>>>>>>
>>>>>> Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx>
>>>>>> ---
>>>>>>
>>>>>
>>>>>> diff --git a/scripts/kconfig/nconf-cfg.sh b/scripts/kconfig/nconf-cfg.sh
>>>>>> new file mode 100644
>>>>>> index 0000000..8eb7948
>>>>>> --- /dev/null
>>>>>> +++ b/scripts/kconfig/nconf-cfg.sh
>>>>>> @@ -0,0 +1,34 @@
>>>>>> +#!/bin/sh
>>>>>> +# SPDX-License-Identifier: GPL-2.0
>>>>>> +
>>>>>> +PKG="ncursesw menuw panelw"
>>>>>> +PKG2="ncurses menu panel"
>>>>>> +
>>>>>> +if pkg-config --exists $PKG; then
>>>>>> +     echo libs=\"$(pkg-config --libs $PKG)\"
>>>>>> +     exit 0
>>>>>> +fi
>>>>>> +
>>>>>> +if pkg-config --exists $PKG2; then
>>>>>> +     echo libs=\"$(pkg-config --libs $PKG2)\"
>>>>>> +     exit 0
>>>>>> +fi
>>>>>> +
>>>>>
>>>>> I guess this one needs clags, especially -I, like the mconf patch contains...
>>>>
>>>>
>>>>
>>>> I thought so.
>>>>
>>>> But, the current scripts/kconfig/Makefile
>>>> adds 'pkg-config --libs' to nconf,
>>>> but does nothing about 'pkg-config --cflags' for nconf.
>>>> Therefore, I kept the current behavior just in case.
>>>>
>>>>
>>>> The nconfig in the current version is not working for you, right?
>>>
>>> That's correct.
>>>
>>>
>>> Info:
>>>
>>> $ make ARCH=x86_64 O=xx64 nconfig
>>> make[1]: Entering directory '/home/rdunlap/lnx/next/linux-next-20180517/xx64'
>>>   GEN     ./Makefile
>>>   UPD     scripts/kconfig/.nconf-cfg
>>>   HOSTCC  scripts/kconfig/nconf.o
>>> In file included from ../scripts/kconfig/nconf.c:15:0:
>>> ../scripts/kconfig/nconf.h:19:18: fatal error: menu.h: No such file or directory
>>>  #include <menu.h>
>>>                   ^
>>> compilation terminated.
>>> scripts/Makefile.host:107: recipe for target 'scripts/kconfig/nconf.o' failed
>>> make[2]: *** [scripts/kconfig/nconf.o] Error 1
>>> /home/rdunlap/lnx/next/linux-next-20180517/Makefile:525: recipe for target 'nconfig' failed
>>> make[1]: *** [nconfig] Error 2
>>> make[1]: Leaving directory '/home/rdunlap/lnx/next/linux-next-20180517/xx64'
>>> Makefile:146: recipe for target 'sub-make' failed
>>> make: *** [sub-make] Error 2
>>>
>>>
>>> xx64/scripts/kconfig/.nconf-cfg contains:
>>> libs="-lncursesw -lmenuw -lpanelw"
>>>
>>
>> Sorry, I mean
>> the nconfig in the Linus tree is not working, right?
>
> It works just fine.  In a new linux-4.17-rc6 tree:
>
> $ make ARCH=x86_64 O=xx64 V=1 nconfig
> make -C /home/rdunlap/lnx/lnx-417-rc6/xx64 KBUILD_SRC=/home/rdunlap/lnx/lnx-417-rc6 \
> -f /home/rdunlap/lnx/lnx-417-rc6/Makefile nconfig
> make[1]: Entering directory '/home/rdunlap/lnx/lnx-417-rc6/xx64'
> make -f ../scripts/Makefile.build obj=scripts/basic
> rm -f .tmp_quiet_recordmcount
> ln -fsn .. source
> /bin/sh ../scripts/mkmakefile \
>     .. . 4 17
>   GEN     ./Makefile
> make -f ../scripts/Makefile.build obj=scripts/kconfig nconfig
>   gcc -Wp,-MD,scripts/kconfig/.nconf.o.d -Iscripts/kconfig -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89  -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE -c -o scripts/kconfig/nconf.o ../scripts/kconfig/nconf.c
>   gcc -Wp,-MD,scripts/kconfig/.nconf.gui.o.d -Iscripts/kconfig -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89  -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE -c -o scripts/kconfig/nconf.gui.o ../scripts/kconfig/nconf.gui.c
>   gcc  -o scripts/kconfig/nconf scripts/kconfig/nconf.o scripts/kconfig/zconf.tab.o scripts/kconfig/nconf.gui.o  -lmenu -lpanel -lncurses
> scripts/kconfig/nconf  Kconfig
> make[1]: Leaving directory '/home/rdunlap/lnx/lnx-417-rc6/xx64'
>

Ah, I see.

The output from check-lxdialog.sh is passed
to all objects:


# lxdialog stuff
check-lxdialog  := $(srctree)/$(src)/lxdialog/check-lxdialog.sh

# Use recursively expanded variables so we do not call gcc unless
# we really need to do so. (Do not call gcc as part of make mrproper)
HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \
                    -DLOCALE





In fact, the ncurses options are passed even to the text-based
scripts/kconfig/conf.



masahiro@pug:~/ref/linux$ make V=1 oldconfig
make -f ./scripts/Makefile.build obj=scripts/basic
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=scripts/kconfig oldconfig
  gcc -Wp,-MD,scripts/kconfig/.conf.o.d -Wall -Wmissing-prototypes
-Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89
-D_GNU_SOURCE -I/usr/include/ncursesw -DCURSES_LOC="<ncurses.h>"
-DNCURSES_WIDECHAR=1 -DLOCALE   -c -o scripts/kconfig/conf.o
scripts/kconfig/conf.c
  bison -oscripts/kconfig/zconf.tab.c -t -l scripts/kconfig/zconf.y
  flex -oscripts/kconfig/zconf.lex.c -L scripts/kconfig/zconf.l
  gcc -Wp,-MD,scripts/kconfig/.zconf.tab.o.d -Wall
-Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
-std=gnu89    -D_GNU_SOURCE -I/usr/include/ncursesw
-DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE
-Iscripts/kconfig -c -o scripts/kconfig/zconf.tab.o
scripts/kconfig/zconf.tab.c
  gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o
scripts/kconfig/zconf.tab.o
scripts/kconfig/conf  --oldconfig Kconfig



I am fixing it, but forgot to mention that in my commit log.

Thanks!




-- 
Best Regards
Masahiro Yamada
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux