angle/tools/flex-bison
Yuxin Hu 1e1505b53c Upgrade Python scripts from Python2 to Python3
Bug: angleproject:5707
Change-Id: I2c00ef7e7cb529eab2be61378c9a5511a69acd1a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3486298
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
2022-02-24 21:10:41 +00:00
..
linux Update flex and bison binaries for Linux. 2019-11-29 15:40:05 +00:00
third_party Automatically call flex/bison if necessary 2019-12-03 19:29:42 +00:00
windows Update flex and bison binaries for Windows. 2019-11-29 15:50:45 +00:00
README.md Infrastructure for uploading flex/bison binaries 2019-11-29 14:56:05 +00:00
update_flex_bison_binaries.py Upgrade Python scripts from Python2 to Python3 2022-02-24 21:10:41 +00:00

README.md

flex and bison binaries

This folder contains the flex and bison binaries. We use these binaries to generate the ANGLE translator's lexer and parser.

Use the script update_flex_bison_binaries.py to update the versions of these binaries in cloud storage. It must be run on Linux or Windows. It will update the SHAs for your platform. After running the script run git commit and then git cl upload to code review using the normal review process. You will also want to run scripts/run_code_generation.py to update the generated files.

Please update both Windows and Linux binaries at the same time. Use two CLs. One for each platform. Note that we don't currently support Mac for generating the lexer and parser files. If we do we should add a flex/bison download for Mac as well.

Contact jmadill or syoussefi for any help with updating the binaries.

Updating flex and bison binaries

This is expected to be a rare operation, and is currently done based on the following instructions. Note: get the binaries first on windows, as only a single option is available, then build the binaries for the same version on Linux.

On Windows

Install MSys2 (x86_64) from http://www.msys2.org/ on Windows. flex should already be installed. Install bison:

$ pacman -S bison

Note the versions of flex and bison so the same versions can be build on Linux. For example:

$ flex --version
flex 2.6.4

$ bison --version
bison (GNU Bison) 3.3.2

The only dependencies from MSys2 should be the following:

msys-intl-8.dll
msys-iconv-2.dll
msys-2.0.dll

This can be verified with:

$ ldd /usr/bin/flex
$ ldd /usr/bin/bison

Additionally, we need the binary for m4 at /usr/bin/m4.

Copy all these 5 files to this directory:

$ cd angle/
$ cp /usr/bin/flex.exe \
     /usr/bin/bison.exe \
     /usr/bin/m4.exe \
     /usr/bin/msys-intl-8.dll \
     /usr/bin/msys-iconv-2.dll \
     /usr/bin/msys-2.0.dll \
     tools/flex-bison/windows/

Upload the binaries:

$ cd angle/
$ python tools/flex-bison/update_flex_bison_binaries.py

On Linux

# Get the source of flex
$ git clone https://github.com/westes/flex.git
$ cd flex/
# Checkout the same version as msys2 on windows
$ git checkout v2.6.4
# Build
$ autoreconf -i
$ mkdir build && cd build
$ ../configure CFLAGS="-O2 -D_GNU_SOURCE"
$ make -j
# Get the source of bison
$ curl http://ftp.gnu.org/gnu/bison/bison-3.3.2.tar.xz | tar -xJ
$ cd bison-3.3.2
# Build
$ mkdir build && cd build
$ ../configure CFLAGS="-O2"
$ make -j

Note: Bison's home page lists ftp server and other mirrors. If the above link is broken, replace with a mirror.

Copy the 2 executables to this directory:

$ cd angle/
$ cp /path/to/flex/build/src/flex \
     /path/to/bison/build/src/bison \
     tools/flex-bison/linux/

Upload the binaries:

$ cd angle/
$ python tools/flex-bison/update_flex_bison_binaries.py