[ofa-general] Re: [PATCH 5/7 V2] osm: QoS - compiling policy file parser
Sasha Khapyorsky
sashak at voltaire.com
Thu Aug 23 05:59:51 PDT 2007
On 15:39 Thu 23 Aug , Yevgeny Kliteynik wrote:
> 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?
I can remove, but anyway this patch should be applied only after 2,3,4.
I think '3' should be improved and content of '2' requires global stuff
which is in '3'... '4' looks fine, but useless without the rest.
So it is up to you - to repost this patch, drop subsequent patch or just
remind me if I will forget to remove :).
Sasha
More information about the general
mailing list