Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ac8846e

Browse files
committed
xpdf: make everything work with modern polytracker, but a bit bigger and uglier than I'd prefer
1 parent 7c4ee06 commit ac8846e

1 file changed

Lines changed: 50 additions & 57 deletions

File tree

examples/Dockerfile-xpdf.demo

Lines changed: 50 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
FROM trailofbits/polytracker
2-
MAINTAINER Carson Harmon <[email protected]>
2+
LABEL org.opencontainers.image.authors="[email protected],[email protected]"
33

44
WORKDIR /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
3335
RUN wget https://downloads.sourceforge.net/freetype/freetype-2.10.1.tar.xz
3436
RUN 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
3941
RUN sed -ri "s:.*(AUX_MODULES.*valid):\1:" modules.cfg
4042
RUN sed -r "s:.*(#.*SUBPIXEL_RENDERING) .*:\1:" -i include/freetype/config/ftoption.h
4143
RUN ./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
4850
RUN wget https://www.zlib.net/fossils/zlib-1.2.11.tar.gz
4951
RUN 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
6165
RUN ./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

7375
RUN git clone https://gitlab.freedesktop.org/fontconfig/fontconfig.git
7476

75-
WORKDIR fontconfig
77+
WORKDIR $build_dir/fontconfig
7678
RUN ./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

Comments
 (0)