Browse Source

v0.4.2 - first release using alacritty-debian

master v0.4.2-1
Martin Simon 2 years ago
parent
commit
32f0f2dfab
  1. 53
      .github/workflows/main.yml
  2. 14
      LICENSE
  3. 50
      README.md
  4. 37
      build.sh
  5. 5
      debian/changelog
  6. 1
      debian/compat
  7. 31
      debian/control
  8. 26
      debian/copyright
  9. 6
      debian/postinst
  10. 4
      debian/prerm
  11. 21
      debian/rules
  12. 1
      debian/source/format
  13. 3
      debian/watch
  14. 49
      entrypoint.sh
  15. 0
      target/.gitkeep

53
.github/workflows/main.yml

@ -0,0 +1,53 @@
name: Build alacritty Debian packages
on:
push:
tags:
- "*"
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Build packages
run: |
set -xe
mkdir -p assets
./build.sh -i debian:buster-slim
rename.ul .deb _debian_buster.deb target/alacritty_*.deb
mv -n target/alacritty_*.deb assets/
./build.sh -i debian:testing-slim
rename.ul .deb _debian_testing.deb target/alacritty_*.deb
mv -n target/alacritty_*.deb assets/
./build.sh -i debian:unstable-slim
rename.ul .deb _debian_unstable.deb target/alacritty_*.deb
mv -n target/alacritty_*.deb assets/
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: false
prerelease: false
- name: Upload packages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ID: ${{ steps.create_release.outputs.id }}
run: |
set -xe
for asset in assets/*
do
UPLOAD_URL="https://uploads.github.com/repos/$GITHUB_REPOSITORY/releases/$ID/assets"
curl \
-X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary @"$asset" \
"${UPLOAD_URL}?name=$(basename $asset)"
done

14
LICENSE

@ -0,0 +1,14 @@
Copyright 2020 Martin Simon
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

50
README.md

@ -1,2 +1,50 @@
# alacritty-debian
Debian packages for alacritty.
This repository contains the source to build a Debian package for [alacritty](https://github.com/alacritty/alacritty).
## Usage
If you have [Docker](https://www.docker.com/) installed locally, just run the following:
```bash
user@hostname$ ./build.sh
```
By default this will build alacritty 0.4.2 on Debian Buster.
If you want to customize the build at runtime, use the following:
```bash
user@hostname$ ./build.sh -i debian:unstable-slim -v 0.3.3
```
Don't forget to update `debian/changelog` so your package is generated with the correct version.
## Release
To publish a new package version to Github, follow these steps:
* update the `VERSION` variable in `build.sh`
* add a new entry in `debian/changelog`
* create a new tag with the Debian package version
## License
```
Copyright 2020 Martin Simon
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
## References
* [ayosec/polybar-debian](https://github.com/ayosec/polybar-debian)

37
build.sh

@ -0,0 +1,37 @@
#!/bin/bash
set -eu
IMAGE="debian:buster-slim"
TARGET="$(dirname "$0" | xargs realpath)"
VERSION="v0.4.2"
while getopts "v:i:h" opt
do
case "$opt" in
v)
VERSION="$OPTARG"
;;
i)
IMAGE="$OPTARG"
;;
h)
echo "Usage: $0 [-i image] [-v version]"
exit 0
;;
*)
exit 1
;;
esac
done
main() {
docker run --rm --name alacritty-build-$$ \
--volume "$TARGET:/target" \
--workdir /target \
--env "VERSION=$VERSION" \
--user root "$IMAGE" \
sh entrypoint.sh
}
main

5
debian/changelog

@ -0,0 +1,5 @@
alacritty (0.4.2-1) unstable; urgency=medium
* Version 0.4.2
-- Martin Simon <me@martinsimon.me> Mon, 13 Apr 2020 00:00:00 +0000

1
debian/compat

@ -0,0 +1 @@
11

31
debian/control

@ -0,0 +1,31 @@
Source: alacritty
Section: x11
Priority: optional
Maintainer: Martin Simon <me@martinsimon.me>
Build-Depends:
cargo:native,
debhelper (>= 11),
help2man,
libfreetype6-dev,
libfontconfig1-dev,
libxcb1-dev,
libxcb-render0-dev,
libxcb-shape0-dev,
libxcb-xfixes0-dev,
rustc:native,
python3,
Standards-Version: 4.3.0
Homepage: https://github.com/alacritty/alacritty
Package: alacritty
Architecture: amd64
Depends:
${misc:Depends},
${shlibs:Depends},
Recommends:
xclip
Provides:
x-terminal-emulator
Description: GPU-accelerated terminal emulator
Alacritty is the fastest terminal emulator in existence. Using the GPU for
rendering enables optimizations that simply aren't possible without it.

26
debian/copyright

@ -0,0 +1,26 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: alacritty
Source: https://github.com/alacritty/alacritty
Files: *
Copyright: 2016 Joe Wilm, The Alacritty Project Contributors
License: Apache-2.0
Files: debian/*
Copyright: 2020 Martin Simon <me@martinsimon.me>
License: Apache-2.0
License: Apache-2.0
Copyright 2016 Joe Wilm, The Alacritty Project Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

6
debian/postinst

@ -0,0 +1,6 @@
#!/bin/sh
set -e
update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/bin/alacritty 20 \
--slave /usr/share/man/man1/x-terminal-emulator.1.gz x-terminal-emulator.1.gz /usr/local/share/man/man1/alacritty.1.gz

4
debian/prerm

@ -0,0 +1,4 @@
#!/bin/sh
set -e
update-alternatives --remove x-terminal-emulator /usr/bin/alacritty

21
debian/rules

@ -0,0 +1,21 @@
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_clean:
cargo clean
override_dh_auto_build:
cargo build --release
override_dh_auto_install:
mkdir -p debian/alacritty/usr/share/man/man1/
help2man "target/release/alacritty" | gzip > "debian/alacritty/usr/share/man/man1/alacritty.1.gz"
install -Dm04755 "target/release/alacritty" "debian/alacritty/usr/bin/alacritty"
install -Dm0644 "extra/completions/alacritty.bash" "debian/alacritty/usr/share/bash-completion/completions/alacritty"
install -Dm0644 "extra/completions/alacritty.fish" "debian/alacritty/usr/share/fish/completions/alacritty.fish"
install -Dm0644 "extra/completions/_alacritty" "debian/alacritty/usr/share/vendor-completions/_alacritty"
install -Dm0644 "extra/logo/alacritty-term.svg" "debian/alacritty/usr/share/pixmaps/com.alacritty.Alacritty.svg"
install -Dm0644 "extra/linux/Alacritty.desktop" "debian/alacritty/usr/share/applications/com.alacritty.Alacritty.desktop"
sed -i 's/Icon=Alacritty/Icon=com.alacritty.Alacritty/g' "debian/alacritty/usr/share/applications/com.alacritty.Alacritty.desktop"

1
debian/source/format

@ -0,0 +1 @@
3.0 (quilt)

3
debian/watch

@ -0,0 +1,3 @@
version=4
opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/<project>-$1\.tar\.gz/ \
https://github.com/alacritty/alacritty/tags .*/v?(\d\S+)\.tar\.gz

