11FROM trailofbits/polytracker
2- MAINTAINER Carson Harmon < [email protected] > 2+ LABEL org.opencontainers.image.authors=" [email protected] ,[email protected] " 33
44WORKDIR /polytracker/the_klondike
55
6- #Update pkg-config/util-linux (needed for FontConfig)
7- RUN apt update && apt install pkg-config \
6+ # Update pkg-config/util-linux (needed for FontConfig)
7+ # qt5 is needed for xpdf to build happily.
8+ RUN apt-get update && apt-get install -y \
9+ pkg-config \
810 uuid-dev \
911 gperf \
1012 wget \
@@ -18,89 +20,80 @@ RUN apt update && apt install pkg-config \
1820 cmake \
1921 libfreetype6-dev \
2022 libxcb-composite0-dev \
21- libxml2-dev -y
23+ libxml2-dev \
24+ qtbase5-dev
2225
23- #RUN apt-get install python3-dev
24-
25- #Fontconfig requires some stuff?
26- #RUN apt install pkg-config \libasound2-dev libssl-dev cmake libfreetype6-dev libexpat1-dev libxcb-composite0-dev -y
27- #RUN apt install libxml2-dev -y
26+ WORKDIR /polytracker/the_klondike
27+ RUN wget https://dl.xpdfreader.com/old/xpdf-4.03.tar.gz
28+ RUN tar -xvf xpdf-4.03.tar.gz
29+ ENV build_dir=/polytracker/the_klondike/xpdf-4.03
2830
2931#=================================
30- WORKDIR /polytracker/the_klondike
32+ WORKDIR $build_dir
3133
32- #FreeType http://www.linuxfromscratch.org/blfs/view/svn/general/freetype2.html
34+ # FreeType http://www.linuxfromscratch.org/blfs/view/svn/general/freetype2.html
3335RUN wget https://downloads.sourceforge.net/freetype/freetype-2.10.1.tar.xz
3436RUN tar -xvf freetype-2.10.1.tar.xz
3537
36- WORKDIR freetype-2.10.1
38+ WORKDIR $build_dir/ freetype-2.10.1
3739
38- #Some linux from scratch magic
40+ # Some linux from scratch magic
3941RUN sed -ri "s:.*(AUX_MODULES.*valid):\1:" modules.cfg
4042RUN sed -r "s:.*(#.*SUBPIXEL_RENDERING) .*:\1:" -i include/freetype/config/ftoption.h
4143RUN ./configure --prefix=/usr --enable-freetype-config
42- RUN make -j5 install
44+ RUN make -j$(nproc) install
4345
4446#=================================
45- WORKDIR /polytracker/the_klondike
47+ WORKDIR $build_dir
4648
47- #zlib
49+ # zlib
4850RUN wget https://www.zlib.net/fossils/zlib-1.2.11.tar.gz
4951RUN tar -xzvf zlib-1.2.11.tar.gz
50- WORKDIR zlib-1.2.11
51- RUN ./configure --prefix=/usr && make -j$(nproc) test && make -j$(nproc) install
52+ WORKDIR $build_dir/zlib-1.2.11
53+ RUN ./configure --prefix=/usr && \
54+ make -j$(nproc) test && \
55+ make -j$(nproc) install
5256
5357#=================================
54- WORKDIR /polytracker/the_klondike
58+ WORKDIR $build_dir
5559
56- #Libxml2
60+ # Libxml2
5761
58- RUN wget http://xmlsoft.org/sources/libxml2-2.9.10 .tar.gz
59- RUN tar -xvf libxml2-2.9.10 .tar.gz
60- WORKDIR libxml2-2.9.10
62+ RUN wget http://xmlsoft.org/sources/libxml2-2.9.11 .tar.gz
63+ RUN tar -xvf libxml2-2.9.11 .tar.gz
64+ WORKDIR $build_dir/ libxml2-2.9.11
6165RUN ./configure --disable-dependency-tracking --prefix=/usr --with-python=/usr/bin/python3
62- RUN make -j5 install
63- RUN make install
64-
66+ RUN make -j$(nproc) install
6567
6668#=================================
67- WORKDIR /polytracker/the_klondike
69+ WORKDIR $build_dir
6870
69- ## Fontconfig (depends on FreeType), note that the linux from scratch version is broken
70- #The gitlab version is up to date, and has a PR merged from a year ago with the bug fix
71- #https://gitlab.freedesktop.org/fontconfig/fontconfig/merge_requests/2/diffs?commit_id=8208f99fa1676c42bfd8d74de3e9dac5366c150c
71+ # Fontconfig (depends on FreeType), note that the linux from scratch version is broken
72+ # The gitlab version is up to date, and has a PR merged from a year ago with the bug fix
73+ # https://gitlab.freedesktop.org/fontconfig/fontconfig/merge_requests/2/diffs?commit_id=8208f99fa1676c42bfd8d74de3e9dac5366c150c
7274
7375RUN git clone https://gitlab.freedesktop.org/fontconfig/fontconfig.git
7476
75- WORKDIR fontconfig
77+ WORKDIR $build_dir/ fontconfig
7678RUN ./autogen.sh --sysconfdir=/etc --prefix=/usr --enable-libxml2 --mandir=/usr/share/man
77- RUN make -j5 install
79+ RUN make -j$(nproc) install
7880
7981#=================================
80- WORKDIR /polytracker/the_klondike
81-
82- RUN wget https://dl.xpdfreader.com/xpdf-4.03.tar.gz
83- RUN tar -xvf xpdf-4.03.tar.gz
84- WORKDIR xpdf-4.03
85- RUN mkdir build
86- WORKDIR build
87- RUN cmake -DCMAKE_BUILD_TYPE=Release ..
88- RUN make -j5 install
82+ # build, and record the build with Blight
83+ WORKDIR $build_dir/build
84+ RUN polytracker build cmake -S .. -B . -DCMAKE_BUILD_TYPE=Release
85+ RUN polytracker build make -j$(nproc) install
8986
9087#=================================
91- WORKDIR xpdf
92-
93- #Extract and instrument pdftotext, other poppler tools should work the same
94- RUN get-bc -b pdftotext
95- RUN ${CXX} --lower-bitcode -i pdftotext.bc -o pdftotext_track --libs /build_artifacts/libfofi.a /build_artifacts/libgoo.a /build_artifacts/libsplash.a freetype fontconfig pthread --lists freetype fontconfig xml2 libz
96-
97- RUN get-bc -b pdfinfo
98- RUN ${CXX} --lower-bitcode -i pdfinfo.bc -o pdfinfo_track --libs /build_artifacts/libfofi.a /build_artifacts/libgoo.a /build_artifacts/libsplash.a freetype fontconfig pthread --lists freetype fontconfig xml2 libz
99-
100-
101- RUN get-bc -b pdftops
102- RUN ${CXX} --lower-bitcode -i pdtops.bc -o pdftops_track --libs /build_artifacts/libfofi.a /build_artifacts/libgoo.a /build_artifacts/libsplash.a freetype fontconfig pthread --lists freetype fontconfig xml2 libz
103-
104- # Note, the /workdir directory is intended to be mounted at runtime
105- #VOLUME ["/workdir"]
106- #WORKDIR /workdir
88+ # Extract and instrument each tool of interest
89+ RUN polytracker extract-bc -o pdftotext.bc xpdf/pdftotext
90+ RUN polytracker instrument-bc --taint --ftrace pdftotext.bc -o pdftotext.instrumented.bc --ignore-lists freetype fontconfig xml2 libz
91+ RUN polytracker lower-bc pdftotext.instrumented.bc -t pdftotext -o pdftotext_track
92+
93+ RUN polytracker extract-bc -o pdfinfo.bc xpdf/pdfinfo
94+ RUN polytracker instrument-bc --taint --ftrace pdfinfo.bc -o pdfinfo.instrumented.bc --ignore-lists freetype fontconfig xml2 libz
95+ RUN polytracker lower-bc pdfinfo.instrumented.bc -t pdfinfo -o pdfinfo_track
96+
97+ RUN polytracker extract-bc -o pdftops.bc xpdf/pdftops
98+ RUN polytracker instrument-bc --taint --ftrace pdftops.bc -o pdftops.instrumented.bc --ignore-lists freetype fontconfig xml2 libz
99+ RUN polytracker lower-bc pdftops.instrumented.bc -t pdftops -o pdftops_track
0 commit comments