Hi Zoltánm

On Thu, Mar 24, 2016 at 08:28:53AM +0000, Zoltán Balogh wrote:
> Hi,
> 
> The Debian Policy Manual 
> (https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version) 
> says that the upstream_version may contain only alphanumerics and the 
> characters . + - : ~ (full stop, plus, hyphen, colon, tilde) and should start 
> with a digit.
> 
> Currently, the upstream_version is defined in the debian/rules file:
> 
> DEB_UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: 
> ([0-9]:)*([^-]+).*,\2,p')
> 
> The version number is taken from the dpkg-parsechangelog printout then the 
> first part of the version number which does not contain hyphen is filtered 
> out with sed. However the Debian Policy Manual says that hyphen is allowed in 
> the upstream_version. 
> 
> This is not a problem with current vanilla OVS debian version. But, if a 
> postfix string including a hyphen is added to the upstream_version then 
> installation of datapath-dkms package will fail. 
> 
> I think the following patch solves this problem.
> 
> Signed-off-by: Zoltán Balogh <zoltan.bal...@ericsson.com>

I wonder if the version manipulation could be expressed using sed, as the code
existing code does, rather than awk, sed, expr and shell.

Perhaps something like this:

sed -rne 's,^Version: ([0-9]+:)?([0-9][a-zA-Z0-9.+:~-]*)(-[a-zA-Z0-9*.~]*),\2,p'

Which I tested as follows:

Input: Version: 2.4.90-1
Output: 2.4.90

Input: Version: 1:2.4.90-1
Output: 2.4.90

Input: Version: 1:3:2.4.90-1
Output: 3:2.4.90

Input: Version: 2.4.90-xyz-1
Output: 2.4.90-xyz

Input: Version: 1:2.4.90-xyz-1
Output: 2.4.90-xyz

Input: Version: 1:3:2.4.90-xyz-1
Output: 3:2.4.90-xyz

N.B: Does not work without debian_version present
Input: Version: 2.4.90
Output: 

> 
> ---
> 
> diff --git a/debian/rules b/debian/rules
> index d8e90c7..70539ab 100755
> --- a/debian/rules
> +++ b/debian/rules
> @@ -13,7 +13,9 @@
> 
>  PACKAGE=openvswitch
>  PACKAGE_DKMS=openvswitch-datapath-dkms
> -DEB_UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: 
> ([0-9]:)*([^-]+).*,\2,p')
> +DEB_VERSION=$(shell dpkg-parsechangelog | awk '/^Version: / {print $$2}' | 
> sed -rne 's,([0-9]:)+([.])*,\2,p')
> +DEB_REVISION=$(shell expr "$(DEB_VERSION)" : '.*\(-.*\)' )
> +DEB_UPSTREAM_VERSION=$(shell version=$(DEB_VERSION); expr + 
> $${version%"$(DEB_REVISION)"})
> 
>  ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
>  PARALLEL = -j$(patsubst parallel=%,%,$(filter 
> parallel=%,$(DEB_BUILD_OPTIONS)))
> 
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to