49
entrypoint.sh

@ -0,0 +1,49 @@
#!/bin/bash
set -xeu
BRANCH="$VERSION"
DEBIAN_FRONTEND=noninteractive
DEB_BUILD_OPTIONS=parallel=$(nproc)
OS_VERSION=$(sed 's/\..*//' /etc/debian_version)
TARGET="$PWD"
export DEBIAN_FRONTEND DEB_BUILD_OPTIONS
dependencies() {
apt update && apt install -y devscripts equivs git
if [ "$OS_VERSION" = 10 ]; then
apt install -y curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
. ~/.cargo/env
fi
}
get_sources() {
cd "$(mktemp -d)"
git clone -b "$BRANCH" https://github.com/alacritty/alacritty.git alacritty
cd alacritty
}
build() {
cp -a "$TARGET/debian" .
yes | mk-build-deps --install
dpkg-source --before-build .
debian/rules build
debian/rules binary
}
copy() {
TARGET_UID="$(stat --printf %u "$TARGET")"
TARGET_GID="$(stat --printf %g "$TARGET")"
install -o "$TARGET_UID" -g "$TARGET_GID" -t "$TARGET/target" ../*.deb
}
main() {
dependencies
get_sources
build
copy
}
main

0
target/.gitkeep

Loading…
Cancel
Save