69 lines
2.5 KiB
Docker
69 lines
2.5 KiB
Docker
# SPDX-License-Identifier: MIT
|
|
# Copyright (C) 2024 Andrew Quijano
|
|
# Contact: andrewquijano92@gmail.com
|
|
ARG VERSION=""
|
|
|
|
# Run in the root of the repo
|
|
# docker build -f ./packages/deb/Dockerfile -t packager .
|
|
FROM debian:bookworm-slim
|
|
|
|
# Install necessary tools for packaging
|
|
RUN apt-get -qq update && \
|
|
DEBIAN_FRONTEND=noninteractive apt-get -qq install -y \
|
|
fakeroot dpkg-dev dos2unix cmake
|
|
|
|
# Copy project files into the container
|
|
RUN mkdir /capstone
|
|
COPY . /capstone
|
|
WORKDIR /capstone/
|
|
|
|
# Using cmake, see BUILDING.md file
|
|
# For debug build change "Release" to "Debug"
|
|
ARG VERSION
|
|
RUN cmake -B build -DCMAKE_BUILD_TYPE=Release -DCAPSTONE_BUILD_SHARED_LIBS=1 -DPROJECT_VERSION=${VERSION} -DCMAKE_INSTALL_PREFIX=/usr
|
|
RUN cmake --build build
|
|
|
|
# List files before cmake install
|
|
# RUN find / -type f > /before-install.txt
|
|
|
|
# Make directories as needed
|
|
RUN mkdir -p /package-root/usr/include/capstone/
|
|
RUN mkdir -p /package-root/usr/lib/pkgconfig/
|
|
RUN mkdir -p /package-root/usr/bin/
|
|
RUN mkdir -p /package-root/usr/share/doc/libcapstone-dev
|
|
|
|
# Run cmake install
|
|
RUN cmake --install build --prefix /package-root/usr/
|
|
|
|
# List files after cmake install
|
|
# RUN find / -type f > /after-install.txt
|
|
|
|
# Create DEBIAN directory and control file
|
|
COPY ./packages/deb/control /package-root/DEBIAN/control
|
|
|
|
# Copy documentation over
|
|
COPY ./LICENSES/ /package-root/usr/share/doc/libcapstone-dev/LICENSES/
|
|
COPY ./ChangeLog /package-root/usr/share/doc/libcapstone-dev
|
|
COPY ./CREDITS.TXT /package-root/usr/share/doc/libcapstone-dev
|
|
COPY ./README.md /package-root/usr/share/doc/libcapstone-dev
|
|
COPY ./SPONSORS.TXT /package-root/usr/share/doc/libcapstone-dev
|
|
|
|
# Generate MD5 checksums for all files and save to DEBIAN/md5sums
|
|
RUN cd /package-root && \
|
|
find . -type f ! -path './DEBIAN/*' -exec md5sum {} + | sed 's| \./| |' > /package-root/DEBIAN/md5sums
|
|
|
|
# Update control file with the correct information
|
|
ARG VERSION
|
|
RUN INSTALLED_SIZE=$(du -sk /package-root | cut -f1) && \
|
|
sed -i "s/^Installed-Size:.*/Installed-Size: ${INSTALLED_SIZE}/" /package-root/DEBIAN/control
|
|
RUN sed -i "s/^Version:.*/Version: ${VERSION}/" /package-root/DEBIAN/control
|
|
|
|
# Add triggers script to run ldconfig after installation
|
|
COPY ./packages/deb/triggers /package-root/DEBIAN/triggers
|
|
|
|
# Build the package
|
|
RUN fakeroot dpkg-deb --build /package-root /libcapstone-dev_${VERSION}_amd64.deb
|
|
|
|
# The user can now extract the .deb file from the container with something like
|
|
# docker run --rm -v $(pwd):/out packager bash -c "cp /libcapstone-dev.deb /out"
|