+++
title = "Good commands"
date = "2024-12-08"
update = "2024-12-14"
+++

### Importar o histórico do pacote no `Debian`

```bash
gbp import-dscs --debsnap <PACKAGE>

```


### Crosscompiler

#### Criar um sbuild

```bash
sudo sbuild-createchroot --arch=i386 unstable \
/srv/chroot/unstable-i386-sbuild http://deb.debian.org/debian

```

#### Compilar o pacote em i386

```bash
sbuild --arch=i386

```

#### Para arquiteturas não oficiais (schroot)

```bash
sudo sbuild-createchroot --arch=m68k --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg unstable /srv/chroot/unstable-m68k-sbuild http://ftp.ports.debian.org/debian-ports
```

### Compilar o pacote em m68k

```bash
sbuild --arch=m68k
```

### Backports

#### Criar Chrrot e buildar o pacote

```bash
sudo sbuild-createchroot --arch=amd64 bookworm \
/srv/chroot/bookworm-backports-amd64-sbuild http://deb.debian.org/debian

```

#### Compilar o pacote para backports
```bash
gbp buildpackage --git-builder=sbuild -v -d bookworm \
--build-dep-resolver=aptitude \
--extra-repository="deb http://deb.debian.org/debian bookworm-backports main" \
--force-orig-source

```

#### Compilar com unshare
```
sbuild --dist bookworm

```


### Abrir um shell durante ou ao fim do build do Pacote

```bash
--finished-build-commands="%s"
--build-failed-commands="%s"

```


### Fazer uma alteracao antes do New Upstream Version

```bash
git rebase --rebase-merges -i HEAD~4

```


### BTS

#### Mandar e-mail para o control para colocar alguma tag

```bash
echo "forwarded 1097379 link" | mail -s "" control@bugs.debian.org
https://www.debian.org/Bugs/server-control#forwarded

```
#### Outra forma

```bash
bts -n forwarded 109203 http://foo

```

#### Ou ainda

```bash
bts -n tags 109203 + fixed + confirmed

```


### Gerar símbolos

```bash
dpkg -x libc6_2.3.6-1_i386.deb libc6 && cd libc6
dpkg-gensymbols -v2.3.6 -plibc6 -eusr/lib/lib*.so* -Olibc6.symbols

```


### Copyright

#### Gerar arquivo para fazer o `d/copyright`

```bash
egrep -sriA25 '(public dom|Copyright)' > ../license

```

#### E-mail from all files to d/copyright
```bash
rg Copyright | rg -o '[\w\.-]+@[\w\.-]+' | sort -u | while read -r email; do \
rg "$email" debian/copyright || echo "$email"; done | sort -u

```

#### E-mail from d/copyright to all files
```bash
rg -o '[\w\.-]+@[\w\.-]+' debian/copyright | sort -u | while read -r email; do \
rg -q "$email" --glob '!*debian/*' . || echo "$email"; done | sort -u

```


### Autopkgtest
```bash
autopkgtest ../package.changes -- unshare --arch amd64 --release unstable

```

### Autopkgtest que o Debian CI usa
```bash
autopkgtest --apt-upgrade --pin-packages=unstable=src:starlette --add-apt-source="deb http://deb.debian.org/debian unstable main contrib non-free non-free-firmware"  . -- unshare --release testing

```

### Debusine

#### Enviar para o debusine, trocar `d/changelog` to unstable

```bash
dput debusine.debian.net ../cava-alsa_0.10.6+dfsg-1_source.changes

```

### Comecar empacotamento

#### Criar diretório

```bash
git init --initial-branch=debian/latest mypkg
cd mypkg

```
#### Importar versão do Upstream

```bash
 gbp import-orig --pristine-tar --debian-branch=debian/latest --upstream-branch=upstream/latest https://example.com/releases/mypkg-0.1.tar.gz

```

### Enviar arquivos para a VM do Hurd

```bash
scp -P 2222 -r cava-alsa demo@localhost:/home/demo/

```

### Verificar FTBFS

```bash
sbuild --arch-all --arch-any --chroot-mode=unshare -d sid -v --no-run-lintian \
  --finished-build-commands="cd %SBUILD_PKGBUILD_DIR && dpkg-buildpackage --sanitize-env -us -uc -S" $1

```

### Build com pacote no experimental

```bash
sbuild --extra-repository='deb http://deb.debian.org/debian experimental main' --build-dep-resolver=aspcud --add-depends='foo-dev (>= 1.2.3-4)'

```

### Check Depends and Build-Depends

#### Build-Depends

```bash
dpkg-depcheck -b debian/rules build

```

#### Depends

```bash
ldd binário

```

### Build with gcc experimental

```bash
sbuild --extra-repository='deb http://deb.debian.org/debian experimental main' --starting-build-commands='apt-get update && apt-get -t experimental install --only-upgrade -y g++ gcc'

```

### ASAN

```bash
export CFLAGS   += -fsanitize=address -fno-omit-frame-pointer -g
export CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer -g
export LDFLAGS  += -fsanitize=address
#opcional
export ASAN_OPTIONS = detect_leaks=0
```
