tcpdump mailing list archives

Re: Need precompiled source files in libpcap


From: Yang Luo <hsluoyb () gmail com>
Date: Thu, 30 Jun 2016 12:59:13 -0700

On Thu, Jun 30, 2016 at 12:36 PM, Yang Luo <hsluoyb () gmail com> wrote:

Hi Guy,

On Sat, Jun 25, 2016 at 12:09 AM, Guy Harris <guy () alum mit edu> wrote:

On Jun 24, 2016, at 8:58 PM, Yang Luo <hsluoyb () gmail com> wrote:

I found that there are a lot of “precompiled source code files" like
grammar.c, scanner.c, grammar.h, ,scanner.h, etc. (which are also listed in
.gitignore). They are NOT contained in the libpcap repo.

I personally want to ship them in the "Win32-Extensions" folder of the
Npcap repo, so the Npcap developers can just build the "libpcap.sln"
project with one click, and will get the wpcap.dll.

Do you think this is a good idea? Or Windows developers should also
build everything from the bottom?

You can either

        1) install Flex and Bison yourself, use them to build those
files, and ship them with the Npcap source (along with the .y and .l files!)

or

        2) require that developers install Flex and Bison.

You will need Flex 2.5.31 or later.  See, for example

        https://sourceforge.net/projects/winflexbison/

for Flex and Bison for Windows.


OK. I will choose option 2). Npcap developers should install Flex and
Bison on their own machine and generate those files by their own hands.
Now I have installed the latest Win-Flex-Bison on my own machine:)



I noticed this docs:
https://github.com/the-tcpdump-group/libpcap/blob/master/INSTALL.txt,
and it seems to require to run "./configure" (a shell script), which is for
Linux. So I think there's no Windows alternative config command for now?

The autoconf script is UN*X-only.  (It's not "for Linux", it's for Linux
and OS X and FreeBSD and NetBSD and OpenBSD and DragonFly BSD and Solaris
and HP-UX and AIX and even, assuming it still works, older dead UN*Xes.)

We also support CMake:

        https://cmake.org

on both UN*X *and* Windows.


OK then. I think I will first create a bat file to do the work.
I have created a file named "prebuild.bat" in "libpcap\Win32", it contains
two lines:

win_flex -Ppcap_ -7 --outfile=..\scanner.c --header-file=..\scanner.h
..\scanner.l
win_bison -ppcap_ --yacc --output=..\grammar.c --defines ..\grammar.y

But I encountered an issue here, the built out scanner.h and scanner.c
will report these errors:

1>  gencode.c
1>..\scanner.h(239): fatal error C1083: Cannot open include file:
'unistd.h': No such file or directory
1>  grammar.c
1>..\scanner.h(239): fatal error C1083: Cannot open include file:
'unistd.h': No such file or directory
1>..\scanner.c(2787): fatal error C1083: Cannot open include file:
'unistd.h': No such file or directory

It seems that these generated source files want to include a UN*X only
file "unistd.h", which is not available on Windows, like you said in the
next reply. I think I need to switch some options to let Flex not use
"unistd.h", how to do it?


OK. I found the solution. I changed the bat to:

win_flex -Ppcap_ -7 --nounistd --outfile=..\scanner.c
--header-file=..\scanner.h ..\scanner.l
win_bison -ppcap_ --yacc --output=..\grammar.c --defines ..\grammar.y

And Flex won't let the generated source filess require "unistd.h" any more.



When this bat is done, I think I will make MSVC run this bat every time
before a build process starts, is this solution OK for you?




And installing flex and bison for Windows are not also very friendly.

        https://twitter.com/geraldcombs/status/735870968451629056


In fact I didn't catch the meaning very well.. What's a "IKEA motorcycle
engine"? I think "IKEA" is a furniture vendor? What does it has to do with
the motorcycle engine? Does it mean that building open source on Windows is
very painful and inconvenient?


Cheers,
Yang





And I think those source files are less likely to change as frequently
as other sources.

That is not necessarily true.  Any time new operators are added to the
packet filter language, either scanner.l or grammar.y or both will be
changed.


I think just ship them in Npcap repo will be a good idea?

We won't be putting the generated versions into the libpcap repository,
and I would *not* recommend putting them into the Npcap repository.  *If*
you want to provide the generated source files in the Npcap source release,
as they're provided in libpcap source releases, I would recommend that you
generate them as part of the process of building an Npcap source release.



_______________________________________________
tcpdump-workers mailing list
tcpdump-workers () lists tcpdump org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Current thread: