diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e6f6498 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,111 @@ +name: Build AUR, DEB, and RPM Packages + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker + uses: docker/setup-buildx-action@v3 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.8' + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y build-essential devscripts rpm desktop-file-utils + + - name: Prepare version + id: read_version_file + run: echo "version=$(cat src/ver)" >> $GITHUB_OUTPUT + + - name: Build AUR package + run: | + docker run --rm -v "$PWD:/workspace" -w /workspace archlinux:base-devel \ + bash -c " + pacman -Syu --noconfirm && + pacman -S --needed --noconfirm base-devel wget libnewt alacritty git && + useradd -m builder && + chown -R builder . && + su builder -c 'cd src/buildfiles/pkgbuild && makepkg -s --noconfirm' && + cp src/buildfiles/pkgbuild/*.pkg.tar.* ./ + " + sudo chown -R $(id -u):$(id -g) . + + - name: Get AUR package + id: aur_package_path + run: | + FILE=$(ls linuxtoys-*-x86_64.pkg.tar.* | head -n1) + echo "file=$FILE" >> $GITHUB_OUTPUT + + - name: Build DEB package + env: + LINUXTOYS_VERSION: ${{ steps.read_version_file.outputs.version }} + run: | + mkdir -p src/buildfiles/deb/linuxtoys/DEBIAN/opt/linuxtoys + mkdir -p src/buildfiles/deb/linuxtoys/DEBIAN/usr/share/applications + cp src/{linuxtoys.sh,linuxtoys.png} src/buildfiles/deb/linuxtoys/DEBIAN/opt/linuxtoys + cp src/LinuxToys.desktop src/buildfiles/deb/linuxtoys/DEBIAN/usr/share/applications + dpkg-deb --build --root-owner-group src/buildfiles/deb/linuxtoys/ + cp src/buildfiles/deb/*.deb ./linuxtoys-${LINUXTOYS_VERSION}-1_amd64.deb + + - name: Get DEB package + id: deb_package_path + run: | + FILE=$(ls *.deb | head -n1) + echo "file=$FILE" >> $GITHUB_OUTPUT + + - name: Build RPM package + env: + LINUXTOYS_VERSION: ${{ steps.read_version_file.outputs.version }} + run: | + mkdir -p src/buildfiles/rpm/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} + mkdir -p src/buildfiles/rpm/linuxtoys-${LINUXTOYS_VERSION}/{opt/linuxtoys,usr/share/applications} + cp src/{linuxtoys.sh,linuxtoys.png} src/buildfiles/rpm/linuxtoys-${LINUXTOYS_VERSION}/opt/linuxtoys + cp src/LinuxToys.desktop src/buildfiles/rpm/linuxtoys-${LINUXTOYS_VERSION}/usr/share/applications + pushd src/buildfiles/rpm/ + tar -cJf rpmbuild/SOURCES/linuxtoys-${LINUXTOYS_VERSION}.tar.xz linuxtoys-${LINUXTOYS_VERSION}/ + pushd rpmbuild + rpmbuild --define "_topdir `pwd`" -bb SPECS/linuxtoys.spec + popd + popd + cp src/buildfiles/rpm/rpmbuild/RPMS/x86_64/*.rpm ./linuxtoys-${LINUXTOYS_VERSION}-1_amd64.rpm + + - name: Get RPM package + id: rpm_package_path + run: | + FILE=$(ls *.rpm | head -n1) + echo "file=$FILE" >> $GITHUB_OUTPUT + + - name: Upload AUR package + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.aur_package_path.outputs.file }} + path: ${{ steps.aur_package_path.outputs.file }} + + - name: Upload DEB package + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.deb_package_path.outputs.file }} + path: ${{ steps.deb_package_path.outputs.file }} + + - name: Upload RPM package + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.rpm_package_path.outputs.file }} + path: ${{ steps.rpm_package_path.outputs.file }} + diff --git a/.gitignore b/.gitignore index 23267bc..dd43760 100644 --- a/.gitignore +++ b/.gitignore @@ -3,15 +3,21 @@ *.changes *.upload *.dsc -src/buildfiles/deb/linuxtoys-*/debian/.debhelper *.substvars debhelper-build-stamp -src/buildfiles/deb/linuxtoys-*/debian/linuxtoys + +src/buildfiles/deb/linuxtoys/DEBIAN/opt +src/buildfiles/deb/linuxtoys/DEBIAN/usr +src/buildfiles/deb/linuxtoys/DEBIAN/.debhelper +src/buildfiles/deb/linuxtoys/DEBIAN/linuxtoys src/buildfiles/deb/*.deb + src/buildfiles/rpm/rpmbuild/x86_64/linuxtoys* -src/buildfiles/deb/linuxtoys-*/debian/opt/linuxtoys/* -src/buildfiles/rpm/linuxtoys-*/x86_64/linuxtoys* +src/buildfiles/rpm/rpmbuild/BUILD/ +src/buildfiles/rpm/rpmbuild/SOURCES/ +src/buildfiles/rpm/linuxtoys-*/ + src/buildfiles/pkgbuild/linuxtoys-*/bin/* -src/buildfiles/rpm/linuxtoys-*/linuxtoys.sh -src/buildfiles/rpm/linuxtoys-*/linuxtoys.png +src/buildfiles/pkgbuild/pkg +src/buildfiles/pkgbuild/src diff --git a/src/buildfiles/deb/linuxtoys-2.1.4/debian/usr/share/applications/LinuxToys.desktop b/src/LinuxToys.desktop similarity index 100% rename from src/buildfiles/deb/linuxtoys-2.1.4/debian/usr/share/applications/LinuxToys.desktop rename to src/LinuxToys.desktop diff --git a/src/buildfiles/deb/linuxtoys-2.1.4/debian/changelog b/src/buildfiles/deb/linuxtoys/DEBIAN/changelog similarity index 100% rename from src/buildfiles/deb/linuxtoys-2.1.4/debian/changelog rename to src/buildfiles/deb/linuxtoys/DEBIAN/changelog diff --git a/src/buildfiles/deb/linuxtoys-2.1.4/debian/control b/src/buildfiles/deb/linuxtoys/DEBIAN/control similarity index 97% rename from src/buildfiles/deb/linuxtoys-2.1.4/debian/control rename to src/buildfiles/deb/linuxtoys/DEBIAN/control index c8ac50b..52faba3 100644 --- a/src/buildfiles/deb/linuxtoys-2.1.4/debian/control +++ b/src/buildfiles/deb/linuxtoys/DEBIAN/control @@ -9,8 +9,8 @@ Standards-Version: 4.7.2 Homepage: https://github.com/psygreg/linuxtoys #Vcs-Browser: https://salsa.debian.org/debian/linuxtoys #Vcs-Git: https://salsa.debian.org/debian/linuxtoys.git - Package: linuxtoys +Version: 2.1.4 Architecture: amd64 Depends: bash, git, curl, wget, whiptail, alacritty Description: A set of tools for Linux presented in a user-friendly way. diff --git a/src/buildfiles/deb/linuxtoys-2.1.4/debian/copyright b/src/buildfiles/deb/linuxtoys/DEBIAN/copyright similarity index 100% rename from src/buildfiles/deb/linuxtoys-2.1.4/debian/copyright rename to src/buildfiles/deb/linuxtoys/DEBIAN/copyright diff --git a/src/buildfiles/deb/linuxtoys-2.1.4/debian/files b/src/buildfiles/deb/linuxtoys/DEBIAN/files similarity index 100% rename from src/buildfiles/deb/linuxtoys-2.1.4/debian/files rename to src/buildfiles/deb/linuxtoys/DEBIAN/files diff --git a/src/buildfiles/deb/linuxtoys-2.1.4/debian/install b/src/buildfiles/deb/linuxtoys/DEBIAN/install similarity index 100% rename from src/buildfiles/deb/linuxtoys-2.1.4/debian/install rename to src/buildfiles/deb/linuxtoys/DEBIAN/install diff --git a/src/buildfiles/deb/linuxtoys-2.1.4/debian/postinst b/src/buildfiles/deb/linuxtoys/DEBIAN/postinst old mode 100644 new mode 100755 similarity index 100% rename from src/buildfiles/deb/linuxtoys-2.1.4/debian/postinst rename to src/buildfiles/deb/linuxtoys/DEBIAN/postinst diff --git a/src/buildfiles/deb/linuxtoys-2.1.4/debian/rules b/src/buildfiles/deb/linuxtoys/DEBIAN/rules similarity index 100% rename from src/buildfiles/deb/linuxtoys-2.1.4/debian/rules rename to src/buildfiles/deb/linuxtoys/DEBIAN/rules diff --git a/src/buildfiles/deb/linuxtoys-2.1.4/debian/source/format b/src/buildfiles/deb/linuxtoys/DEBIAN/source/format similarity index 100% rename from src/buildfiles/deb/linuxtoys-2.1.4/debian/source/format rename to src/buildfiles/deb/linuxtoys/DEBIAN/source/format diff --git a/src/buildfiles/deb/linuxtoys-2.1.4/debian/source/include-binaries b/src/buildfiles/deb/linuxtoys/DEBIAN/source/include-binaries similarity index 100% rename from src/buildfiles/deb/linuxtoys-2.1.4/debian/source/include-binaries rename to src/buildfiles/deb/linuxtoys/DEBIAN/source/include-binaries diff --git a/src/buildfiles/deb/linuxtoys_2.1.4-1.debian.tar.xz b/src/buildfiles/deb/linuxtoys_2.1.4-1.debian.tar.xz deleted file mode 100644 index 9a4eefe..0000000 Binary files a/src/buildfiles/deb/linuxtoys_2.1.4-1.debian.tar.xz and /dev/null differ diff --git a/src/buildfiles/deb/linuxtoys_2.1.4.orig.tar.xz b/src/buildfiles/deb/linuxtoys_2.1.4.orig.tar.xz deleted file mode 100644 index 533f8e2..0000000 Binary files a/src/buildfiles/deb/linuxtoys_2.1.4.orig.tar.xz and /dev/null differ diff --git a/src/buildfiles/rpm/linuxtoys-2.1.4.tar.xz b/src/buildfiles/rpm/linuxtoys-2.1.4.tar.xz deleted file mode 100644 index 1843f84..0000000 Binary files a/src/buildfiles/rpm/linuxtoys-2.1.4.tar.xz and /dev/null differ diff --git a/src/buildfiles/rpm/linuxtoys-2.1.4/LinuxToys.desktop b/src/buildfiles/rpm/linuxtoys-2.1.4/LinuxToys.desktop deleted file mode 100644 index 6a246d8..0000000 --- a/src/buildfiles/rpm/linuxtoys-2.1.4/LinuxToys.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Name=LinuxToys -Type=Application -Exec=/usr/bin/linuxtoys.sh -Terminal=true -Icon=/usr/share/icons/hicolor/scalable/apps/linuxtoys.png -Comment=A set of tools for Linux presented in a user-friendly way -NoDisplay=false -Categories=Development \ No newline at end of file diff --git a/src/buildfiles/rpm/rpmbuild/SPECS/linuxtoys.spec b/src/buildfiles/rpm/rpmbuild/SPECS/linuxtoys.spec index aa256c1..2ad3a71 100644 --- a/src/buildfiles/rpm/rpmbuild/SPECS/linuxtoys.spec +++ b/src/buildfiles/rpm/rpmbuild/SPECS/linuxtoys.spec @@ -17,12 +17,11 @@ A menu with various handy tools for Linux gaming, optimization and other tweaks. %setup -q %install -mkdir -p %{buildroot}/usr/bin -install -m 755 linuxtoys.sh %{buildroot}/usr/bin/ +mkdir -p %{buildroot}/opt/linuxtoys +install -m 755 opt/linuxtoys/linuxtoys.sh %{buildroot}/opt/linuxtoys +install -m 644 opt/linuxtoys/linuxtoys.png %{buildroot}/opt/linuxtoys mkdir -p %{buildroot}/usr/share/applications -desktop-file-install --dir=%{buildroot}/usr/share/applications LinuxToys.desktop -mkdir -p %{buildroot}/usr/share/icons/hicolor/scalable/apps -install -m 644 linuxtoys.png %{buildroot}/usr/share/icons/hicolor/scalable/apps/ +desktop-file-install --dir=%{buildroot}/usr/share/applications usr/share/applications/LinuxToys.desktop %post alias_name="linuxtoys" @@ -40,10 +39,10 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-, root, root, -) -/usr/bin/linuxtoys.sh +/opt/linuxtoys/linuxtoys.sh +/opt/linuxtoys/linuxtoys.png /usr/share/applications/LinuxToys.desktop -/usr/share/icons/hicolor/scalable/apps/linuxtoys.png %changelog * Thu Jun 5 2025 Victor Gregory - 2.1.4 -- bugfix: now updater works as intended \ No newline at end of file +- bugfix: now updater works as intended