[ofa-general] Re: [PATCH 5/7 V2] osm: QoS - compiling policy file parser
Yevgeny Kliteynik
kliteyn at dev.mellanox.co.il
Thu Aug 23 05:39:08 PDT 2007
Hi Sasha,
Sasha Khapyorsky wrote:
> On 14:39 Thu 23 Aug , Yevgeny Kliteynik wrote:
>> Hi Sasha,
>>
>> Sasha Khapyorsky wrote:
>>> Yevgeny, Hi again,
>>> On 14:53 Tue 21 Aug , Yevgeny Kliteynik wrote:
>>>> Compiling QoS policy file parser.
>>>>
>>>> C & H files are generated from Lex & Yacc files and the generated files
>>>> are compiled.
>>>> Generated files are not included in git, but they do get
>>>> included in RPM as they are also created by 'make dist'.
>>>>
>>>> Signed-off-by: Yevgeny Kliteynik <kliteyn at dev.mellanox.co.il>
>>>> ---
>>>> opensm/include/Makefile.am | 2 ++
>>>> opensm/opensm/Makefile.am | 16 +++++++++++++++-
>>>> opensm/opensm/configure.in | 2 ++
>>>> 3 files changed, 19 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/opensm/include/Makefile.am b/opensm/include/Makefile.am
>>>> index ea62507..b83205f 100644
>>>> --- a/opensm/include/Makefile.am
>>>> +++ b/opensm/include/Makefile.am
>>>> @@ -90,6 +90,8 @@ EXTRA_DIST = \
>>>> $(srcdir)/opensm/osm_state_mgr_ctrl.h \
>>>> $(srcdir)/opensm/osm_perfmgr.h \
>>>> $(srcdir)/opensm/osm_perfmgr_db.h \
>>>> + $(srcdir)/opensm/osm_qos_policy.h \
>>>> + $(srcdir)/opensm/osm_qos_parser_y.h \
>>>> $(srcdir)/complib/cl_thread_osd.h \
>>>> $(srcdir)/complib/cl_packon.h \
>>>> $(srcdir)/complib/cl_atomic_osd.h \
>>>> diff --git a/opensm/opensm/Makefile.am b/opensm/opensm/Makefile.am
>>>> index 6dfa824..31e09f7 100644
>>>> --- a/opensm/opensm/Makefile.am
>>>> +++ b/opensm/opensm/Makefile.am
>>>> @@ -56,7 +56,15 @@ opensm_SOURCES = main.c osm_console.c osm_db_files.c \
>>>> osm_ucast_lash.c osm_ucast_file.c osm_ucast_ftree.c \
>>>> osm_vl15intf.c osm_vl_arb_rcv.c \
>>>> st.c osm_perfmgr.c osm_perfmgr_db.c \
>>>> - osm_event_plugin.c osm_dump.c
>>>> + osm_event_plugin.c osm_dump.c \
>>>> + osm_qos_parser_y.c osm_qos_parser_l.c osm_qos_policy.c
>>>> +
>>>> +osm_qos_parser_y.c: $(srcdir)/osm_qos_parser.y
>>>> $(srcdir)/../include/opensm/osm_qos_policy.h
>>>> + $(YACC) -y -d $(srcdir)/osm_qos_parser.y -o $(srcdir)/osm_qos_parser_y.c
>>>> --defines=$(srcdir)/../include/opensm/osm_qos_parser_y.h
>>>> --name-prefix=__qos_parser_
>>>> +
>>>> +osm_qos_parser_l.c: $(srcdir)/osm_qos_parser.l
>>>> $(srcdir)/../include/opensm/osm_qos_policy.h
>>>> + $(LEX) --prefix=__qos_parser_ -o $(srcdir)/osm_qos_parser_l.c
>>>> $(srcdir)/osm_qos_parser.l
>>>> +
>>> Should generated files be cleaned somewhere?
>> Good question...
>> Should they?
>
> Of course - any generated stuff should be cleaned somehow.
>
>> I'm not sure. I wouldn't want someone who took the RPM with
>> these files removing the generated files with something like "make clean",
>> and then failing to compile opensm because he doesn't have lex or yacc.
>
> Sure, 'make clean' would be bad choice. But something like
> MAINTAINERCLEANFILES?
OK, I'll take care of this - I'll send in in a separate patch later.
>>>> if OSMV_OPENIB
>>>> opensm_CFLAGS = -Wall $(OSMV_CFLAGS) -fno-strict-aliasing
>>>> -DVENDOR_RMPP_SUPPORT -DDUAL_SIDED_RMPP $(DBGFLAGS) -D_XOPEN_SOURCE=600
>>>> -D_BSD_SOURCE=1
>>>> opensm_CXXFLAGS = -Wall $(OSMV_CFLAGS) -DVENDOR_RMPP_SUPPORT
>>>> -DDUAL_SIDED_RMPP $(DBGFLAGS) -D_XOPEN_SOURCE=600 -D_BSD_SOURCE=1
>>>> @@ -104,3 +112,9 @@ install-exec-hook:
>>>> if test -L $(DESTDIR)/$(libdir)/libopensm-$(VERSION).so; then rm
>>>> $(DESTDIR)/$(libdir)/libopensm-$(VERSION).so; fi; \
>>>> lname=`\ls -l $(DESTDIR)/$(libdir)/libopensm.so | awk '{print $$NF}'`; \
>>>> ln -s $$lname $(DESTDIR)/$(libdir)/libopensm-$(VERSION).so
>>>> +
>>>> +# generate c and h files from the lex and yacc files
>>>> +dist-hook: $(srcdir)/osm_qos_parser.y $(srcdir)/osm_qos_parser.l
>>>> + $(YACC) -y -d $(srcdir)/osm_qos_parser.y -o $(srcdir)/osm_qos_parser_y.c
>>>> --defines=$(srcdir)/../include/opensm/osm_qos_parser_y.h
>>>> --name-prefix=__qos_parser_
>>>> + $(LEX) --prefix=__qos_parser_ -o $(srcdir)/osm_qos_parser_l.c
>>>> $(srcdir)/osm_qos_parser.l
>>>> +
>>> Will simpler 'dist-hook' like this
>>> dist-hook: osm_qos_parser_y.c osm_qos_parser_l.c
>>> be fine here?
>> Good idea.
>> I'll repost the patch.
>>
>>>> diff --git a/opensm/opensm/configure.in b/opensm/opensm/configure.in
>>>> index afb20b3..a49538d 100644
>>>> --- a/opensm/opensm/configure.in
>>>> +++ b/opensm/opensm/configure.in
>>>> @@ -22,6 +22,8 @@ AC_PROG_INSTALL
>>>> AC_PROG_LN_S
>>>> AC_PROG_MAKE_SET
>>>> AC_PROG_LIBTOOL
>>>> +AM_PROG_LEX
>>>> +AC_PROG_YACC
>>> With tarball where *.c files are generated already we will not need lex
>>> and yacc (OTOH it is needed for "regular" (or "maintainer-mode") build).
>>> Any idea how to avoid this dependencies for tarball builds?
>> I read some stuff on the net, and looks like "configure" doesn't fail if
>> AM_PROG_LEX and AC_PROG_YACC fail to find targets.
>> But I didn't check it yet - didn't have time or machine w/o lex and yacc.
>
> It is risky if it is not "official" feature. I would prefer to get build
> failure on my machine due to not installed lex, but not put extra
> dependencies for tarball builds. Probably it is better just to remove
> this deps.
OK, agree.
We will remove them till I have more info on this.
Do you want me to repost the patch or you can just remove these lines
as you apply it?
-- Yevgeny
> Sasha
>
More information about the general
mailing list