Automated Debian Packaging with debianize
The debianize tool aims to automatically create Debian packages from scratch for upstream source trees. While it works for some packages today, it needs significant work to become reliable and production-ready. This project focuses on improving debianize's reliability, coverage, and integration with the broader ecosystem. This addresses issue #9 on the tracker.
Confirmed Mentor: JelmerVernooij
How to contact the mentor: mail, IRC/Matrix
Confirmed co-mentors: Otto Kekalainen
Difficulty level: Hard
Project size: 350 hours (Large)
Deliverables of the project:
- Expanded test coverage for debianize across multiple programming language
- ecosystems (Python, Rust, Node.js, Ruby, Go, etc.)
- Enhanced build system detection and dependency resolution through ognibuild integration
- Better handling of edge cases: multi-binary packages, complex build requirements, native vs. non-native packages
Desirable skills: Strong knowledge of Debian packaging workflows and
- policy, Rust programming, familiarity with multiple programming language ecosystems (build tools like Cargo, npm, setuptools, bundler, etc.), experience with build systems and dependency resolution
What the intern will learn:
- Deep understanding of Debian packaging conventions, policy, and best practices
- across different language ecosystems
- How different programming languages handle dependencies, versioning, and
- builds
- Advanced Rust programming including error handling, integration with external
- Build system detection and abstraction patterns
- Metadata extraction and heuristics for inferring packaging information
- How to build reliable automation that handles diverse real-world codebases
Application tasks:
- Write a simple Rust program that parses debian/control using the debian-control crate and prints out all binary package names
Profile lintian-brush on a sample Debian package and identify how many times the same files are parsed (hint: use cargo build --release and tools like perf or strace)
- Review the existing fixer code in lintian-brush/src/fixers/ and identify 2-3 fixers that operate on the same files
Related projects:
?https://salsa.debian.org/jelmer/lintian-brush, debian-analyzer, ognibuild
AI usage Policy: AI code assistance is acceptable for exploration and learning, but the intern is expected to make all the code changes.
