This guide explains how to build a Debian package (.deb file) for PYHDL.
- Python 3.7 or higher
- dpkg-deb tool (comes with Debian/Ubuntu systems)
- Make (optional, for using Makefile)
# Using the build script
chmod +x build_deb.sh
./build_deb.sh
# Or using Makefile
make deb- Install WSL if not already installed
- Run the PowerShell script:
.\build_deb.ps1
docker run -it --rm -v "$(pwd):/workspace" -w /workspace debian:stable bash
apt-get update && apt-get install -y dpkg-dev
chmod +x build_deb.sh
./build_deb.shIf you want to understand the build process:
-
Clean build directories
rm -rf build dist *.egg-info deb_package -
Create package structure
mkdir -p deb_package/pyhdl_0.1.0_amd64/usr/lib/python3/dist-packages mkdir -p deb_package/pyhdl_0.1.0_amd64/usr/bin mkdir -p deb_package/pyhdl_0.1.0_amd64/DEBIAN
-
Copy source files
cp -r src/* deb_package/pyhdl_0.1.0_amd64/usr/lib/python3/dist-packages/ -
Copy DEBIAN control files
cp debian/control deb_package/pyhdl_0.1.0_amd64/DEBIAN/ cp debian/copyright deb_package/pyhdl_0.1.0_amd64/DEBIAN/ cp debian/postinst deb_package/pyhdl_0.1.0_amd64/DEBIAN/ chmod +x deb_package/pyhdl_0.1.0_amd64/DEBIAN/postinst
-
Create executable link
ln -sf /usr/lib/python3/dist-packages/tokenizer.py \ deb_package/pyhdl_0.1.0_amd64/usr/bin/pyhdl -
Set permissions
find deb_package/pyhdl_0.1.0_amd64 -type f -name '*.py' -exec chmod 644 {} \;
-
Build the package
dpkg-deb --build deb_package/pyhdl_0.1.0_amd64 pyhdl_0.1.0-1_amd64.deb
After building:
sudo dpkg -i pyhdl_0.1.0-1_amd64.deb
sudo apt-get install -f # Fix any missing dependenciespyhdl --helpMake sure to run with appropriate permissions:
chmod +x build_deb.sh debian/postinstInstall build tools:
sudo apt-get update
sudo apt-get install dpkg-dev build-essentialWhen installing the package:
sudo dpkg -i pyhdl_0.1.0-1_amd64.deb
sudo apt-get install -fdeb_package/
└── pyhdl_0.1.0_amd64/
├── DEBIAN/
│ ├── control # Package metadata
│ ├── copyright # License info
│ └── postinst # Post-install script
├── usr/
│ ├── bin/
│ │ └── pyhdl # Symlink to tokenizer.py
│ └── lib/
│ └── python3/
│ └── dist-packages/
│ ├── __init__.py
│ ├── tokenizer.py
│ └── trans.py