mirror of
				https://github.com/cucumber-sp/yandex-music-linux.git
				synced 2025-10-31 03:42:39 +03:00 
			
		
		
		
	RPM Building Support
This commit is contained in:
		
							
								
								
									
										12
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -22,8 +22,7 @@ jobs: | |||||||
|       image: archlinux:latest |       image: archlinux:latest | ||||||
|     steps: |     steps: | ||||||
|       - name: Install packages |       - name: Install packages | ||||||
|         run: pacman -Syy --noconfirm && pacman -S --noconfirm git sudo base-devel p7zip nodejs jq asar electron27 libpulse dpkg unzip xdg-utils python |         run: pacman -Syy --noconfirm && pacman -S --noconfirm git sudo base-devel p7zip nodejs jq asar electron27 libpulse dpkg unzip xdg-utils python rpm-tools | ||||||
|  |  | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v4 | ||||||
|         with: |         with: | ||||||
| @@ -44,6 +43,9 @@ jobs: | |||||||
|       - name: Build Deb packages |       - name: Build Deb packages | ||||||
|         run: bash ./build_deb.sh -a all &&  mv deb/*.deb dist |         run: bash ./build_deb.sh -a all &&  mv deb/*.deb dist | ||||||
|  |  | ||||||
|  |       - name: Build RPM packages | ||||||
|  |         run: bash ./build_rpm.sh && mv rpm/*.rpm dist | ||||||
|  |  | ||||||
|       - name: Retrieve Asar and release notes |       - name: Retrieve Asar and release notes | ||||||
|         run:  mv ./src/app/yandex-music.asar dist/yandex-music.asar && mv ./src/app/release_notes.json dist/release_notes.json |         run:  mv ./src/app/yandex-music.asar dist/yandex-music.asar && mv ./src/app/release_notes.json dist/release_notes.json | ||||||
|  |  | ||||||
| @@ -65,6 +67,12 @@ jobs: | |||||||
|           path: ./dist/*.deb |           path: ./dist/*.deb | ||||||
|           name: deb-packages |           name: deb-packages | ||||||
|  |  | ||||||
|  |       - name: Upload RPM artifact | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: ./dist/*.rpm | ||||||
|  |           name: rpm-packages | ||||||
|  |  | ||||||
|       - name: Upload Asar artifacts |       - name: Upload Asar artifacts | ||||||
|         uses: actions/upload-artifact@v4 |         uses: actions/upload-artifact@v4 | ||||||
|         with: |         with: | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -9,3 +9,5 @@ arch/ | |||||||
| deb/ | deb/ | ||||||
|  |  | ||||||
| tar/ | tar/ | ||||||
|  |  | ||||||
|  | rpm/ | ||||||
|   | |||||||
							
								
								
									
										115
									
								
								build_rpm.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								build_rpm.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,115 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | usage() { | ||||||
|  |     echo "Usage: $(basename "$0")  [-h] [-a <x64|armv7l|arm64|all> default=x64]" | ||||||
|  |     echo | ||||||
|  |     echo " Options:" | ||||||
|  |     echo " -a    Architecture to build for (<x64|armv7l|arm64|all> default=x64)" | ||||||
|  |     echo " -h    Show this help and exit" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | prepare_tarball(){ | ||||||
|  |     arch=${1} | ||||||
|  |     echo "Preparing tarball for ${arch}" | ||||||
|  |     if [ ! -f "tar/yandex-music_${version}_${arch}.tar.gz" ]; then | ||||||
|  |         echo "Building tarball for ${arch}" | ||||||
|  |         bash build_tarball.sh -a "${arch}" | ||||||
|  |     fi | ||||||
|  |     cp "tar/yandex-music_${version}_${arch}.tar.gz" "${TEMPDIR}/yandex-music_${version}_${arch}.tar.gz" | ||||||
|  |     cd "${TEMPDIR}" | ||||||
|  |     tar -xzf "yandex-music_${version}_${arch}.tar.gz" | ||||||
|  |     mkdir -p "yandex-music-${version}" | ||||||
|  |     mv usr "yandex-music-${version}" | ||||||
|  |     tar -czf "yandex-music_${version}_${arch}.tar.gz" "yandex-music-${version}" | ||||||
|  |     rm -rf "yandex-music-${version}" | ||||||
|  |     cd "${INITIAL_DIR}" | ||||||
|  |     cp "${TEMPDIR}/yandex-music_${version}_${arch}.tar.gz" "${TEMPDIR}/rpmbuild/SOURCES/yandex-music_${version}_${arch}.tar.gz" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | build_rpm(){ | ||||||
|  |     arch=${1} | ||||||
|  |     pkgarch=${2} | ||||||
|  |     echo "Building ${arch} package" | ||||||
|  |     cp "templates/rpm.spec" "${TEMPDIR}/rpmbuild/SPECS/${arch}.spec" | ||||||
|  |     sed -i "s/%version%/${version}/g" "${TEMPDIR}/rpmbuild/SPECS/${arch}.spec" | ||||||
|  |     sed -i "s/%arch%/${pkgarch}/g" "${TEMPDIR}/rpmbuild/SPECS/${arch}.spec" | ||||||
|  |     sed -i "s/%source_tarball%/yandex-music_${version}_${arch}.tar.gz/g" "${TEMPDIR}/rpmbuild/SPECS/${arch}.spec" | ||||||
|  |     rpmbuild --define "_topdir ${TEMPDIR}/rpmbuild" -bb "${TEMPDIR}/rpmbuild/SPECS/${arch}.spec" | ||||||
|  |     cp "${TEMPDIR}/rpmbuild/RPMS/${pkgarch}/yandex-music-${version}-1.${pkgarch}.rpm" "rpm/yandex-music-${version}-1.${pkgarch}.rpm" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | init_rpm(){ | ||||||
|  |     echo "Initializing RPM build" | ||||||
|  |     mkdir -p "${TEMPDIR}/rpmbuild/SOURCES" | ||||||
|  |     mkdir -p "${TEMPDIR}/rpmbuild/SPECS" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | x64=0 | ||||||
|  | armv7l=0 | ||||||
|  | arm64=0 | ||||||
|  |  | ||||||
|  | #checking for arch option (if not specified set x64) and h option | ||||||
|  | while getopts :a:h name; do | ||||||
|  |     case ${name} in | ||||||
|  |     a) | ||||||
|  |         case ${OPTARG} in | ||||||
|  |         x64) x64=1 ;; | ||||||
|  |         armv7l) armv7l=1 ;; | ||||||
|  |         arm64) arm64=1 ;; | ||||||
|  |         all) | ||||||
|  |             x64=1 | ||||||
|  |             armv7l=1 | ||||||
|  |             arm64=1 | ||||||
|  |             ;; | ||||||
|  |         *) | ||||||
|  |             echo "Invalid architecture specified" | ||||||
|  |             usage | ||||||
|  |             exit 1 | ||||||
|  |             ;; | ||||||
|  |         esac | ||||||
|  |         ;; | ||||||
|  |     h) | ||||||
|  |         usage | ||||||
|  |         exit 0 | ||||||
|  |         ;; | ||||||
|  |     *) | ||||||
|  |         usage | ||||||
|  |         exit 1 | ||||||
|  |         ;; | ||||||
|  |     esac | ||||||
|  | done | ||||||
|  |  | ||||||
|  | #checking if at least one arch is specified else set x64 | ||||||
|  | if [ ${x64} -eq 0 ] && [ ${armv7l} -eq 0 ] && [ ${arm64} -eq 0 ]; then | ||||||
|  |     x64=1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | clear() { | ||||||
|  |     rm -rf "${TEMPDIR}" | ||||||
|  | } | ||||||
|  | TEMPDIR="$(mktemp -d)" | ||||||
|  | INITIAL_DIR=${PWD} | ||||||
|  | trap clear EXIT | ||||||
|  |  | ||||||
|  | #loading version info with jq | ||||||
|  | version=$(jq -r '.ym.version' ./utility/version_info.json) | ||||||
|  |  | ||||||
|  | init_rpm | ||||||
|  | mkdir -p "rpm" | ||||||
|  |  | ||||||
|  | if [ ${x64} -eq 1 ]; then | ||||||
|  |     prepare_tarball "x64" | ||||||
|  |     build_rpm "x64" "x86_64" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ ${armv7l} -eq 1 ]; then | ||||||
|  |     prepare_tarball "armv7l" | ||||||
|  |     build_rpm "armv7l" "armv7hl" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ ${arm64} -eq 1 ]; then | ||||||
|  |     prepare_tarball "arm64" | ||||||
|  |     build_rpm "arm64" "aarch64" | ||||||
|  | fi | ||||||
							
								
								
									
										27
									
								
								templates/rpm.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								templates/rpm.spec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | Name: yandex-music | ||||||
|  | Version: %version% | ||||||
|  | Release: 1 | ||||||
|  | Summary: Yandex Music Client | ||||||
|  | License: Custom | ||||||
|  | URL: https://github.com/cucumber-sp/yandex-music-linux | ||||||
|  |  | ||||||
|  | Source0: %source_tarball% | ||||||
|  |  | ||||||
|  | BuildArch: %arch% | ||||||
|  |  | ||||||
|  | Requires: (kde-cli-tools or kde-cli-tools5 or kde-runtime or trash-cli or glib2 or gvfs-client), (libXtst or libXtst6), (libnotify or libnotify4), (libxcb or libxcb1), (mesa-libgbm or libgbm1), (nss or mozilla-nss), at-spi2-core, gtk3, libdrm, xdg-utils | ||||||
|  |  | ||||||
|  | %description | ||||||
|  | Yandex Music - Personal recommendations, selections for any occasion and new music | ||||||
|  |  | ||||||
|  | %prep | ||||||
|  | %setup -q | ||||||
|  |  | ||||||
|  | %install | ||||||
|  |  | ||||||
|  | cp -r ./usr %{buildroot}/ | ||||||
|  | chmod 755 %{buildroot}/usr/bin/yandex-music | ||||||
|  |  | ||||||
|  |  | ||||||
|  | %files | ||||||
|  | /usr/ | ||||||
		Reference in New Issue
	
	Block a user