diff --git a/package_specs/generate-patches.sh b/package_specs/generate-patches.sh index 898473274..314d69f32 100755 --- a/package_specs/generate-patches.sh +++ b/package_specs/generate-patches.sh @@ -3,7 +3,7 @@ scriptroot="$(dirname "$(realpath "$0")")" vendors=( deltacast blackmagick dvs aja bluefish cuda ) -subpackages=( ultragrid-nightly ultragrid ultragrid-proprietary-drivers ) +subpackages=( ultragrid-nightly ultragrid $(echo "ultragrid-proprietary-drivers"* ) ) mkdir a for pkg in ${subpackages[*]} ; do diff --git a/package_specs/outdate-drivers.sh b/package_specs/outdate-drivers.sh new file mode 100755 index 000000000..aa95def58 --- /dev/null +++ b/package_specs/outdate-drivers.sh @@ -0,0 +1,115 @@ +#!/bin/bash + +function patch_file(){ + local filename="$2" + local entry="$1" + local lockplace="# replace this line with generated conflicts" + grep -vE '^((Provides)|(Conflicts))[:]?[[:space:]]*ultragrid-proprietary-drivers.*' "$filename" > "$filename.$$" + sed -i "s/$lockplace.*\$/$entry\n$lockplace/g" "$filename.$$" + mv "$filename.$$" "$filename" +} +function patch_pkgname(){ + local filename="$1" + local entry="$2" + sed -ri "/^Source:.*\$/b; s/ultragrid-proprietary-drivers((-rpmlintrc)?)\$/ultragrid-proprietary-drivers-$entry\1/g" "$filename" + sed -ri "s/^ultragrid-proprietary-drivers\b/ultragrid-proprietary-drivers-$entry/g" "$filename" +} +function move_file(){ + local lintfile="$1" + local lockver="$2" + mv "$lintfile" "$(echo "$lintfile" | sed "s#ultragrid-proprietary-drivers#ultragrid-proprietary-drivers-$lockver#g")" +} +function debdirpatch(){ + local prefix="$1" + local archivefile="$2" + local lockver="$3" + local conflicttext="$4" + local providetext="$5" + + if [[ "x$archivefile" != "x" ]] && [[ -f "$archivefile" ]] ; then + rm -rf debian + tar -xf "$debarchive" + fi + + if [[ -f "${prefix}control" ]] ; then + patch_file "$conflicttext\n$providetext" "${prefix}control" + patch_pkgname "${prefix}control" "$lockver" + fi + + local installfile="${prefix}ultragrid-proprietary-drivers.install" + if [[ -f "$installfile" ]] ; then + move_file "$installfile" "$lockver" + fi + + for lintfile in "${prefix}"*lintian* "${prefix}"source/*lintian* ; do + test -f "$lintfile" || continue + patch_pkgname "$lintfile" "$lockver" + done + + if [[ "x$archivefile" != "x" ]] && [[ -f "$archivefile" ]] ; then + tar -c debian -zf "$debarchive" + rm -rf debian + fi +} +function err_exit(){ + printf "%s\n" "$1" >&2 + exit $2 +} + +scriptroot="$(dirname "$(realpath "$0")")" + +driverssubdir=ultragrid-proprietary-drivers +lockver="$1" +newdir="$scriptroot/$driverssubdir-$lockver" + +[[ "x$lockver" != "x" ]] || err_exit "usage: $0 " 1 +[[ -d "$newdir" ]] && err_exit "directory $newdir allready exists, I refuse to run!" 1 + +shift + +providetext="Provides:\tultragrid-proprietary-drivers-release-$lockver" +conflicttext="Conflicts:" +sep="\t" +for version in $(printf "%s" "$*" | sed -r 's#\b([[:digit:].]+)#release-\1#g') nightly ; do + conflicttext+="${sep}ultragrid-proprietary-drivers-$version" + sep=", " +done + +cp -r "$scriptroot/$driverssubdir" "$newdir" + +pushd "$newdir" + +debdirpatch "debian." "" "$lockver" "$conflicttext" "$providetext" + +for debarchive in debian*.tar.gz ; do + debdirpatch "debian/" "$debarchive" "$lockver" "$conflicttext" "$providetext" +done + +#patch package name in rpmspec +for specfile in *.spec ; do + test -f "$specfile" || continue + sed -i "s#-rpmlintrc\$#-$lockver-rpmlintrc#g" "$specfile" + patch_file "$conflicttext\n$providetext" "$specfile" + patch_pkgname "$specfile" "$lockver" +done +#patch package name in debian file +for dscfile in *.dsc ; do + test -f "$dscfile" || continue + patch_pkgname "$dscfile" "$lockver" +done + +# process rpmlintrc +for lintfile in *-rpmlintrc ; do + test -f "$lintfile" || continue + sed -i "s#ultragrid-proprietary-drivers#ultragrid-proprietary-drivers-$lockver#g" "$lintfile" +done + +for lintfile in *rpmlintrc *.spec *.dsc ; do + test -f "$lintfile" || continue + move_file "$lintfile" "$lockver" +done + +for servicefile in _service* ; do + sed -i "s#package_specs/ultragrid-proprietary-drivers/#package_specs/ultragrid-proprietary-drivers-$lockver/#g" "$servicefile" +done +popd diff --git a/package_specs/ultragrid-proprietary-drivers/debian.tar.gz b/package_specs/ultragrid-proprietary-drivers/debian.tar.gz index ce37c7f8c..e19a9300f 100644 Binary files a/package_specs/ultragrid-proprietary-drivers/debian.tar.gz and b/package_specs/ultragrid-proprietary-drivers/debian.tar.gz differ diff --git a/package_specs/ultragrid-proprietary-drivers/ultragrid-proprietary-drivers.spec b/package_specs/ultragrid-proprietary-drivers/ultragrid-proprietary-drivers.spec index d757ece9d..f64ce7688 100644 --- a/package_specs/ultragrid-proprietary-drivers/ultragrid-proprietary-drivers.spec +++ b/package_specs/ultragrid-proprietary-drivers/ultragrid-proprietary-drivers.spec @@ -7,6 +7,8 @@ Group: Applications/Multimedia License: GPL URL: http://ultragrid.cz +# replace this line with generated conflicts +Provides: ultragrid-proprietary-drivers-nightly, ultragrid-proprietary-drivers-release-1.5, ultragrid-proprietary-drivers-release-1.4 BuildRequires: gcc-c++, make, automake, autoconf, coreutils BuildRequires: libX11-devel, glew-devel, libXext-devel, glibc, ncurses-devel, qt-devel BuildRequires: %kernel_module_package_buildreqs , kernel