Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package spotify-easyrpm for openSUSE:Factory
checked in at 2021-03-15 10:54:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/spotify-easyrpm (Old)
and /work/SRC/openSUSE:Factory/.spotify-easyrpm.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "spotify-easyrpm"
Mon Mar 15 10:54:48 2021 rev:5 rq:878605 version:3.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/spotify-easyrpm/spotify-easyrpm.changes
2020-11-29 12:27:57.609973772 +0100
+++
/work/SRC/openSUSE:Factory/.spotify-easyrpm.new.2401/spotify-easyrpm.changes
2021-03-15 10:54:49.661211073 +0100
@@ -1,0 +2,15 @@
+Mon Mar 08 22:57:54 UTC 2021 - [email protected]
+
+- Make sure jq is installed
+- Make sure a config file exists before querying new options
+- When using --set-channel, make sure PREF_PROMPT_CHANNEL is set to no
+- unsquashfs -q is not supported in leap version
+
+-------------------------------------------------------------------
+Mon Mar 08 21:33:31 UTC 2021 - [email protected]
+
+- Pull Spotify from the snap store instead of the debian repo
+- New option --set-channel to choose the Spotify stable or edge version from
snap store
+- Improved version compare logic
+
+-------------------------------------------------------------------
Old:
----
spotify-easyrpm-2.1.2.tar.gz
New:
----
spotify-easyrpm-3.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ spotify-easyrpm.spec ++++++
--- /var/tmp/diff_new_pack.fRpgN0/_old 2021-03-15 10:54:50.233211951 +0100
+++ /var/tmp/diff_new_pack.fRpgN0/_new 2021-03-15 10:54:50.237211957 +0100
@@ -1,7 +1,7 @@
#
# spec file for package spotify-easyrpm
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: spotify-easyrpm
-Version: 2.1.2
+Version: 3.0.1
Release: 0
Summary: Tool to download, convert and install the Spotify for Linux
package
License: GPL-3.0-only
@@ -25,13 +25,15 @@
URL: https://github.com/megamaced/spotify-easyrpm
Source: %{name}-%{version}.tar.gz
Requires: createrepo_c
+Requires: jq
Requires: rpm-build
+Requires: squashfs
Requires: update-desktop-files
BuildArch: noarch
%description
-Spotify-easyrpm is a script which downloads the latest Debian package
-from the Spotify repository and converts it into an RPM for
+Spotify-easyrpm is a script which downloads the latest snap package
+from the snapcraft.io repository and converts it into an RPM for
installation.
Automated updates are also supported and installed through the system
++++++ spotify-easyrpm-2.1.2.tar.gz -> spotify-easyrpm-3.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spotify-easyrpm-2.1.2/README.md
new/spotify-easyrpm-3.0.1/README.md
--- old/spotify-easyrpm-2.1.2/README.md 2020-11-26 17:15:20.000000000 +0100
+++ new/spotify-easyrpm-3.0.1/README.md 2021-03-08 23:53:44.000000000 +0100
@@ -2,29 +2,22 @@

