File: README.md

package info (click to toggle)
debian-codemods 0.174
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,588 kB
  • sloc: makefile: 900; xml: 119; python: 80; sh: 71; javascript: 3
file content (85 lines) | stat: -rw-r--r-- 3,133 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# debianize

Create Debian packaging from upstream sources.

`debianize` automatically generates a `debian/` directory for upstream projects,
detecting the build system, extracting metadata, and producing standard Debian
packaging files (`debian/control`, `debian/changelog`, `debian/rules`, etc.).

It supports a wide range of build systems and languages, including Python
(setup.py/pyproject.toml), Rust (Cargo), Node.js (npm), Java (Maven), Go,
Perl, CMake, Autotools, and more.

## Status

**Experimental** — generated packaging is often incomplete and may require
manual adjustments before it is fully buildable.

## Usage

```sh
# Debianize the current directory
debianize

# Debianize from a specific upstream branch
debianize --upstream https://github.com/example/project

# Package the latest release rather than a snapshot
debianize --release

# Build in an isolated environment
debianize --session unshare

# Iteratively fix build failures
debianize --iterate-fix

# Recursively package missing dependencies
debianize --recursive
```

### Key options

| Option | Description |
|--------|-------------|
| `--directory PATH` | Target directory (default: current) |
| `--upstream URL` | Upstream branch location |
| `--release` | Package latest release instead of snapshot |
| `--upstream-version VERSION` | Specify upstream version explicitly |
| `--session [plain\|schroot\|unshare]` | Build isolation type |
| `--trust` | Allow running code from the package |
| `--iterate-fix` / `-x` | Run deb-fix-build to iteratively fix build issues |
| `--install` / `-i` | Build and install the package |
| `--recursive` / `-r` | Package missing dependencies too |
| `--team EMAIL` | Set maintainer team |
| `--buildsystem NAME` | Force a specific build system |

## Library usage

The crate can also be used as a library:

```rust
use debianize::{debianize, DebianizePreferences};
```

The main entry point is the `debianize()` function, which takes a working tree,
preferences, upstream metadata, and an upstream branch, and returns a
`DebianizeResult`.


## Contributing to debianize

To contribute to debianize you need to create a fork for the [upstream](https://salsa.debian.org/jelmer/debian-codemods.git) and create a new branch, to carry out your development under the `/debianize` directory. 

**Creating a dev environment**

To add or test features for **debianize**, it is recommended to develop on an unstable system - whether on bare metal or in a VM/container. For carrying your development process with debianize, you'll need some libraries and tools to help you out.

- additional dependencies assuming you're working on an unstable system<br>
    `apt build-dep debian-codemods`
- _ognibuild_ (helps in packaging)<br>
    `cargo install ognibuild`
- _upstream-ontologist_ (helps in creating the metadata for the package)<br>
    `cargo install upstream-ontologist`

>Note: Although not **recommended** if you're using a stable system, you might need to add unstable repositories to your `/etc/apt/sources.list.d` if you're not following the above setup, so that you will get latest versions of the dependencies.