Hello community,
here is the log from the commit of package cabal-rpm for openSUSE:Factory checked in at 2016-10-19 13:02:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cabal-rpm (Old)
and /work/SRC/openSUSE:Factory/.cabal-rpm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cabal-rpm"
Changes:
--------
--- /work/SRC/openSUSE:Factory/cabal-rpm/cabal-rpm.changes 2016-07-21 07:59:56.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.cabal-rpm.new/cabal-rpm.changes 2016-10-19 13:02:20.000000000 +0200
@@ -1,0 +2,5 @@
+Thu Sep 15 07:00:41 UTC 2016 - psimons@suse.com
+
+- Update to version 0.10.0 revision 0 with cabal2obs.
+
+-------------------------------------------------------------------
Old:
----
cabal-rpm-0.9.11.tar.gz
New:
----
cabal-rpm-0.10.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cabal-rpm.spec ++++++
--- /var/tmp/diff_new_pack.P2TBd8/_old 2016-10-19 13:02:21.000000000 +0200
+++ /var/tmp/diff_new_pack.P2TBd8/_new 2016-10-19 13:02:21.000000000 +0200
@@ -17,7 +17,7 @@
Name: cabal-rpm
-Version: 0.9.11
+Version: 0.10.0
Release: 0
Summary: RPM packaging tool for Haskell Cabal-based packages
License: GPL-3.0+
@@ -25,7 +25,6 @@
Url: https://hackage.haskell.org/package/%{name}
Source0: https://hackage.haskell.org/package/%{name}-%{version}/%{name}-%{version}.tar.gz
BuildRequires: ghc-Cabal-devel
-# Begin cabal-rpm deps:
BuildRequires: ghc-directory-devel
BuildRequires: ghc-filepath-devel
BuildRequires: ghc-old-locale-devel
@@ -37,7 +36,6 @@
Recommends: ghc
Recommends: yum-utils
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-# End cabal-rpm deps
%description
This package provides a RPM packaging tool for Haskell Cabal-based packages.
@@ -52,22 +50,18 @@
%prep
%setup -q
-
%build
%ghc_bin_build
-install -p -m 0644 -D man/cblrpm.1 %{buildroot}%{_mandir}/man1/cblrpm.1
-
-
%install
%ghc_bin_install
-
+install -p -m 0644 -D man/cabal-rpm.1 %{buildroot}%{_mandir}/man1/cabal-rpm.1
%files
%defattr(-,root,root,-)
%doc COPYING
%doc ChangeLog README.md
-%{_bindir}/cblrpm
-%{_mandir}/man1/cblrpm.1*
+%{_bindir}/%{name}
+%{_mandir}/man1/cabal-rpm.1*
%changelog
++++++ cabal-rpm-0.9.11.tar.gz -> cabal-rpm-0.10.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/ChangeLog new/cabal-rpm-0.10.0/ChangeLog
--- old/cabal-rpm-0.9.11/ChangeLog 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/ChangeLog 2016-07-27 13:15:19.000000000 +0200
@@ -1,3 +1,22 @@
+* 0.10.0 (2016-07-27)
+- rename executable and manpage back to 'cabal-rpm': more predictable
+- explicit error for unknown command
+- sort docs and include upstream changelogs and news
+- add cabal-rpm version header line to spec files
+- new highly experimental command to refresh spec files
+- only add "ExclusiveArch: %{ghc_arches_with_ghci}" for RHEL/EPEL
+- use revised Hackage .cabal files on SUSE (@peti)
+- on SUSE add explicit requires for pkgconfig
+- new --compiler option (@peti)
+- new --distro option (@peti)
+- new --strict option which fails when missing cdeps (@peti),
+ otherwise a warning is not output
+- update now shows the generated patch
+- use %cabal_test (@mimi1vx)
+- no longer duplicate docs in datadir
+- package datadir better
+- for SUSE libs executables now go in the base package
+
* 0.9.11 (2016-05-06)
- build with Cabal-1.24
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/cabal-rpm.cabal new/cabal-rpm-0.10.0/cabal-rpm.cabal
--- old/cabal-rpm-0.9.11/cabal-rpm.cabal 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/cabal-rpm.cabal 2016-07-27 13:15:19.000000000 +0200
@@ -1,5 +1,5 @@
Name: cabal-rpm
-Version: 0.9.11
+Version: 0.10.0
Synopsis: RPM packaging tool for Haskell Cabal-based packages
Description:
This package provides a RPM packaging tool for Haskell Cabal-based packages.
@@ -20,8 +20,10 @@
2012-2016 Jens Petersen
Category: Distribution
Build-type: Simple
-Extra-source-files: README.md ChangeLog man/cblrpm.1.md man/cblrpm.1
+Extra-source-files: README.md ChangeLog man/cabal-rpm.1.md man/cabal-rpm.1
Cabal-version: >=1.6
+Tested-with: GHC == 7.0.4, GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4,
+ GHC == 7.10.3, GHC == 8.0.1
source-repository head
type: git
@@ -31,7 +33,7 @@
Description: Use old-locale and time < 1.5
Default: True
-Executable cblrpm
+Executable cabal-rpm
Main-is: Main.hs
Build-depends: base < 5,
Cabal > 1.10 && < 1.25,
@@ -49,9 +51,11 @@
Commands.Diff,
Commands.Install,
Commands.RpmBuild,
+ Commands.Refresh,
Commands.Spec,
Commands.Update,
Dependencies,
+ Distro,
FileUtils,
PackageUtils,
Setup,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/man/cabal-rpm.1 new/cabal-rpm-0.10.0/man/cabal-rpm.1
--- old/cabal-rpm-0.9.11/man/cabal-rpm.1 1970-01-01 01:00:00.000000000 +0100
+++ new/cabal-rpm-0.10.0/man/cabal-rpm.1 2016-07-27 13:15:19.000000000 +0200
@@ -0,0 +1,115 @@
+.\" Automatically generated by Pandoc 1.17.2
+.\"
+.TH "CBLRPM" "1" "2013\-01\-21" "" ""
+.hy
+.SH NAME
+.PP
+cblrpm \- a RPM packaging tool for Haskell Cabal packages
+.SH SYNOPSIS
+.PP
+cblrpm [\f[I]options\f[]] spec [\f[I]path\-or\-pkg\f[]] cblrpm
+[\f[I]options\f[]] local [\f[I]path\-or\-pkg\f[]] cblrpm
+[\f[I]options\f[]] srpm [\f[I]path\-or\-pkg\f[]] cblrpm
+[\f[I]options\f[]] prep [\f[I]path\-or\-pkg\f[]] cblrpm
+[\f[I]options\f[]] builddep [\f[I]path\-or\-pkg\f[]] cblrpm
+[\f[I]options\f[]] install [\f[I]path\-or\-pkg\f[]] cblrpm
+[\f[I]options\f[]] depends [\f[I]path\-or\-pkg\f[]] cblrpm
+[\f[I]options\f[]] requires [\f[I]path\-or\-pkg\f[]] cblrpm
+[\f[I]options\f[]] missingdeps [\f[I]path\-or\-pkg\f[]] cblrpm
+[\f[I]options\f[]] diff [\f[I]path\-or\-pkg\f[]] cblrpm
+[\f[I]options\f[]] update [\f[I]path\-or\-pkg\f[]]
+.SH DESCRIPTION
+.PP
+cblrpm generates RPM packages and .spec files from Haskell Cabal
+package.
+.PP
+If no \f[I]path\-or\-pkg\f[] is specified, cblrpm looks for a .spec or
+.cabal file in the current directory.
+Otherwise, it will look for \f[I]path\-or\-pkg\f[].
+If the argument is a directory then it will look there for a .spec or
+.cabal file.
+If the argument is a path to a .cabal file then it will use it.
+Otherwise if there is no \[aq]/\[aq] in the argument and it does not
+exist then cblrpm will try to unpack the package and use its .cabal
+file.
+cblrpm uses a temporary directory for unpackaging tarballs or packages.
+cblrpm then parses the .cabal file and uses it to generate a .spec file
+that can be built.
+.PP
+If a .spec already exists, cblrpm outputs to .spec.cblrpm instead.
+.SH OPTIONS
+.TP
+.B \-h, \-\-help
+Show the help text.
+.RS
+.RE
+.TP
+.B \-b, \-\-binary
+Force the base package name to be the Hackage package name.
+.RS
+.RE
+.TP
+.B \-f \f[I]FLAGS\f[], \-\-flags=\f[I]FLAGS\f[]
+Override one or more Cabal build configuration flags.
+.RS
+.RE
+.TP
+.B \-\-release=\f[I]RELEASE\f[]
+Override the release number in the .spec file.
+.RS
+.RE
+.TP
+.B \-v \f[I]N\f[], \-\-verbose=\f[I]N\f[]
+Set verbosity to \f[I]N\f[].
+.RS
+.RE
+.TP
+.B \-\-version=\f[I]VERSION\f[]
+Override the version number in the .spec file.
+.RS
+.RE
+.SH EXAMPLES
+.PP
+Below CMD can be one of: spec, srpm, prep, local, install, diff,
+builddep, depends, requires, missingdeps, update
+.PP
+Do CMD for the package in current directory:
+.IP
+.nf
+\f[C]
+cblrpm\ CMD
+\f[]
+.fi
+.PP
+Do CMD for package (directory or package name):
+.IP
+.nf
+\f[C]
+cblrpm\ CMD\ [package]
+\f[]
+.fi
+.PP
+Do CMD for package\-version (directory or package name):
+.IP
+.nf
+\f[C]
+cblrpm\ CMD\ [package\-version]
+\f[]
+.fi
+.PP
+Do CMD on a .cabal file:
+.IP
+.nf
+\f[C]
+cblrpm\ CMD\ path/to/some.cabal
+\f[]
+.fi
+.SH HISTORY
+.PP
+Cabal\-rpm was originally written by Bryan O\[aq]Sullivan in 2007\-2008
+and resurrected by Jens Petersen in 2012 to replace cabal2spec.
+.SH SEE ALSO
+.PP
+http://github.com/juhp/cabal-rpm/
+.SH AUTHORS
+This manpage was written by Jens Petersen.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/man/cabal-rpm.1.md new/cabal-rpm-0.10.0/man/cabal-rpm.1.md
--- old/cabal-rpm-0.9.11/man/cabal-rpm.1.md 1970-01-01 01:00:00.000000000 +0100
+++ new/cabal-rpm-0.10.0/man/cabal-rpm.1.md 2016-07-27 13:15:19.000000000 +0200
@@ -0,0 +1,81 @@
+% CBLRPM(1)
+% This manpage was written by Jens Petersen
+% 2013-01-21
+
+# NAME
+cblrpm - a RPM packaging tool for Haskell Cabal packages
+
+# SYNOPSIS
+cblrpm [*options*] spec [*path-or-pkg*]
+cblrpm [*options*] local [*path-or-pkg*]
+cblrpm [*options*] srpm [*path-or-pkg*]
+cblrpm [*options*] prep [*path-or-pkg*]
+cblrpm [*options*] builddep [*path-or-pkg*]
+cblrpm [*options*] install [*path-or-pkg*]
+cblrpm [*options*] depends [*path-or-pkg*]
+cblrpm [*options*] requires [*path-or-pkg*]
+cblrpm [*options*] missingdeps [*path-or-pkg*]
+cblrpm [*options*] diff [*path-or-pkg*]
+cblrpm [*options*] update [*path-or-pkg*]
+
+# DESCRIPTION
+cblrpm generates RPM packages and .spec files from Haskell Cabal package.
+
+If no *path-or-pkg* is specified, cblrpm looks for a .spec or .cabal file
+in the current directory. Otherwise, it will look for *path-or-pkg*. If
+the argument is a directory then it will look there for a .spec or .cabal file.
+If the argument is a path to a .cabal file then it will use it.
+Otherwise if there is no '/' in the argument and it does not exist
+then cblrpm will try to unpack the package and use its .cabal file.
+cblrpm uses a temporary directory for unpackaging tarballs or packages.
+cblrpm then parses the .cabal file and uses it to generate a .spec file
+that can be built.
+
+If a <PKG>.spec already exists, cblrpm outputs to <PKG>.spec.cblrpm instead.
+
+# OPTIONS
+-h, --help
+: Show the help text.
+
+-b, --binary
+: Force the base package name to be the Hackage package name.
+
+-f *FLAGS*, --flags=*FLAGS*
+: Override one or more Cabal build configuration flags.
+
+--release=*RELEASE*
+: Override the release number in the .spec file.
+
+-v *N*, --verbose=*N*
+: Set verbosity to *N*.
+
+--version=*VERSION*
+: Override the version number in the .spec file.
+
+# EXAMPLES
+Below CMD can be one of:
+ spec, srpm, prep, local, install, diff, builddep, depends, requires,
+ missingdeps, update
+
+Do CMD for the package in current directory:
+
+ cblrpm CMD
+
+Do CMD for package (directory or package name):
+
+ cblrpm CMD [package]
+
+Do CMD for package-version (directory or package name):
+
+ cblrpm CMD [package-version]
+
+Do CMD on a .cabal file:
+
+ cblrpm CMD path/to/some.cabal
+
+# HISTORY
+Cabal-rpm was originally written by Bryan O'Sullivan in 2007-2008
+and resurrected by Jens Petersen in 2012 to replace cabal2spec.
+
+# SEE ALSO
+http://github.com/juhp/cabal-rpm/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/man/cblrpm.1 new/cabal-rpm-0.10.0/man/cblrpm.1
--- old/cabal-rpm-0.9.11/man/cblrpm.1 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/man/cblrpm.1 1970-01-01 01:00:00.000000000 +0100
@@ -1,103 +0,0 @@
-.TH "CBLRPM" "1" "2013\-01\-21" "" ""
-.SH NAME
-.PP
-cblrpm \- a RPM packaging tool for Haskell Cabal packages
-.SH SYNOPSIS
-.PP
-cblrpm [\f[I]options\f[]] spec [\f[I]path\-or\-pkg\f[]] cblrpm
-[\f[I]options\f[]] local [\f[I]path\-or\-pkg\f[]] cblrpm
-[\f[I]options\f[]] srpm [\f[I]path\-or\-pkg\f[]] cblrpm
-[\f[I]options\f[]] prep [\f[I]path\-or\-pkg\f[]] cblrpm
-[\f[I]options\f[]] builddep [\f[I]path\-or\-pkg\f[]] cblrpm
-[\f[I]options\f[]] install [\f[I]path\-or\-pkg\f[]] cblrpm
-[\f[I]options\f[]] depends [\f[I]path\-or\-pkg\f[]] cblrpm
-[\f[I]options\f[]] requires [\f[I]path\-or\-pkg\f[]] cblrpm
-[\f[I]options\f[]] missingdeps [\f[I]path\-or\-pkg\f[]] cblrpm
-[\f[I]options\f[]] diff [\f[I]path\-or\-pkg\f[]] cblrpm
-[\f[I]options\f[]] update [\f[I]path\-or\-pkg\f[]]
-.SH DESCRIPTION
-.PP
-cblrpm generates RPM packages and .spec files from Haskell Cabal
-package.
-.PP
-If no \f[I]path\-or\-pkg\f[] is specified, cblrpm looks for a .spec or
-.cabal file in the current directory.
-Otherwise, it will look for \f[I]path\-or\-pkg\f[].
-If the argument is a directory then it will look there for a .spec or
-.cabal file.
-If the argument is a path to a .cabal file then it will use it.
-Otherwise if there is no \[aq]/\[aq] in the argument and it does not
-exist then cblrpm will try to unpack the package and use its .cabal
-file.
-cblrpm uses a temporary directory for unpackaging tarballs or packages.
-cblrpm then parses the .cabal file and uses it to generate a .spec file
-that can be built.
-.PP
-If a .spec already exists, cblrpm outputs to .spec.cblrpm instead.
-.SH OPTIONS
-.TP
-.B \-h, \-\-help
-Show the help text.
-.RS
-.RE
-.TP
-.B \-b, \-\-binary
-Force the base package name to be the Hackage package name.
-.RS
-.RE
-.PP
-\-f \f[I]FLAGS\f[], \-\-flags=\f[I]FLAGS\f[] : Override one or more
-Cabal build configuration flags.
-.PP
-\-\-release=\f[I]RELEASE\f[] : Override the release number in the .spec
-file.
-.PP
-\-v \f[I]N\f[], \-\-verbose=\f[I]N\f[] : Set verbosity to \f[I]N\f[].
-.PP
-\-\-version=\f[I]VERSION\f[] : Override the version number in the .spec
-file.
-.SH EXAMPLES
-.PP
-Below CMD can be one of: spec, srpm, prep, local, install, diff,
-builddep, depends, requires, missingdeps, update
-.PP
-Do CMD for the package in current directory:
-.IP
-.nf
-\f[C]
-cblrpm\ CMD
-\f[]
-.fi
-.PP
-Do CMD for package (directory or package name):
-.IP
-.nf
-\f[C]
-cblrpm\ CMD\ [package]
-\f[]
-.fi
-.PP
-Do CMD for package\-version (directory or package name):
-.IP
-.nf
-\f[C]
-cblrpm\ CMD\ [package\-version]
-\f[]
-.fi
-.PP
-Do CMD on a .cabal file:
-.IP
-.nf
-\f[C]
-cblrpm\ CMD\ path/to/some.cabal
-\f[]
-.fi
-.SH HISTORY
-.PP
-Cabal\-rpm was originally written by Bryan O\[aq]Sullivan in 2007\-2008
-and resurrected by Jens Petersen in 2012 to replace cabal2spec.
-.SH SEE ALSO
-.PP
-http://github.com/juhp/cabal-rpm/
-.SH AUTHORS
-This manpage was written by Jens Petersen.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/man/cblrpm.1.md new/cabal-rpm-0.10.0/man/cblrpm.1.md
--- old/cabal-rpm-0.9.11/man/cblrpm.1.md 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/man/cblrpm.1.md 1970-01-01 01:00:00.000000000 +0100
@@ -1,81 +0,0 @@
-% CBLRPM(1)
-% This manpage was written by Jens Petersen
-% 2013-01-21
-
-# NAME
-cblrpm - a RPM packaging tool for Haskell Cabal packages
-
-# SYNOPSIS
-cblrpm [*options*] spec [*path-or-pkg*]
-cblrpm [*options*] local [*path-or-pkg*]
-cblrpm [*options*] srpm [*path-or-pkg*]
-cblrpm [*options*] prep [*path-or-pkg*]
-cblrpm [*options*] builddep [*path-or-pkg*]
-cblrpm [*options*] install [*path-or-pkg*]
-cblrpm [*options*] depends [*path-or-pkg*]
-cblrpm [*options*] requires [*path-or-pkg*]
-cblrpm [*options*] missingdeps [*path-or-pkg*]
-cblrpm [*options*] diff [*path-or-pkg*]
-cblrpm [*options*] update [*path-or-pkg*]
-
-# DESCRIPTION
-cblrpm generates RPM packages and .spec files from Haskell Cabal package.
-
-If no *path-or-pkg* is specified, cblrpm looks for a .spec or .cabal file
-in the current directory. Otherwise, it will look for *path-or-pkg*. If
-the argument is a directory then it will look there for a .spec or .cabal file.
-If the argument is a path to a .cabal file then it will use it.
-Otherwise if there is no '/' in the argument and it does not exist
-then cblrpm will try to unpack the package and use its .cabal file.
-cblrpm uses a temporary directory for unpackaging tarballs or packages.
-cblrpm then parses the .cabal file and uses it to generate a .spec file
-that can be built.
-
-If a <PKG>.spec already exists, cblrpm outputs to <PKG>.spec.cblrpm instead.
-
-# OPTIONS
--h, --help
-: Show the help text.
-
--b, --binary
-: Force the base package name to be the Hackage package name.
-
--f *FLAGS*, --flags=*FLAGS*
-: Override one or more Cabal build configuration flags.
-
---release=*RELEASE*
-: Override the release number in the .spec file.
-
--v *N*, --verbose=*N*
-: Set verbosity to *N*.
-
---version=*VERSION*
-: Override the version number in the .spec file.
-
-# EXAMPLES
-Below CMD can be one of:
- spec, srpm, prep, local, install, diff, builddep, depends, requires,
- missingdeps, update
-
-Do CMD for the package in current directory:
-
- cblrpm CMD
-
-Do CMD for package (directory or package name):
-
- cblrpm CMD [package]
-
-Do CMD for package-version (directory or package name):
-
- cblrpm CMD [package-version]
-
-Do CMD on a .cabal file:
-
- cblrpm CMD path/to/some.cabal
-
-# HISTORY
-Cabal-rpm was originally written by Bryan O'Sullivan in 2007-2008
-and resurrected by Jens Petersen in 2012 to replace cabal2spec.
-
-# SEE ALSO
-http://github.com/juhp/cabal-rpm/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/Commands/Depends.hs new/cabal-rpm-0.10.0/src/Commands/Depends.hs
--- old/cabal-rpm-0.9.11/src/Commands/Depends.hs 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/src/Commands/Depends.hs 2016-07-27 13:15:19.000000000 +0200
@@ -39,7 +39,7 @@
let pkgcfgs' = map (++ ".pc") pkgcfgs
mapM_ putStrLn $ deps ++ tools ++ clibs' ++ pkgcfgs'
Requires -> do
- (deps, tools, clibs, pkgcfgs, _) <- packageDependencies pkgDesc
+ (deps, tools, clibs, pkgcfgs, _) <- packageDependencies False pkgDesc
mapM_ putStrLn $ sort $ deps ++ tools ++ clibs ++ pkgcfgs
Missing -> do
miss <- missingPackages pkgDesc >>= filterM notAvail
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/Commands/Refresh.hs new/cabal-rpm-0.10.0/src/Commands/Refresh.hs
--- old/cabal-rpm-0.9.11/src/Commands/Refresh.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/cabal-rpm-0.10.0/src/Commands/Refresh.hs 2016-07-27 13:15:19.000000000 +0200
@@ -0,0 +1,44 @@
+-- |
+-- Module : Commands.Refresh
+-- Copyright : (C) 2016 Jens Petersen
+--
+-- Maintainer : Jens Petersen
+--
+-- Explanation: refresh spec file to newer cabal-rpm
+
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+
+module Commands.Refresh (
+ refresh
+ ) where
+
+import Commands.Spec (createSpecFile)
+import PackageUtils (PackageData (..))
+import Setup (RpmFlags (..))
+import SysCmd (cmd_, shell, (+-+))
+
+import Distribution.Simple.Utils (die)
+
+refresh :: PackageData -> RpmFlags -> IO ()
+refresh pkgdata flags =
+ case specFilename pkgdata of
+ Nothing -> die "No (unique) .spec file in directory."
+ Just spec -> do
+ -- FIXME: later this should read the cabal-rpm version header line
+ oldspec <- createOldSpec "0.9.6" spec
+ newspec <- createSpecFile pkgdata flags Nothing
+ shell $ "diff -u2 -I \"- spec file generated by cabal-rpm\" -I \"Fedora Haskell SIG \"" +-+ oldspec +-+ newspec +-+ "| sed -e 's/.cblrpm//' | patch" +-+ "|| :"
+-- setCurrentDirectory cwd
+-- when rwGit $
+-- cmd_ "git" ["commit", "-a", "-m", "update to" +-+ newver]
+ where
+ createOldSpec :: String -> String -> IO FilePath
+ createOldSpec crVer spec = do
+ cmd_ ("cabal-rpm-" ++ crVer) ["spec"]
+ let backup = spec ++ ".cblrpm"
+ backup' = backup ++ "-" ++ crVer
+ cmd_ "mv" [backup, backup']
+ return backup'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/Commands/RpmBuild.hs new/cabal-rpm-0.10.0/src/Commands/RpmBuild.hs
--- old/cabal-rpm-0.9.11/src/Commands/RpmBuild.hs 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/src/Commands/RpmBuild.hs 2016-07-27 13:15:19.000000000 +0200
@@ -33,7 +33,7 @@
--import Distribution.Version (VersionRange, foldVersionRange')
-import System.Directory (doesFileExist)
+import System.Directory (copyFile, doesFileExist)
import System.FilePath (takeDirectory, (>))
-- autoreconf :: Verbosity -> PackageDescription -> IO ()
@@ -75,6 +75,14 @@
error "No tarball for source repo"
copyTarball name version False srcdir
+
+ let revision = maybe (0::Int) read (lookup "x-revision" (customFieldsPD pkgDesc))
+ cabalFile = srcdir > show revision ++ ".cabal"
+
+ cabalFileExists <- doesFileExist cabalFile
+ unless cabalFileExists $
+ copyFile cabalPath cabalFile
+
rpmbuild stage False Nothing specFile
return specFile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/Commands/Spec.hs new/cabal-rpm-0.10.0/src/Commands/Spec.hs
--- old/cabal-rpm-0.9.11/src/Commands/Spec.hs 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/src/Commands/Spec.hs 2016-07-27 13:15:19.000000000 +0200
@@ -17,19 +17,21 @@
-- (at your option) any later version.
module Commands.Spec (
- createSpecFile, createSpecFile_, detectDistro, Distro(..)
+ createSpecFile, createSpecFile_
) where
import Dependencies (notInstalled, packageDependencies, showDep,
testsuiteDependencies)
+import Distro (Distro(..), detectDistro)
import PackageUtils (getPkgName, isScmDir, PackageData (..),
packageName, packageVersion)
import Setup (RpmFlags (..))
-import SysCmd ((+-+), cmd)
+import SysCmd ((+-+))
+import Control.Applicative ((<$>))
import Control.Monad (filterM, unless, void, when)
import Data.Char (toLower, toUpper)
-import Data.List (groupBy, intercalate, isPrefixOf, isSuffixOf,
+import Data.List (groupBy, intercalate, intersect, isPrefixOf, isSuffixOf,
sort, (\\))
import Data.Maybe (fromMaybe)
import Data.Time.Clock (getCurrentTime)
@@ -46,7 +48,7 @@
--import Distribution.Version (VersionRange, foldVersionRange')
-import System.Directory (doesFileExist, getDirectoryContents)
+import System.Directory (copyFile, doesFileExist, getDirectoryContents)
import System.IO (IOMode (..), hClose, hPutStrLn, openFile)
#if defined(MIN_VERSION_time) && MIN_VERSION_time(1,5,0)
import Data.Time.Format (defaultTimeLocale)
@@ -91,7 +93,7 @@
hasExecPkg = binlib || (hasExec && not hasLib)
-- run commands before opening file to prevent empty file on error
-- maybe shell commands should be in a monad or something
- (deps, tools, clibs, pkgcfgs, selfdep) <- packageDependencies pkgDesc
+ (deps, tools, clibs, pkgcfgs, selfdep) <- packageDependencies (rpmStrict flags) pkgDesc
let testsuiteDeps = testsuiteDependencies pkgDesc name
missTestDeps <- filterM notInstalled testsuiteDeps
@@ -113,7 +115,8 @@
ghcPkg = if binlib then "-n ghc-%{name}" else ""
ghcPkgDevel = if binlib then "-n ghc-%{name}-devel" else "devel"
- distro <- detectDistro
+ put $ "# generated by cabal-rpm-" ++ showVersion Paths_cabal_rpm.version
+ distro <- fromMaybe detectDistro (return <$> rpmDistribution flags)
if distro /= SUSE
then put "# https://fedoraproject.org/wiki/Packaging:Haskell"
else do
@@ -180,6 +183,7 @@
defRelease <- defaultRelease cabalPath distro
let version = packageVersion pkg
release = fromMaybe defRelease (rpmRelease flags)
+ revision = show $ maybe (0::Int) read (lookup "x-revision" (customFieldsPD pkgDesc))
putHdr "Name" (if binlib then "%{pkg_name}" else basename)
putHdr "Version" version
putHdr "Release" $ release ++ (if distro == SUSE then [] else "%{?dist}")
@@ -194,6 +198,10 @@
putHdr "License" $ (showLicense distro . license) pkgDesc
putHdr "Url" $ "https://hackage.haskell.org/package/" ++ pkg_name
putHdr "Source0" $ "https://hackage.haskell.org/package/" ++ pkg_name ++ "-%{version}/" ++ pkg_name ++ "-%{version}.tar.gz"
+ when (revision /= "0") $
+ if distro == SUSE
+ then putHdr "Source1" $ "https://hackage.haskell.org/package/" ++ pkg_name ++ "-%{version}/revision/" ++ revision ++ ".cabal"
+ else putStrLn "Warning: this is a revised .cabal file"
case distro of
Fedora -> return ()
_ -> putHdr "BuildRoot" "%{_tmppath}/%{name}-%{version}-build"
@@ -207,7 +215,8 @@
unless (null $ alldeps ++ extraTestDeps) $ do
put "# Begin cabal-rpm deps:"
mapM_ (putHdr "BuildRequires") alldeps
- when (distro /= SUSE &&
+ -- for ghc < 7.8
+ when (distro `notElem` [Fedora, SUSE] &&
any (\ d -> d `elem` map showDep ["template-haskell", "hamlet"]) deps) $
putHdr "ExclusiveArch" "%{ghc_arches_with_ghci}"
unless (null extraTestDeps) $ do
@@ -250,7 +259,7 @@
putHdr "Requires" $ (if binlib then "ghc-%{name}" else "%{name}") ++ isa +-+ "= %{version}-%{release}"
unless (null $ clibs ++ pkgcfgs) $ do
put "# Begin cabal-rpm deps:"
- mapM_ (putHdr "Requires") $ sort $ map (++ isa) clibs ++ pkgcfgs
+ mapM_ (putHdr "Requires") $ sort $ map (++ isa) clibs ++ pkgcfgs ++ ["pkgconfig" | distro == SUSE, not $ null pkgcfgs]
put "# End cabal-rpm deps"
putNewline
put $ "%description" +-+ ghcPkgDevel
@@ -259,6 +268,12 @@
put "%prep"
put $ "%setup -q" ++ (if pkgname /= name then " -n %{pkg_name}-%{version}" else "")
+ when (distro == SUSE && revision /= "0") $ do
+ let revised = revision ++ ".cabal"
+ put $ "cp -p %{SOURCE1}" +-+ pkg_name ++ ".cabal"
+ copied <- doesFileExist revised
+ unless copied $
+ copyFile cabalPath revised
putNewline
putNewline
@@ -289,14 +304,22 @@
1 -> head licensefiles
_ -> "{" ++ intercalate "," licensefiles ++ "}"
+ -- remove docs from datafiles (#38)
+ docs <- sort <$> findDocs cabalPath licensefiles
+ let datafiles = dataFiles pkgDesc
+ dupdocs = docs `intersect` datafiles
+ unless (null dupdocs) $
+ put $ "rm %{buildroot}%{_datadir}/" ++ pkg_name ++ "-%{version}/" ++
+ case length dupdocs of
+ 1 -> head dupdocs
+ _ -> "{" ++ intercalate "," dupdocs ++ "}"
+
putNewline
putNewline
unless (null testsuiteDeps) $ do
put "%check"
- put "%if %{with tests}"
- put "%cabal test"
- put "%endif"
+ put "%cabal_test"
putNewline
putNewline
@@ -310,8 +333,6 @@
put $ "%postun" +-+ ghcPkgDevel
putInstallScript
- docs <- findDocs cabalPath licensefiles
-
let license_macro = if distro == Fedora then "%license" else "%doc"
when hasExecPkg $ do
@@ -324,8 +345,8 @@
put $ "%doc" +-+ unwords docs
mapM_ (\ p -> put $ "%{_bindir}/" ++ (if p == name then "%{name}" else p)) execs
- unless (null (dataFiles pkgDesc)) $
- put "%{_datadir}/%{name}-%{version}"
+ unless (null datafiles) $
+ put $ "%{_datadir}/" ++ pkg_name ++ "-%{version}"
putNewline
putNewline
@@ -336,16 +357,17 @@
put $ "%files" +-+ ghcPkg +-+ baseFiles
when (distro /= Fedora) $ put "%defattr(-,root,root,-)"
mapM_ (\ l -> put $ license_macro +-+ l) licensefiles
- -- be strict for now
--- unless (null (dataFiles pkgDesc) || binlib) $
--- put "%{_datadir}/%{pkg_name}-%{version}"
+ when (not binlib && distro == SUSE) $
+ mapM_ (\ p -> put $ "%{_bindir}/" ++ (if p == name then "%{pkg_name}" else p)) execs
+ unless (null datafiles || binlib) $
+ put $ "%{_datadir}/" ++ pkg_name ++ "-%{version}"
putNewline
putNewline
put $ "%files" +-+ ghcPkgDevel +-+ develFiles
when (distro /= Fedora) $ put "%defattr(-,root,root,-)"
unless (null docs) $
put $ "%doc" +-+ unwords docs
- unless binlib $
+ when (not binlib && distro /= SUSE) $
mapM_ (\ p -> put $ "%{_bindir}/" ++ (if p == name then "%{pkg_name}" else p)) execs
putNewline
putNewline
@@ -374,8 +396,8 @@
return $ if null licensefiles
then docs
else filter unlikely $ filter (`notElem` licensefiles) docs
- where names = ["author", "copying", "doc", "example", "licence", "license",
- "readme", "todo"]
+ where names = ["author", "changelog", "changes", "copying", "doc", "example", "licence",
+ "license", "news", "readme", "todo"]
likely name = let lowerName = map toLower name
in any (`isPrefixOf` lowerName) names
unlikely name = not $ any (`isSuffixOf` name) ["~"]
@@ -411,6 +433,7 @@
showLicense _ (AGPL (Just ver)) = "AGPLv" ++ showVersion ver
#endif
#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,20,0)
+showLicense SUSE BSD2 = "BSD-2-Clause"
showLicense _ BSD2 = "BSD"
showLicense _ (MPL ver) = "MPLv" ++ showVersion ver
#endif
@@ -419,11 +442,6 @@
showLicense _ UnspecifiedLicense = "Unspecified license!"
#endif
--- from http://stackoverflow.com/questions/930675/functional-paragraphs
--- using split would be: map unlines . (Data.List.Split.splitWhen null)
-paragraphs :: [String] -> [String]
-paragraphs = map (unlines . filter (not . null)) . groupBy (const $ not . null)
-
-- http://rosettacode.org/wiki/Word_wrap#Haskell
wordwrap :: Int -> String -> String
wordwrap maxlen = wrap_ 0 False . words
@@ -441,15 +459,8 @@
formatParagraphs :: String -> [String]
formatParagraphs = map (wordwrap 79) . paragraphs . lines
-
-data Distro = Fedora | RHEL5 | SUSE deriving (Eq)
-
--- for now assume Fedora if no /etc/SuSE-release
-detectDistro :: IO Distro
-detectDistro = do
- suse <- doesFileExist "/etc/SuSE-release"
- if suse then return SUSE
- else do
- dist <- cmd "rpm" ["--eval", "%{?dist}"]
- -- RHEL5 does not have macros.dist
- return $ if null dist || dist == ".el5" then RHEL5 else Fedora
+ where
+ -- from http://stackoverflow.com/questions/930675/functional-paragraphs
+ -- using split would be: map unlines . (Data.List.Split.splitWhen null)
+ paragraphs :: [String] -> [String]
+ paragraphs = map (unlines . filter (not . null)) . groupBy (const $ not . null)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/Commands/Update.hs new/cabal-rpm-0.10.0/src/Commands/Update.hs
--- old/cabal-rpm-0.9.11/src/Commands/Update.hs 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/src/Commands/Update.hs 2016-07-27 13:15:19.000000000 +0200
@@ -16,17 +16,18 @@
update
) where
-import Commands.Spec (createSpecFile, detectDistro, Distro(..))
+import Commands.Spec (createSpecFile)
+import Distro (detectDistro, Distro(..))
import FileUtils (withTempDirectory)
import PackageUtils (PackageData (..), bringTarball, isGitDir, latestPkg,
packageName, packageVersion, prepare, removePrefix)
import Setup (RpmFlags (..))
-import SysCmd (cmd_, cmdBool, shell, (+-+))
-
+import SysCmd (cmd_, cmdBool, cmdIgnoreErr, (+-+))
+import Control.Applicative ((<$>))
import Control.Monad (when)
import Distribution.PackageDescription (PackageDescription (..))
import Distribution.Simple.Utils (die)
-
+import Data.Maybe (fromMaybe)
import System.Directory (createDirectory, getCurrentDirectory,
setCurrentDirectory)
@@ -51,9 +52,12 @@
withTempDirectory $ \cwd -> do
curspec <- createSpecVersion current spec
newspec <- createSpecVersion latest spec
- shell $ "diff -u1 -I \"- spec file generated by cabal-rpm\" -I \"Fedora Haskell SIG \"" +-+ curspec +-+ newspec +-+ "| patch -d" +-+ cwd +-+ "-p1" +-+ "|| :"
+ patch <- cmdIgnoreErr "diff" ["-u2", "-I - spec file generated by cabal-rpm", "-I Fedora Haskell SIG ", curspec, newspec] ""
+ putStrLn patch
+ out <- cmdIgnoreErr "patch" ["-d", cwd, "-p1" ] patch
+ putStrLn out
setCurrentDirectory cwd
- distro <- detectDistro
+ distro <- fromMaybe detectDistro (return <$> rpmDistribution flags)
let suffix = if distro == SUSE then "" else "%{?dist}"
cmd_ "sed" ["-i", "-e s/^\\(Release: \\).*/\\10" ++ suffix ++ "/", spec]
let newver = removePrefix (name ++ "-") latest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/Dependencies.hs new/cabal-rpm-0.10.0/src/Dependencies.hs
--- old/cabal-rpm-0.9.11/src/Dependencies.hs 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/src/Dependencies.hs 2016-07-27 13:15:19.000000000 +0200
@@ -26,10 +26,10 @@
import SysCmd (cmd, cmdBool, repoquery, (+-+))
import Control.Applicative ((<$>))
-import Control.Monad (filterM)
+import Control.Monad (filterM, when)
import Data.List (delete, nub)
-import Data.Maybe (catMaybes)
+import Data.Maybe (catMaybes, isNothing)
import Distribution.Package (Dependency (..), PackageName (..))
import Distribution.PackageDescription (PackageDescription (..),
@@ -103,10 +103,11 @@
warning :: String -> IO ()
warning s = hPutStrLn stderr $ "Warning:" +-+ s
-packageDependencies :: PackageDescription -- ^pkg description
+packageDependencies :: Bool -- ^strict mode: True means abort on unknown dependencies
+ -> PackageDescription -- ^pkg description
-> IO ([String], [String], [String], [String], Bool)
-- ^depends, tools, c-libs, pkgcfg, selfdep
-packageDependencies pkgDesc = do
+packageDependencies strict pkgDesc = do
(deps, tools', clibs', pkgcfgs, selfdep) <- dependencies pkgDesc
let excludedTools n = n `notElem` ["ghc", "hsc2hs", "perl"]
mapTools "gtk2hsC2hs" = "gtk2hs-buildtools"
@@ -115,7 +116,12 @@
mapTools tool = tool
chrpath = ["chrpath" | selfdep]
tools = filter excludedTools $ nub $ map mapTools tools' ++ chrpath
- clibs <- catMaybes <$> mapM resolveLib clibs'
+ clibsWithErrors <- mapM resolveLib clibs'
+ when (any isNothing clibsWithErrors) $
+ if strict
+ then fail "cannot resolve all clib dependencies"
+ else putStrLn "Warning: could not resolve all clib dependencies"
+ let clibs = catMaybes clibsWithErrors
let showPkgCfg p = "pkgconfig(" ++ p ++ ")"
return (map showDep deps, tools, nub clibs, map showPkgCfg pkgcfgs, selfdep)
@@ -127,7 +133,7 @@
missingPackages :: PackageDescription -> IO [String]
missingPackages pkgDesc = do
- (deps, tools, clibs, pkgcfgs, _) <- packageDependencies pkgDesc
+ (deps, tools, clibs, pkgcfgs, _) <- packageDependencies False pkgDesc
pcpkgs <- mapM derefPkg pkgcfgs
filterM notInstalled $ deps ++ ["ghc-Cabal-devel", "ghc-rpm-macros"] ++ tools ++ clibs ++ pcpkgs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/Distro.hs new/cabal-rpm-0.10.0/src/Distro.hs
--- old/cabal-rpm-0.9.11/src/Distro.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/cabal-rpm-0.10.0/src/Distro.hs 2016-07-27 13:15:19.000000000 +0200
@@ -0,0 +1,42 @@
+-- |
+-- Module : Distro
+-- Copyright : (C) 2016 Jens Petersen
+--
+-- Maintainer : Jens Petersen
+--
+-- Types and utility functions to represent different RPM-based distributions.
+
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+
+module Distro (
+ detectDistro, parseDistroName, readDistroName, Distro(..)
+ ) where
+
+import SysCmd (cmd)
+import Data.Maybe (fromMaybe)
+import Data.Char (toLower)
+
+data Distro = Fedora | RHEL5 | SUSE deriving (Show, Eq)
+
+detectDistro :: IO Distro
+detectDistro = do
+ suseVersion <- cmd "rpm" ["--eval", "%{?suse_version}"]
+ if null suseVersion then do
+ dist <- cmd "rpm" ["--eval", "%{?dist}"]
+ -- RHEL5 does not have macros.dist
+ return $ if null dist || dist == ".el5" then RHEL5 else Fedora
+ else return SUSE
+
+parseDistroName :: String -> Maybe Distro
+parseDistroName x = lookup (map toLower x) known
+ where
+ known = [ ("suse", SUSE)
+ , ("fedora", Fedora)
+ , ("rhel5", RHEL5)
+ ]
+
+readDistroName :: String -> Distro
+readDistroName s = fromMaybe (error $ "unrecognized distribution name " ++ show s) (parseDistroName s)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/Main.hs new/cabal-rpm-0.10.0/src/Main.hs
--- old/cabal-rpm-0.9.11/src/Main.hs 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/src/Main.hs 2016-07-27 13:15:19.000000000 +0200
@@ -19,6 +19,7 @@
import Commands.Depends (depends, Depends (..))
import Commands.Diff (diff)
import Commands.Install (install)
+import Commands.Refresh (refresh)
import Commands.RpmBuild (rpmBuild_)
import Commands.Spec (createSpecFile_)
import Commands.Update (update)
@@ -46,6 +47,7 @@
"diff" -> diff pkgdata opts
"install" -> install pkgdata opts
"depends" -> depends pkgdata Depends
+ "refresh" -> refresh pkgdata opts
"requires" -> depends pkgdata Requires
"missingdeps" -> depends pkgdata Missing
"update" -> update pkgdata opts
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/PackageUtils.hs new/cabal-rpm-0.10.0/src/PackageUtils.hs
--- old/cabal-rpm-0.9.11/src/PackageUtils.hs 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/src/PackageUtils.hs 2016-07-27 13:15:19.000000000 +0200
@@ -45,7 +45,7 @@
import Data.Maybe (fromMaybe, isJust)
import Data.Version (showVersion)
-import Distribution.Compiler (CompilerFlavor (..))
+import Distribution.Compiler
import Distribution.Package (PackageIdentifier (..),
PackageName (..))
import Distribution.PackageDescription (PackageDescription (..),
@@ -96,19 +96,28 @@
simplePackageDescription path opts = do
let verbose = rpmVerbosity opts
genPkgDesc <- readPackageDescription verbose path
+ compiler <- case rpmCompilerId opts of
+ Just cid -> return
+#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,22,0)
+ (unknownCompilerInfo cid NoAbiTag)
+#else
+ cid
+#endif
+ Nothing -> do
#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,18,0)
- (compiler, _, _) <- configCompilerEx
+ (compiler, _, _) <- configCompilerEx
#else
- (compiler, _) <- configCompiler
+ (compiler, _) <- configCompiler
#endif
- (Just GHC) Nothing Nothing defaultProgramConfiguration verbose
- case finalizePackageDescription (rpmConfigurationsFlags opts)
- (const True) (Platform buildArch buildOS)
+ (Just GHC) Nothing Nothing defaultProgramConfiguration verbose
#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,22,0)
- (compilerInfo compiler)
+ return (compilerInfo compiler)
#else
- (compilerId compiler)
+ return (compilerId compiler)
#endif
+ case finalizePackageDescription (rpmConfigurationsFlags opts)
+ (const True) (Platform buildArch buildOS)
+ compiler
[] genPkgDesc of
Left e -> die $ "finalize failed: " ++ show e
Right (pd, _) -> return pd
@@ -215,7 +224,7 @@
cmd_ "cabal" ["unpack", "-v0", pkgver]
pth <- findPackageDesc' pkgver
setCurrentDirectory cwd
- return (tmpdir ++ "/" ++ pth, Just tmpdir)
+ return (tmpdir > pth, Just tmpdir)
latestPkg :: String -> IO String
latestPkg pkg = do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/Setup.hs new/cabal-rpm-0.10.0/src/Setup.hs
--- old/cabal-rpm-0.9.11/src/Setup.hs 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/src/Setup.hs 2016-07-27 13:15:19.000000000 +0200
@@ -23,9 +23,11 @@
import Control.Monad (unless, when)
import Data.Char (toLower)
-import Data.Maybe (listToMaybe)
+import Data.Maybe (listToMaybe, fromMaybe)
import Data.Version (showVersion)
+import Distribution.Compiler (CompilerId)
+import Distribution.Text (simpleParse)
import Distribution.PackageDescription (FlagName (..))
import Distribution.ReadE (readEOrFail)
import Distribution.Verbosity (Verbosity, flagToVerbosity, normal,
@@ -37,6 +39,7 @@
import System.Exit (ExitCode (..), exitSuccess, exitWith)
import System.IO (Handle, hPutStrLn, stderr, stdout)
+import Distro (Distro(..), readDistroName)
import Paths_cabal_rpm (version)
import SysCmd ((+-+))
@@ -45,7 +48,10 @@
, rpmForce :: Bool
, rpmHelp :: Bool
, rpmBinary :: Bool
+ , rpmStrict :: Bool
, rpmRelease :: Maybe String
+ , rpmCompilerId :: Maybe CompilerId
+ , rpmDistribution :: Maybe Distro
, rpmVerbosity :: Verbosity
, rpmVersion :: Bool
}
@@ -57,7 +63,10 @@
, rpmForce = False
, rpmHelp = False
, rpmBinary = False
+ , rpmStrict = False
, rpmRelease = Nothing
+ , rpmCompilerId = Nothing
+ , rpmDistribution = Nothing
, rpmVerbosity = normal
, rpmVersion = False
}
@@ -76,8 +85,14 @@
"Set given flags in Cabal conditionals",
Option "" ["force"] (NoArg (\x -> x { rpmForce = True }))
"Overwrite existing spec file.",
+ Option "" ["strict"] (NoArg (\x -> x { rpmStrict = True }))
+ "Fail rather than produce an incomplete spec file.",
Option "" ["release"] (ReqArg (\rel x -> x { rpmRelease = Just rel }) "RELEASE")
"Override the default package release",
+ Option "" ["compiler"] (ReqArg (\cid x -> x { rpmCompilerId = Just (parseCompilerId cid) }) "COMPILER-ID")
+ "Finalize Cabal files targetting the given compiler version",
+ Option "" ["distro"] (ReqArg (\did x -> x { rpmDistribution = Just (readDistroName did) }) "DISTRO")
+ "Choose the distribution generated spec files will target",
Option "v" ["verbose"] (ReqArg (\verb x -> x { rpmVerbosity = readEOrFail flagToVerbosity verb }) "n")
"Change build verbosity",
Option "V" ["version"] (NoArg (\x -> x { rpmVersion = True }))
@@ -114,6 +129,10 @@
++ "Options:"
hPutStrLn h (usageInfo info options)
+parseCompilerId :: String -> CompilerId
+parseCompilerId x = fromMaybe err (simpleParse x)
+ where err = error (show x ++ " is not a valid compiler id")
+
parseArgs :: [String] -> IO (RpmFlags, String, Maybe String)
parseArgs args = do
let (os, args', unknown, errs) = getOpt' Permute options args
@@ -128,7 +147,11 @@
error $ unlines errs
unless (null unknown) $
error $ "Unrecognised options:" +-+ unwords unknown
- when (null args' || notElem (head args') ["builddep", "depends", "diff", "install", "missingdeps", "prep", "requires", "spec", "srpm", "build", "local", "rpm", "update"]) $ do
+ when (null args') $ do
+ printHelp stderr
+ exitWith (ExitFailure 1)
+ when (head args' `notElem` ["builddep", "depends", "diff", "install", "missingdeps", "prep", "requires", "spec", "srpm", "build", "local", "rpm", "update", "refresh"]) $ do
+ hPutStrLn stderr $ "Unknown command:" +-+ head args'
printHelp stderr
exitWith (ExitFailure 1)
when (length args' > 2) $
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-rpm-0.9.11/src/SysCmd.hs new/cabal-rpm-0.10.0/src/SysCmd.hs
--- old/cabal-rpm-0.9.11/src/SysCmd.hs 2016-05-06 13:31:16.000000000 +0200
+++ new/cabal-rpm-0.10.0/src/SysCmd.hs 2016-07-27 13:15:19.000000000 +0200
@@ -18,6 +18,7 @@
cmd,
cmd_,
cmdBool,
+ cmdIgnoreErr,
cmdQuiet,
cmdSilent,
pkgInstall,
@@ -123,6 +124,11 @@
requireProgram c
removeTrailingNewline <$> readProcess c args ""
+cmdIgnoreErr :: FilePath -> [String] -> String -> IO String
+cmdIgnoreErr c args input = do
+ (_exit, out, _err) <- readProcessWithExitCode c args input
+ return out
+
removeTrailingNewline :: String -> String
removeTrailingNewline "" = ""
removeTrailingNewline str =