Commit f7394acd authored by Vitaly Lipatov's avatar Vitaly Lipatov

epm repack: implement all pack related things via pack code

parent 81eeef27
......@@ -63,17 +63,6 @@ __epm_split_by_pkg_type()
}
# $spec $PKGNAME $VERSION
__set_name_version()
{
SPEC="$1"
PKGNAME="$2"
VERSION="$3"
[ -n "$PKGNAME" ] && subst "s|^Name:.*|Name: $PKGNAME|" $SPEC
[ -n "$VERSION" ] && subst "s|^Version:.*|Version: $VERSION|" $SPEC
}
__check_stoplist()
{
local pkg="$1"
......@@ -84,34 +73,9 @@ __check_stoplist()
}
__set_version_pkgname()
{
local alpkg="$1"
VERSION="$(echo "$alpkg" | grep -o -P '[-_.][0-9][0-9]*([.]*[0-9])*' | head -n1 | sed -e 's|^[-_.]||')" #"
[ -n "$VERSION" ] && PKGNAME="$(echo "$alpkg" | sed -e "s|[-_.]$VERSION.*||")"
# set version as all between name and extension
#local woext="$(echo "alpkg" | sed -e 's|\.tar.*||')"
#if [ "$woext" != "$alpkg" ] ; then
# VERSION="$(echo "$woext" " | sed -e "s|^$PKGNAME[-_.]||")"
#fi
}
# AppImage version
# hack for ktalk2.4.2 -> ktalk 2.4.2
__set_version_apppkgname()
{
local alpkg="$1"
VERSION="$(echo "$alpkg" | grep -o -P "[-_.a-zA-Z]([0-9])([0-9])*([.]*[0-9])*" | head -n1 | sed -e 's|^[-_.a-zA-Z]||' -e 's|--|-|g' )" #"
[ -n "$VERSION" ] && PKGNAME="$(echo "$alpkg" | sed -e "s|[-_.]$VERSION.*||")"
}
# arg: <package file>
# sets:
# alpkg - package file name without path
# PKGNAME - package name
# VERSION - version of the package
# SUBGENERIC - name of generic file's extension
__prepare_source_package()
{
......@@ -128,54 +92,33 @@ __prepare_source_package()
VERSION=''
SUBGENERIC=''
# convert tarballs to tar (for alien)
if rhas "$alpkg" "\.(rpm|deb)$" ; then
# skip packing for supported: rpm and deb
return
fi
# convert tarballs to tar (for alien)
load_helper epm-pack
if rhas "$alpkg" "\.AppImage$" ; then
__set_version_apppkgname $alpkg
[ -n "$VERSION" ] || fatal "Can't get version from $alpkg."
__epm_pack_run_handler generic-appimage "$pkg"
SUBGENERIC='appimage'
# TODO: move repack archive to erc?
[ -x "$alpkg" ] || docmd chmod u+x $verbose "$alpkg"
./$alpkg --appimage-extract || fatal
alpkg=$PKGNAME-$VERSION.tar
# make a tar for alien
erc a $alpkg squashfs-root
return
elif rhas "$alpkg" "\.snap$" ; then
__epm_pack_run_handler generic-snap "$pkg"
SUBGENERIC='snap'
else
__epm_pack_run_handler generic-tar "$pkg"
fi
__set_version_pkgname $alpkg
if [ -n "$VERSION" ] ; then
# TODO: don't use erc for detect type? then we potentially can skip install it
pkgtype="$(erc type $alpkg)"
local newalpkg
newalpkg=$PKGNAME-$VERSION.$pkgtype
#[ -n "$PKGNAME" ] || PKGNAME=$(basename $alpkg .$pkgtype)
if [ "$pkgtype" = "tar" ] || [ "$pkgtype" = "tar.gz" ] || [ "$pkgtype" = "tgz" ] ; then
# just rename supported formats
if [ "$alpkg" != "$newalpkg" ] ; then
mv $alpkg $newalpkg
fi
else
# converts directly unsupported formats
newalpkg=$PKGNAME-$VERSION.tar
#newalpkg=$(basename $alpkg .$pkgtype).tar
erc repack $alpkg $newalpkg || fatal
fi
if [ "$alpkg" != "$newalpkg" ] ; then
rm -f $verbose $alpkg
alpkg=$newalpkg
fi
else
warning "Can't detect version in $alpkg. We have almost no chance it will supported in alien."
alpkg=$(basename $returntarname)
if [ "$(pwd)" != "$(dirname "$returntarname")" ] ; then
cp $verbose $returntarname $alpkg
[ -r "$returntarname.eepm.yaml" ] && cp $verbose $returntarname.eepm.yaml $alpkg.eepm.yaml
fi
}
# FIXME: Нужно как-то обеспечить непродолжение выполнения.
# used in epm install
# fill repacked_pkgs
......
......@@ -64,13 +64,6 @@ __fix_spec()
fi
done
# FIXME: where is a source of the bug with empty Summary?
subst "s|Summary: *$|Summary: $pkgname (was empty Summary after alien)|" $spec
subst "s|^\(Version: .*\)~.*|\1|" $spec
subst "s|^Release: |Release: epm1.repacked.|" $spec
subst "s|^Distribution:.*||" $spec
subst "s|^\((Converted from a\) \(.*\) \(package.*\)|(Repacked from binary \2 package with epm $EPMVERSION)\n\1 \2 \3|" $spec
#" hack for highlight
}
......@@ -158,6 +151,7 @@ __epm_repack_to_rpm()
cp $verbose $pkg $tmpbuilddir/../$alpkg
cd $tmpbuilddir/../ || fatal
# fill alpkg and SUBGENERIC
__prepare_source_package "$pkg"
cd $tmpbuilddir/ || fatal
......@@ -179,14 +173,11 @@ __epm_repack_to_rpm()
mv $spec $tmpbuilddir || fatal
spec="$tmpbuilddir/$(basename "$spec")"
#__set_name_version $spec $PKGNAME $VERSION
local pkgname="$(grep "^Name: " $spec | sed -e "s|Name: ||g" | head -n1)"
# for tarballs fix permissions
[ -n "$VERSION" ] && chmod $verbose -R a+rX $buildroot/*
# run generic scripts and repack script for the pkg
cd $buildroot || fatal
__fix_spec $pkgname $buildroot $spec
__apply_fix_code "generic" $buildroot $spec $pkgname $abspkg
[ -n "$SUBGENERIC" ] && __apply_fix_code "generic-$SUBGENERIC" $buildroot $spec $pkgname $abspkg
......@@ -201,6 +192,7 @@ __epm_repack_to_rpm()
else
a='' rpmbuild --buildroot $buildroot --target $TARGETARCH -bb $spec >/dev/null || fatal
fi
# remove copy of source binary package (don't mix with generated)
rm -f $tmpbuilddir/../$alpkg
local repacked_rpm="$(realpath $tmpbuilddir/../*.rpm)"
......
#!/bin/sh
TAR="$1"
RETURNTARNAME="$2"
#VERSION+"$3"
. $(dirname $0)/common.sh
alpkg=$(basename $TAR)
VERSION="$(echo "$alpkg" | grep -o -P '[-_.][0-9][0-9]*([.]*[0-9])*' | head -n1 | sed -e 's|^[-_.]||')" #"
[ -n "$VERSION" ] && PRODUCT="$(echo "$alpkg" | sed -e "s|[-_.]$VERSION.*||")" || fatal "Can't get version from $TAR. We have almost no chance it will supported in alien."
# set version as all between name and extension
#local woext="$(echo "alpkg" | sed -e 's|\.tar.*||')"
#if [ "$woext" != "$alpkg" ] ; then
# VERSION="$(echo "$woext" " | sed -e "s|^$PKGNAME[-_.]||")"
#fi
pkgtype="$(erc type $alpkg)"
PKGNAME=$PRODUCT-$VERSION.$pkgtype
if [ "$pkgtype" = "tar" ] || [ "$pkgtype" = "tar.gz" ] || [ "$pkgtype" = "tgz" ] ; then
# just rename supported formats
if [ "$alpkg" != "$PKGNAME" ] ; then
mv $alpkg $PKGNAME
fi
else
# converts directly unsupported formats
PKGNAME=$PRODUCT-$VERSION.tar
erc repack $alpkg $PKGNAME || fatal
fi
#if [ "$alpkg" != "$newalpkg" ] ; then
# rm -f $verbose $alpkg
# alpkg=$newalpkg
# fi
# TODO: how to add to tarball?
cat <<EOF >$PKGNAME.eepm.yaml
name: $PRODUCT
version: $VERSION
upstream_file: $alpkg
EOF
return_tar $PKGNAME
......@@ -3,6 +3,7 @@
BUILDROOT="$1"
SPEC="$2"
PRODUCT="$3"
PKG="$4"
# firstly, pack $PRODUCTDIR if used
. $(dirname $0)/common.sh
......@@ -48,3 +49,28 @@ subst "s|^\(Name: .*\)$|# Override repository package\nEpoch: 100\n\1|g" $SPEC
subst "1i%global _build_pkgcheck_set %nil" $SPEC
subst "1i%global _build_pkgcheck_srpm %nil" $SPEC
set_rpm_field()
{
local field="$1"
local value="$2"
local v="$(grep "^$field:.*" $SPEC | sed -e "s|$field: *||g" | head -n1)"
if [ -n "$v" ] ; then
[ -n "$value" ] || return
subst "s|^$field:.*|$field: $value|" $SPEC
else
[ -n "$value" ] || value="Stub"
subst "1i$field: $value" $SPEC
fi
}
# FIXME: where is a source of the bug with empty Summary?
set_rpm_field "Summary" "$PRODUCT (fixme: was empty Summary after alien)"
# clean version
subst "s|^\(Version: .*\)~.*|\1|" $SPEC
# add our prefix to release
subst "s|^Release: |Release: epm1.repacked.|" $SPEC
subst "s|^\((Converted from a\) \(.*\) \(package.*\)|(Repacked from binary \2 package with $(epm --short --version))\n\1 \2 \3|" $SPEC
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment