Skip to content

Commit 95d2054

Browse files
committed
Add debian/ dir & build packages in CI (for Debian and derivatives)
Keep in mind that: - when you update/set the version for a release, it has to be updated in debian/changelog as well. However, the github actions workflow will set it again to build the deb. - when you update the flutter version you should also update the version in debian/rules. The build will fail by design if it is not the same version as the one in your github actions job. For now I have disabled the tests because one test fails. It can be reenabled once the tests PASS. Note that this cannot stricly follow the "Debian policy" since (among other reasons), to build the binary package, we have to download flutter SDK from the internet as well as rustup for older distributions. The github actions job produces the binary packages (*.deb) for 6 suites: - Debian 11 bullseye - Debian 12 bookworm - Debian 13 trixie - Ubuntu 22.04 jammy - Ubuntu 24.04 noble - Kali rolling I can confirm that it runs perfectly on Debian bookworm. I can't test the other, but they should work as well.
1 parent f5f48e0 commit 95d2054

14 files changed

Lines changed: 3238 additions & 3 deletions

File tree

.github/workflows/linux_ci.yml

Lines changed: 56 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ on:
44
workflow_dispatch:
55
branches: main
66

7+
env:
8+
# add 121 to the GitHub run number so build numbers align with Android/Windows
9+
build_number_increment: 121
710

811
jobs:
912
linux_build:
@@ -36,8 +39,7 @@ jobs:
3639
- name: Build Linux App
3740
# compute adjusted build number so linux matches other platforms
3841
run: |
39-
# add 121 to the GitHub run number so build numbers align with Android/Windows
40-
adjusted=$(( ${{ github.run_number }} + 121 ))
42+
adjusted=$(( ${{ github.run_number }} + ${{ env.build_number_increment }} ))
4143
echo "ADJUSTED_RUN_NUMBER=$adjusted" >> $GITHUB_ENV
4244
flutter build linux --release --build-number $adjusted
4345
@@ -52,4 +54,55 @@ jobs:
5254
uses: actions/upload-artifact@v4
5355
with:
5456
name: bloomee_tunes_linux
55-
path: build/linux/x64/release/bundle/bloomee_tunes_linux_v${{ env.VERSION }}+${{ env.ADJUSTED_RUN_NUMBER }}.zip
57+
path: build/linux/x64/release/bundle/bloomee_tunes_linux_v${{ env.VERSION }}+${{ env.ADJUSTED_RUN_NUMBER }}.zip
58+
59+
build-debs:
60+
runs-on: ubuntu-latest
61+
strategy:
62+
fail-fast: false
63+
matrix:
64+
suite: [
65+
['Debian_bullseye', 'debian:bullseye-slim', 'pkg.bloomeetunes.downloadrustup'],
66+
['Debian_bookworm', 'debian:bookworm-slim', 'pkg.bloomeetunes.downloadrustup'],
67+
['Debian_trixie', 'debian:trixie-slim', ''],
68+
['Ubuntu_jammy', 'ubuntu:jammy', 'pkg.bloomeetunes.downloadrustup'],
69+
['Ubuntu_noble', 'ubuntu:noble', ''],
70+
['Kali_latest', 'kalilinux/kali-last-release', ''],
71+
]
72+
steps:
73+
- uses: actions/checkout@v4
74+
- name: Build version number
75+
run: |
76+
ver=$(grep -m1 -E '^version:\s*' pubspec.yaml | awk '{print $2}' | cut -d'+' -f1)
77+
if [ -z "$ver" ]; then echo "version not found in pubspec.yaml"; exit 1; fi
78+
# compute adjusted build number so linux matches other platforms
79+
adjusted=$(( ${{ github.run_number }} + ${{ env.build_number_increment }} ))
80+
echo "FINAL_VERSION=${ver}+${adjusted}" >> $GITHUB_ENV
81+
- uses: jtdor/build-deb-action@v1
82+
env:
83+
DEB_BUILD_OPTIONS: noautodbgsym
84+
DEB_BUILD_PROFILES: ${{ matrix.suite[2] }}
85+
with:
86+
before-build-hook: |
87+
apt-get -y install lsb-release devscripts distro-info
88+
89+
CODENAME="${DISTRIB:=$(lsb_release -cs)}" # trixie
90+
RELEASE_DEBIAN="$(debian-distro-info -r --series "$CODENAME" || true)" # Don't fail if not found, it may be ubuntu...
91+
RELEASE_UBUNTU="$(ubuntu-distro-info -r --series "$CODENAME" || true)" #
92+
RELEASE_UBUNTU="${RELEASE_UBUNTU%% *}" # remove LTS suffix present in ubuntu (eg. "24.04" LTS -> "24.04")
93+
RELEASE="${RELEASE_DEBIAN}${RELEASE_UBUNTU}"
94+
RELEASE="${RELEASE:=$(cat /etc/debian_version)}" # If neither Debian, nor Ubuntu, put value of /etc/debian_version
95+
#LOCAL_SUFFIX="~bpo${RELEASE}+ci${{ github.run_id }}~git$(git rev-parse --short HEAD)"
96+
LOCAL_SUFFIX="~bpo${RELEASE}~git$(git rev-parse --short HEAD)"
97+
98+
#debchange --force-bad-version --controlmaint --local="${LOCAL_SUFFIX}" "CI build"
99+
debchange --force-bad-version --controlmaint --newversion="${{ env.FINAL_VERSION }}-1${LOCAL_SUFFIX}" "CI build"
100+
buildpackage-opts: --build=binary --no-sign
101+
docker-image: ${{ matrix.suite[1] }}
102+
- name: Archive artifacts for ${{ matrix.suite[0] }}
103+
if: always()
104+
uses: actions/upload-artifact@v4
105+
with:
106+
name: bloomee_tunes_${{ matrix.suite[0] }}
107+
path: 'debian/artifacts/*'
108+
if-no-files-found: ignore

