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 | ||||
|     steps: | ||||
|       - 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 | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
| @@ -44,6 +43,9 @@ jobs: | ||||
|       - name: Build Deb packages | ||||
|         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 | ||||
|         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 | ||||
|           name: deb-packages | ||||
|  | ||||
|       - name: Upload RPM artifact | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           path: ./dist/*.rpm | ||||
|           name: rpm-packages | ||||
|  | ||||
|       - name: Upload Asar artifacts | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|   | ||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -9,3 +9,5 @@ arch/ | ||||
| deb/ | ||||
|  | ||||
| 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