-Spotify-easyrpm is a script which can download the latest debian package from
the Spotify
-repository and convert it into an RPM. It is also capable of installing,
automated updating and storing
-the Spotify RPMs in a local filesystem repo for installing Spotify updates
alongside regular system updates
+Spotify-easyrpm is a script which can download the latest Spotify snapcraft.io
package and convert it into an RPM.
+It is also capable of installing, automated updating and storing the Spotify
RPMs in a local filesystem repo
+for installing Spotify updates alongside regular system updates
### Features
* Set up a build enviornment on your PC and install rpm-build
* Auto download the latest version of Spotify
- * Convert the debian package to RPM format
+ * Convert the snap package to RPM format
* Install the Spotify RPM
* Automated Spotify update check
* Create a local filesystem repo so Spotify can be updated alongside regular
updates
* Fully unattended quiet mode
- ### News
-
- * 13/09/19 - We got accepted into openSUSE:Factory! We are now in the
official Tumbleweed oss repo
- * 08/05/19 - We got accepted into multimedia:apps repo on the Open Build
Service! I'm using their
- one click install links below where possible
-
-
### Howto
```bash
@@ -42,6 +35,13 @@
- Set up a local filesystem repo
```bash
+$> spotify-easyrpm --set-channel edge
+```
+
+ - Set either "edge" or "stable" version of Spotify client
+
+
+```bash
$> spotify-easyrpm --create-schedule
```
@@ -62,7 +62,7 @@
### Requirements
- * openSUSE Leap / SLE (x86_64), or Tumbleweed (x86_64 or i586)
+ * openSUSE Leap / SLE, or Tumbleweed
### Auto Updates
@@ -91,4 +91,4 @@
* [SLE
15](https://software.opensuse.org/ymp/home:megamaced:spotify-easyrpm/SLE_15/spotify-easyrpm.ymp?base=SUSE%3ASLE-15%3AGA&query=spotify-easyrpm)
* [openSUSE
15.1](https://software.opensuse.org/ymp/multimedia:apps/openSUSE_Leap_15.1/spotify-easyrpm.ymp?base=openSUSE%3ALeap%3A15.1&query=spotify-easyrpm)
* [openSUSE
15.2](https://software.opensuse.org/ymp/multimedia:apps/openSUSE_Leap_15.2/spotify-easyrpm.ymp?base=openSUSE%3ALeap%3A15.2&query=spotify-easyrpm)
- * openSUSE Tumbleweed: We are included in Tumbleweed. Just a `zypper install
spotify-easyrpm` to install
+ * openSUSE Tumbleweed: `zypper install spotify-easyrpm`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spotify-easyrpm-2.1.2/spotify-easyrpm
new/spotify-easyrpm-3.0.1/spotify-easyrpm
--- old/spotify-easyrpm-2.1.2/spotify-easyrpm 2020-11-26 17:15:20.000000000
+0100
+++ new/spotify-easyrpm-3.0.1/spotify-easyrpm 2021-03-08 23:53:44.000000000
+0100
@@ -1,12 +1,5 @@
#!/bin/bash
#
-# spotify-easyrpm is a script which can download the latest debian package
from the Spotify
-# repository and convert it into an RPM. It is also capable of installing,
scheduling and storing
-# the RPMs in a local filesystem repo for installing Spotify updates alongside
regular system updates
-#
-# Run "spotify-easyrpm --help" for more info
-#
-
#set -x
@@ -16,7 +9,6 @@
V_SYS_ARCH="$(uname -i)"
V_PKGNAME="spotify-client"
-V_HTTP_REPO="http://repository.spotify.com/pool/non-free/s/${V_PKGNAME}/"
V_TOPDIR=$(rpm --eval '%{_topdir}')
V_SOURCES_DIR="${V_TOPDIR}/SOURCES"
@@ -24,6 +16,8 @@
V_RPMS_DIR="${V_TOPDIR}/RPMS"
V_BUILDROOT_DIR="${V_TOPDIR}/BUILDROOT"
+V_SNAP_EXTRACT_DIR="${V_SOURCES_DIR}/spotify-snap"
+
SYSTEMD_UNIT_DIR="${HOME}/.local/share/systemd/user"
SYSTEMD_UNIT="${SYSTEMD_UNIT_DIR}/${V_PRG_NAME}.service"
SYSTEMD_TIMER="${SYSTEMD_UNIT_DIR}/${V_PRG_NAME}.timer"
@@ -37,15 +31,15 @@
??????????????????????????????????????????????????? ???
?????????????????????????????? ??????????????????????????????
????????????????????? ??? ??? ????????? ????????????????????????
??????????????????????????????????????????????????????
???????????? ????????? ??? ?????? ??? ???????????? ???????????? ???
???????????? ??? ???
-
+Version: 3.0.1
EOF
sleep 2
cat <<EOF
-VERSION: 2.1.2
+Spotify RPM tool for openSUSE / SLE
SUPPORT: https://github.com/megamaced/spotify-easyrpm/issues
-The latest openSUSE Leap, Tumbleweed or SLE are supported only
MODE: ${V_RUN_MODE}
+CHANNEL: ${PREF_CHANNEL}
EOF
}
@@ -53,7 +47,7 @@
f_help() {
cat <<EOF
-${V_PRG_NAME} is a script which can download the latest debian package from
the Spotify
+${V_PRG_NAME} is a script which can download the latest Spotify snap package
from snapcraft.io
repository and convert it into an RPM. It is also capable of installing,
scheduling and storing
the RPMs in a local filesystem repo for installing Spotify updates alongside
regular system updates
@@ -69,6 +63,10 @@
- Set up a daily scheduled update job
- Set up a local filesystem repo
+ ${V_PRG_NAME} --set-channel edge
+
+ - Set either "edge" or "stable" version of Spotify client
+
${V_PRG_NAME} --create-schedule
- If you previously opted out creating an automated update schedule but now
desire it
@@ -96,9 +94,8 @@
f_cleanup() {
-rm "${V_SOURCES_DIR}"/index.html > /dev/null 2>&1
-rm "${V_SOURCES_DIR}"/data.tar.gz > /dev/null 2>&1
-rm -r "${V_SOURCES_DIR:?}"/usr > /dev/null 2>&1
+rm "${V_SOURCES_DIR:?}"/*.snap > /dev/null 2>&1
+rm -r "${V_SNAP_EXTRACT_DIR}" > /dev/null 2>&1
rm -r "${V_SOURCES_DIR:?}"/"${V_PKGNAME}"* > /dev/null 2>&1
rm -r "${V_BUILDROOT_DIR:?}"/"${V_PKGNAME}"* > /dev/null 2>&1
}
@@ -112,11 +109,7 @@
f_arch_check() {
- if [[ "${V_SYS_ARCH}" == i386 ]]; then
- V_DEB_ARCH=i386
- V_RPM_ARCH=i586
- elif [[ "${V_SYS_ARCH}" == x86_64 ]]; then
- V_DEB_ARCH=amd64
+ if [[ "${V_SYS_ARCH}" == x86_64 ]]; then
V_RPM_ARCH=x86_64
else
f_error "Unsupported architecture. Aborting"
@@ -125,33 +118,72 @@
f_config() {
- if [ -f "${V_CONFIG_FILE}" ]; then
- source "${V_CONFIG_FILE}"
- else
- cat << EOF > "${V_CONFIG_FILE}"
+if [ -f "${V_CONFIG_FILE}" ]; then
+ source "${V_CONFIG_FILE}"
+else
+ cat << EOF > "${V_CONFIG_FILE}"
# PREFS
PREF_PROMPT_SCHEDULE=YES
+PREF_PROMPT_CHANNEL=YES
+PREF_CHANNEL=stable
EOF
- fi
+source "${V_CONFIG_FILE}"
+fi
+
+if [ -z "${PREF_CHANNEL}" ]; then
+ echo "PREF_CHANNEL=stable" >> "${V_CONFIG_FILE}"
+ source "${V_CONFIG_FILE}"
+fi
+if [[ ! "${PREF_CHANNEL}" == "stable" ]] && [[ ! "${PREF_CHANNEL}" == "edge"
]]; then
+ sed -i "s/\(PREF_CHANNEL=\)\(.*\)/\1stable/" "${V_CONFIG_FILE}"
+ source "${V_CONFIG_FILE}"
+fi
+if [ -z "${PREF_PROMPT_CHANNEL}" ]; then
+ echo "PREF_PROMPT_CHANNEL=YES" >> "${V_CONFIG_FILE}"
+ source "${V_CONFIG_FILE}"
+fi
}
+f_release_channel() {
+if [[ "${PREF_PROMPT_CHANNEL}" == "YES" ]] && [[ "${V_RUN_MODE}" == "prompt"
]]; then
+ while true
+ do
+ read -rp "Do you wish to download the Spotify stable or edge release
(s/e)?" Q_RELEASE_CHANNEL
+
+ case $Q_RELEASE_CHANNEL in
+ s ) sed -i "s/\(PREF_PROMPT_CHANNEL=\)\(.*\)/\1NO/" "${V_CONFIG_FILE}"
+ sed -i "s/\(PREF_CHANNEL=\)\(.*\)/\1stable/" "${V_CONFIG_FILE}"
+ source "${V_CONFIG_FILE}"
+ echo "Use --set-channel option to change it again"
+ sleep 3
+ break;;
+
+ e ) sed -i "s/\(PREF_PROMPT_CHANNEL=\)\(.*\)/\1NO/" "${V_CONFIG_FILE}"
+ sed -i "s/\(PREF_CHANNEL=\)\(.*\)/\1edge/" "${V_CONFIG_FILE}"
+ source "${V_CONFIG_FILE}"
+ echo "Use --set-channel option to change it again"
+ sleep 3
+ break;;
+
+ esac
+ done
+ fi
+V_HTTP_REPO="$(curl -s -H 'Snap-Device-Series: 16'
http://api.snapcraft.io/v2/snaps/info/spotify | jq -r '."channel-map"[] |
select(.channel.name=='\"$PREF_CHANNEL\"') | .download.url')"
+V_HTTP_VERSION="$(curl -s -H 'Snap-Device-Series: 16'
http://api.snapcraft.io/v2/snaps/info/spotify | jq -r '."channel-map"[] |
select(.channel.name=='\"$PREF_CHANNEL\"') | .version')"
+V_HTTP_SNAP="$(basename ${V_HTTP_REPO})"
+}
+
f_download() {
-echo "Downloading the latest Spotify deb"
-if ! wget -P "${V_SOURCES_DIR}"/ "${V_HTTP_REPO}"/"${V_REPO_LATEST_DEB}"; then
+echo "Downloading the latest Spotify snap"
+if ! wget -P "${V_SOURCES_DIR}"/ "${V_HTTP_REPO}"; then
f_error "Failed to download Spotify. Aborting"
fi
}
-f_set_deb_ver() {
-V_REPO_LATEST_DEB="$(curl -s --list-only "${V_HTTP_REPO}" | grep -wo
"${V_PKGNAME}".*"${V_DEB_ARCH}".deb | cut -f2 -d">" | sort | tail -n1)"
-V_DEB_VER="$(echo $V_REPO_LATEST_DEB | cut -f2 -d"_" | cut -f1 -d"-")"
-}
-
-
f_create_rpmbuild_dirs() {
echo "Creating build dirs in ${V_TOPDIR}"
if ! mkdir -p "${V_TOPDIR}"/{BUILD,BUILDROOT,OTHER,RPMS,SOURCES,SPECS,SRPMS};
then
@@ -174,14 +206,13 @@
}
-f_extract_deb() {
-echo "Extracting deb and preparing"
-ar -x "${V_SOURCES_DIR}"/"${V_PKGNAME}"*"${V_DEB_ARCH}".deb || f_error "Failed
to extract deb"
-rm control.tar.gz debian-binary
-mv data.tar.gz "${V_SOURCES_DIR}"/
-tar xzf "${V_SOURCES_DIR}"/data.tar.gz -C "${V_SOURCES_DIR}"/
-mkdir -p "${V_SOURCES_DIR}"/"${V_PKGNAME}"
-mv "${V_SOURCES_DIR}"/usr "${V_SOURCES_DIR}"/"${V_PKGNAME}"/
+f_extract_snap() {
+echo "Extracting snap and preparing"
+unsquashfs -d "${V_SNAP_EXTRACT_DIR}" "${V_SOURCES_DIR}"/"${V_HTTP_SNAP}" ||
f_error "Failed to extract snap"
+mkdir -p
"${V_SOURCES_DIR}"/"${V_PKGNAME}"/usr/{share/applications,share/doc,bin}
+mv "${V_SNAP_EXTRACT_DIR}"/usr/share/spotify
"${V_SOURCES_DIR}"/"${V_PKGNAME}"/usr/share
+mv "${V_SNAP_EXTRACT_DIR}"/usr/bin/spotify
"${V_SOURCES_DIR}"/"${V_PKGNAME}"/usr/bin
+mv "${V_SNAP_EXTRACT_DIR}"/usr/share/doc/"${V_PKGNAME}"
"${V_SOURCES_DIR}"/"${V_PKGNAME}"/usr/share/doc
}
@@ -253,22 +284,33 @@
if ! rpm -q rpm-build > /dev/null 2>&1; then
echo "Installing build dependencies (rpm-build)"
if ! sudo zypper --non-interactive in rpm-build; then
- f_error "Failed to install build dependencies. Aborting"
+ f_error "Failed to install build dependencies (rpm-build). Aborting"
fi
fi
if ! rpm -q update-desktop-files > /dev/null 2>&1; then
echo "Installing build dependencies (update-desktop-files)"
if ! sudo zypper --non-interactive in update-desktop-files; then
- f_error "Failed to install build dependencies. Aborting"
+ f_error "Failed to install build dependencies (update-desktop-files).
Aborting"
+ fi
+fi
+if ! rpm -q squashfs > /dev/null 2>&1; then
+ echo "Installing build dependencies (squashfs)"
+ if ! sudo zypper --non-interactive in squashfs; then
+ f_error "Failed to install build dependencies (squashfs). Aborting"
+ fi
+fi
+if ! rpm -q jq > /dev/null 2>&1; then
+ echo "Installing build dependencies (jq)"
+ if ! sudo zypper --non-interactive in jq; then
+ f_error "Failed to install build dependencies (jq). Aborting"
fi
fi
}
f_prepare_src() {
echo "Preparing RPM src tarball"
-mkdir -p "${V_SOURCES_DIR}"/"${V_PKGNAME}"/usr/share/applications
f_desktop_entry
-tar czf "${V_SOURCES_DIR}"/"${V_PKGNAME}"-"${V_DEB_VER}".tar.gz -C
"${V_SOURCES_DIR}"/ "${V_PKGNAME}"
+tar czf "${V_SOURCES_DIR}"/"${V_PKGNAME}"-"${V_HTTP_VERSION}".tar.gz -C
"${V_SOURCES_DIR}"/ "${V_PKGNAME}"
}
@@ -290,16 +332,33 @@
f_ver_compare() {
-echo "Comparing debian repo version to installed or local machine repo version
(if any)"
-if [[ "$(rpm -q "${V_PKGNAME}" | cut -f3 -d"-")" == "${V_DEB_VER}" ]] || [[
"$(find ${V_LOCAL_REPO} -type f -name "*.rpm" | sort | tail -n1 | cut -f4
-d"-")" == "${V_DEB_VER}" ]] ; then
+V_HTTP_VERSION_NUM="$( echo ${V_HTTP_VERSION} | sed 's/\.[^.]*$//' | sed
's/\.//g' )"
+V_INSTALL_VERSION_NUM="$( rpm -q "${V_PKGNAME}" | cut -f3 -d"-" | sed
's/\.[^.]*$//' | sed 's/\.//g' )"
+declare -a V_REPO_VERSION_NUMS="$( find ${V_LOCAL_REPO} -type f -name "*.rpm"
| sort | cut -f4 -d"-" | sed 's/\.[^.]*$//' | sed 's/\.//g' )"
+
+echo "Comparing snapcraft.io repo version to installed or local machine repo
version (if any)"
+
+for V_REPO_VERSION_NUM in ${V_REPO_VERSION_NUMS[@]}; do
+if [[ $V_HTTP_VERSION_NUM == $V_REPO_VERSION_NUM ]] || [[ $V_HTTP_VERSION_NUM
-lt $V_REPO_VERSION_NUM ]]; then
+V_MATCHEDVERSION=TRUE
+break
+fi
+done
+
+if [[ $V_HTTP_VERSION_NUM == $V_INSTALL_VERSION_NUM ]]; then
+V_MATCHEDVERSION=TRUE
+fi
+
+if [[ "${V_MATCHEDVERSION}" == "TRUE" ]]; then
if [[ "${V_RUN_MODE}" != "prompt" ]]; then
- echo "spotify-client ${V_DEB_VER} is already installed or available from
local machine repo. Quitting"
+ echo "${V_PKGNAME} ${V_HTTP_VERSION} is already installed or available from
local machine repo. Quitting"
f_cleanup
exit 0
else
while true
do
- read -rp "The latest version in the repo is ${V_DEB_VER} which is already
installed. Continue? (y/n)" Q_SAME_VER_CONTINUE
+ echo "The latest $PREF_CHANNEL version at snapcraft.io is ${V_HTTP_VERSION}
which is already installed or available from local machine repo. "
+ read -rp "Continue anyway? (y/n)" Q_SAME_VER_CONTINUE
case $Q_SAME_VER_CONTINUE in
y ) echo "ok"
@@ -339,7 +398,7 @@
#
Name: ${V_PKGNAME}
-Version: ${V_DEB_VER}
+Version: ${V_HTTP_VERSION}
Release: 0
License: https://www.spotify.com/legal/end-user-agreement
Summary: Spotify streaming music client
@@ -447,9 +506,9 @@
f_rpm_install() {
-echo "Installing ${V_PKGNAME}-${V_DEB_VER}"
-if ! sudo zypper --non-interactive --no-gpg-checks in
"${V_RPMS_DIR}"/"${V_RPM_ARCH}"/"${V_PKGNAME}"-"${V_DEB_VER}"*"${V_RPM_ARCH}".rpm;
then
- f_error "Failed to install ${V_PKGNAME}-${V_DEB_VER}"
+echo "Installing ${V_PKGNAME}-${V_HTTP_VERSION}"
+if ! sudo zypper --non-interactive --no-gpg-checks in
"${V_RPMS_DIR}"/"${V_RPM_ARCH}"/"${V_PKGNAME}"-"${V_HTTP_VERSION}"*"${V_RPM_ARCH}".rpm;
then
+ f_error "Failed to install ${V_PKGNAME}-${V_HTTP_VERSION}"
fi
}
@@ -516,7 +575,7 @@
f_update_local_repo() {
if [[ "${V_RUN_MODE}" != "clean-repo" ]]; then
-echo "Moving RPMs from your rpmbuild ${V_RPMS_DIR} to your local repo
${V_LOCAL_REPO}"
+echo "Moving any Spotify RPMs from your rpmbuild ${V_RPMS_DIR} to your local
repo ${V_LOCAL_REPO}"
find "${V_RPMS_DIR}"/"${V_RPM_ARCH}"/ -name "${V_PKGNAME}-*${V_RPM_ARCH}.rpm"
-type f -exec mv -t "${V_LOCAL_REPO}" {} \+
fi
if ! createrepo -q "${V_LOCAL_REPO}"; then
@@ -530,6 +589,12 @@
echo "done!"
}
+f_set_channel() {
+sed -i "s/\(PREF_CHANNEL=\)\(.*\)/\1$PREF_CHANNEL/" "${V_CONFIG_FILE}"
+sed -i "s/\(PREF_PROMPT_CHANNEL=\)\(.*\)/\1NO/" "${V_CONFIG_FILE}"
+echo "done!"
+}
+
f_main() {
while [ "$1" != "" ]; do
@@ -543,10 +608,10 @@
f_logo
f_install_build_deps
f_create_rpmbuild_dirs
- f_set_deb_ver
+ f_release_channel
f_ver_compare
f_download
- f_extract_deb
+ f_extract_snap
f_prepare_src
f_rpm_spec
f_run_build
@@ -557,10 +622,10 @@
break
;;
--scheduled | -scheduled ) V_RUN_MODE="scheduled"
- f_set_deb_ver
+ f_release_channel
f_ver_compare
f_download
- f_extract_deb
+ f_extract_snap
f_prepare_src
f_rpm_spec
f_run_build
@@ -583,6 +648,13 @@
f_clean_repo
break
;;
+ --set-channel ) V_RUN_MODE="set-channel"
+ shift
+ PREF_CHANNEL="$1"
+ f_logo
+ f_set_channel
+ break
+ ;;
* ) V_RUN_MODE="invalid"
f_logo
echo "Unrecognised option. Run --help for more info"
@@ -595,10 +667,10 @@
f_logo
f_install_build_deps
f_create_rpmbuild_dirs
- f_set_deb_ver
+ f_release_channel
f_ver_compare
f_download
- f_extract_deb
+ f_extract_snap
f_prepare_src
f_rpm_spec
f_run_build