debian/bloomeetunes.desktop

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[Desktop Entry]
2+
Encoding=UTF-8
3+
Version=1.0
4+
Type=Application
5+
Terminal=false
6+
Exec=/usr/bin/bloomee
7+
Name=BloomeeTunes
8+
Icon=ls.bloomee.musicplayer
9+
Categories=AudioVideo;Player

debian/changelog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
bloomeetunes (2.12.4+178-1) UNRELEASED; urgency=low
2+
3+
* Initial release. Closes: #nnnn
4+
<nnnn is the bug number of your ITP>
5+
6+
-- Hemant KArya <iamhemantindia@protonmail.com> Sun, 28 Sep 2025 10:07:35 +0000

debian/clean

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
.flutter-plugins
2+
android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
3+
android/local.properties
4+
ios/Runner/GeneratedPluginRegistrant.h
5+
ios/Runner/GeneratedPluginRegistrant.m
6+
linux/flutter/generated_plugin_registrant.cc
7+
linux/flutter/generated_plugin_registrant.h
8+
linux/flutter/generated_plugins.cmake
9+
macos/Flutter/GeneratedPluginRegistrant.swift
10+
windows/flutter/generated_plugin_registrant.cc
11+
windows/flutter/generated_plugin_registrant.h
12+
windows/flutter/generated_plugins.cmake

debian/control

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
Source: bloomeetunes
2+
Section: sound
3+
Priority: optional
4+
Maintainer: Hemant KArya <iamhemantindia@protonmail.com>
5+
Build-Depends: debhelper-compat (= 13),
6+
ca-certificates,
7+
clang,
8+
cmake,
9+
curl,
10+
git,
11+
imagemagick,
12+
libglu1-mesa,
13+
libgtk-3-dev,
14+
libmpv-dev,
15+
ninja-build,
16+
rustup <!pkg.bloomeetunes.downloadrustup>,
17+
unzip,
18+
xz-utils,
19+
zip,
20+
Standards-Version: 4.7.0
21+
Homepage: https://hemantkarya.github.io/BloomeeTunes/
22+
Rules-Requires-Root: no
23+
#Vcs-Git: https://salsa.debian.org/bastif/bloomeetunes.git
24+
#Vcs-Browser: https://salsa.debian.org/bastif/bloomeetunes
25+
26+
Package: bloomeetunes
27+
Architecture: any
28+
Multi-Arch: foreign
29+
Depends: libmpv2 | libmpv1, ${misc:Depends}, ${shlibs:Depends},
30+
Description: Multi-source and open music app for free
31+
Bloomee is experimental cross-platform open Source Music player designed to
32+
bring you Ad-free tunes from various sources. Dive into a world of limitless
33+
music from platforms like YouTube and Jio Saavn, with more sources blooming
34+
soon!
35+
.
36+
Why Bloomee?
37+
.
38+
- Ad-Free Experience: Say goodbye to interruptions and enjoy uninterrupted
39+
musical bliss.
40+
- Multi-Source Player: Access your favorite tracks from diverse platforms,
41+
with more sources continually joining our melody garden.
42+
- Flutter-Powered Learning: Bloomee is not just about music; it's about
43+
learning and growing with Flutter and BLoC architecture. Explore the
44+
intersection of beautiful design and smooth functionality while mastering
45+
the art of app development.
46+
.
47+
Features
48+
.
49+
- Ad-Free Music
50+
- Lyrics Support (Time Synced)
51+
- Scrobble music with Last.FM
52+
- Offline Music Experience
53+
- Import playlists from various source.
54+
- Sleep Timer
55+
- Personalized Playlist Creation and Sharing
56+
- Daily Updated Global Charts. (Billboard, Last.fm and more.)
57+
- Support for Android, Windows and Linux.
58+
- Minimal Data Usage
59+
- Space Efficient
60+
- Lightweight App
61+
- Open Source
62+
- Play Automatic Related Songs
63+
- Share your playlists with others
64+
- AI-Generated Playlist
65+
- AI-Based Recommendations
66+
- Multi-Language support

0 commit comments

Comments
 (0)