linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] Documentation/sphinx: Fix Directive import error
@ 2018-03-02 15:28 Takashi Iwai
  2018-03-02 16:01 ` Jani Nikula
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Takashi Iwai @ 2018-03-02 15:28 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Jani Nikula, Jiri Slaby, Matthew Wilcox, linux-doc, linux-kernel

The sphinx.util.compat for Directive stuff was deprecated in the
recent Sphinx version, and now we get a build error.

Let's import from the new place, docutils.parsers.rst, while keeping
the old sphinx.util.compat as fallback.

Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1083694
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
v1->v2: Change the fallback order as Matthew suggested, the new one at first

 Documentation/sphinx/kerneldoc.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py
index 39aa9e8697cc..34396976eb0a 100644
--- a/Documentation/sphinx/kerneldoc.py
+++ b/Documentation/sphinx/kerneldoc.py
@@ -37,7 +37,10 @@ import glob
 from docutils import nodes, statemachine
 from docutils.statemachine import ViewList
 from docutils.parsers.rst import directives
-from sphinx.util.compat import Directive
+try:
+    from docutils.parsers.rst import directives, Directive
+except ImportError:
+    from sphinx.util.compat import Directive
 from sphinx.ext.autodoc import AutodocReporter
 
 __version__  = '1.0'
-- 
2.16.2

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] Documentation/sphinx: Fix Directive import error
  2018-03-02 15:28 [PATCH v2] Documentation/sphinx: Fix Directive import error Takashi Iwai
@ 2018-03-02 16:01 ` Jani Nikula
  2018-03-02 16:42   ` Matthew Wilcox
  2018-03-02 16:34 ` Matthew Wilcox
  2018-03-02 18:40 ` [PATCH v3] " Matthew Wilcox
  2 siblings, 1 reply; 8+ messages in thread
From: Jani Nikula @ 2018-03-02 16:01 UTC (permalink / raw)
  To: Takashi Iwai, Jonathan Corbet
  Cc: Jiri Slaby, Matthew Wilcox, linux-doc, linux-kernel

On Fri, 02 Mar 2018, Takashi Iwai <tiwai@suse.de> wrote:
> The sphinx.util.compat for Directive stuff was deprecated in the
> recent Sphinx version, and now we get a build error.
>
> Let's import from the new place, docutils.parsers.rst, while keeping
> the old sphinx.util.compat as fallback.
>
> Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1083694
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
> v1->v2: Change the fallback order as Matthew suggested, the new one at first

So this crossed my mind as well... and then I thought it'll probably
succeed on older Sphinx, and the fallback is not needed. The question
is, are these equal? Can we just import from docutils.parsers.rst?

I'm sorry I don't have the time to find the answers to these questions
as well. :(

BR,
Jani.


>
>  Documentation/sphinx/kerneldoc.py | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py
> index 39aa9e8697cc..34396976eb0a 100644
> --- a/Documentation/sphinx/kerneldoc.py
> +++ b/Documentation/sphinx/kerneldoc.py
> @@ -37,7 +37,10 @@ import glob
>  from docutils import nodes, statemachine
>  from docutils.statemachine import ViewList
>  from docutils.parsers.rst import directives
> -from sphinx.util.compat import Directive
> +try:
> +    from docutils.parsers.rst import directives, Directive
> +except ImportError:
> +    from sphinx.util.compat import Directive
>  from sphinx.ext.autodoc import AutodocReporter
>  
>  __version__  = '1.0'

-- 
Jani Nikula, Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] Documentation/sphinx: Fix Directive import error
  2018-03-02 15:28 [PATCH v2] Documentation/sphinx: Fix Directive import error Takashi Iwai
  2018-03-02 16:01 ` Jani Nikula
@ 2018-03-02 16:34 ` Matthew Wilcox
  2018-03-02 18:40 ` [PATCH v3] " Matthew Wilcox
  2 siblings, 0 replies; 8+ messages in thread
From: Matthew Wilcox @ 2018-03-02 16:34 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Jonathan Corbet, Jani Nikula, Jiri Slaby, linux-doc, linux-kernel

On Fri, Mar 02, 2018 at 04:28:31PM +0100, Takashi Iwai wrote:
>  from docutils.parsers.rst import directives
> -from sphinx.util.compat import Directive
> +try:
> +    from docutils.parsers.rst import directives, Directive

We also don't need 'directives' on this line as it was imported on the
previous line.

> +except ImportError:
> +    from sphinx.util.compat import Directive
>  from sphinx.ext.autodoc import AutodocReporter
>  
>  __version__  = '1.0'

Here's what I tested on Debian:

+++ b/Documentation/sphinx/kerneldoc.py
@@ -37,7 +37,10 @@ import glob
 from docutils import nodes, statemachine
 from docutils.statemachine import ViewList
 from docutils.parsers.rst import directives
-from sphinx.util.compat import Directive
+try:
+    from docutils.parsers.rst import Directive
+except ImportError:
+    from sphinx.util.compat import Directive
 from sphinx.ext.autodoc import AutodocReporter
 
 __version__  = '1.0'

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] Documentation/sphinx: Fix Directive import error
  2018-03-02 16:01 ` Jani Nikula
@ 2018-03-02 16:42   ` Matthew Wilcox
  2018-03-02 18:28     ` Matthew Wilcox
  0 siblings, 1 reply; 8+ messages in thread
From: Matthew Wilcox @ 2018-03-02 16:42 UTC (permalink / raw)
  To: Jani Nikula
  Cc: Takashi Iwai, Jonathan Corbet, Jiri Slaby, linux-doc, linux-kernel

On Fri, Mar 02, 2018 at 06:01:50PM +0200, Jani Nikula wrote:
> On Fri, 02 Mar 2018, Takashi Iwai <tiwai@suse.de> wrote:
> > The sphinx.util.compat for Directive stuff was deprecated in the
> > recent Sphinx version, and now we get a build error.
> >
> > Let's import from the new place, docutils.parsers.rst, while keeping
> > the old sphinx.util.compat as fallback.
> >
> > Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1083694
> > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> > ---
> > v1->v2: Change the fallback order as Matthew suggested, the new one at first
> 
> So this crossed my mind as well... and then I thought it'll probably
> succeed on older Sphinx, and the fallback is not needed. The question
> is, are these equal? Can we just import from docutils.parsers.rst?

I found a github page which implies that docutils.parsers.rst.Directive
was added 12 years ago (!) so we're probably safe to rely on it:

https://github.com/docutils-mirror/docutils/commit/9649abee47b4ce4db51be1d90fcb1fb500fa78b3

Again, I'm no pythonista, so I may have muddled this.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] Documentation/sphinx: Fix Directive import error
  2018-03-02 16:42   ` Matthew Wilcox
@ 2018-03-02 18:28     ` Matthew Wilcox
  0 siblings, 0 replies; 8+ messages in thread
From: Matthew Wilcox @ 2018-03-02 18:28 UTC (permalink / raw)
  To: Jani Nikula
  Cc: Takashi Iwai, Jonathan Corbet, Jiri Slaby, linux-doc, linux-kernel

On Fri, Mar 02, 2018 at 08:42:54AM -0800, Matthew Wilcox wrote:
> On Fri, Mar 02, 2018 at 06:01:50PM +0200, Jani Nikula wrote:
> > On Fri, 02 Mar 2018, Takashi Iwai <tiwai@suse.de> wrote:
> > > The sphinx.util.compat for Directive stuff was deprecated in the
> > > recent Sphinx version, and now we get a build error.
> > >
> > > Let's import from the new place, docutils.parsers.rst, while keeping
> > > the old sphinx.util.compat as fallback.
> > >
> > > Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1083694
> > > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> > > ---
> > > v1->v2: Change the fallback order as Matthew suggested, the new one at first
> > 
> > So this crossed my mind as well... and then I thought it'll probably
> > succeed on older Sphinx, and the fallback is not needed. The question
> > is, are these equal? Can we just import from docutils.parsers.rst?
> 
> I found a github page which implies that docutils.parsers.rst.Directive
> was added 12 years ago (!) so we're probably safe to rely on it:
> 
> https://github.com/docutils-mirror/docutils/commit/9649abee47b4ce4db51be1d90fcb1fb500fa78b3
> 
> Again, I'm no pythonista, so I may have muddled this.

I spent some time delving through the Sphinx codebase.  The compat
version was added so you could use Directive with docutils 0.4 onwards.
docutils 0.5 onwards has Directive.  So as long as we're comfortable
mandating docutils from 2009, we're fine ;-)

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v3] Documentation/sphinx: Fix Directive import error
  2018-03-02 15:28 [PATCH v2] Documentation/sphinx: Fix Directive import error Takashi Iwai
  2018-03-02 16:01 ` Jani Nikula
  2018-03-02 16:34 ` Matthew Wilcox
@ 2018-03-02 18:40 ` Matthew Wilcox
  2018-03-02 19:00   ` Jani Nikula
  2018-03-07 17:12   ` Jonathan Corbet
  2 siblings, 2 replies; 8+ messages in thread
From: Matthew Wilcox @ 2018-03-02 18:40 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Jonathan Corbet, Jani Nikula, Jiri Slaby, linux-doc, linux-kernel

From: Matthew Wilcox <mawilcox@microsoft.com>

Sphinx 1.7 removed sphinx.util.compat.Directive so people
who have upgraded cannot build the documentation.  Switch to
docutils.parsers.rst.Directive which has been available since
docutils 0.5 released in 2009.

Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1083694
Co-developed-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>

diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py
index 39aa9e8697cc..fbedcc39460b 100644
--- a/Documentation/sphinx/kerneldoc.py
+++ b/Documentation/sphinx/kerneldoc.py
@@ -36,8 +36,7 @@ import glob
 
 from docutils import nodes, statemachine
 from docutils.statemachine import ViewList
-from docutils.parsers.rst import directives
-from sphinx.util.compat import Directive
+from docutils.parsers.rst import directives, Directive
 from sphinx.ext.autodoc import AutodocReporter
 
 __version__  = '1.0'

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v3] Documentation/sphinx: Fix Directive import error
  2018-03-02 18:40 ` [PATCH v3] " Matthew Wilcox
@ 2018-03-02 19:00   ` Jani Nikula
  2018-03-07 17:12   ` Jonathan Corbet
  1 sibling, 0 replies; 8+ messages in thread
From: Jani Nikula @ 2018-03-02 19:00 UTC (permalink / raw)
  To: Matthew Wilcox, Takashi Iwai
  Cc: Jonathan Corbet, Jiri Slaby, linux-doc, linux-kernel

On Fri, 02 Mar 2018, Matthew Wilcox <willy@infradead.org> wrote:
> From: Matthew Wilcox <mawilcox@microsoft.com>
>
> Sphinx 1.7 removed sphinx.util.compat.Directive so people
> who have upgraded cannot build the documentation.  Switch to
> docutils.parsers.rst.Directive which has been available since
> docutils 0.5 released in 2009.
>
> Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1083694
> Co-developed-by: Takashi Iwai <tiwai@suse.de>
> Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>

I think this is the best approach.

FWIW,

Acked-by: Jani Nikula <jani.nikula@intel.com>

>
> diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py
> index 39aa9e8697cc..fbedcc39460b 100644
> --- a/Documentation/sphinx/kerneldoc.py
> +++ b/Documentation/sphinx/kerneldoc.py
> @@ -36,8 +36,7 @@ import glob
>  
>  from docutils import nodes, statemachine
>  from docutils.statemachine import ViewList
> -from docutils.parsers.rst import directives
> -from sphinx.util.compat import Directive
> +from docutils.parsers.rst import directives, Directive
>  from sphinx.ext.autodoc import AutodocReporter
>  
>  __version__  = '1.0'

-- 
Jani Nikula, Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3] Documentation/sphinx: Fix Directive import error
  2018-03-02 18:40 ` [PATCH v3] " Matthew Wilcox
  2018-03-02 19:00   ` Jani Nikula
@ 2018-03-07 17:12   ` Jonathan Corbet
  1 sibling, 0 replies; 8+ messages in thread
From: Jonathan Corbet @ 2018-03-07 17:12 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Takashi Iwai, Jani Nikula, Jiri Slaby, linux-doc, linux-kernel

On Fri, 2 Mar 2018 10:40:14 -0800
Matthew Wilcox <willy@infradead.org> wrote:

> Sphinx 1.7 removed sphinx.util.compat.Directive so people
> who have upgraded cannot build the documentation.  Switch to
> docutils.parsers.rst.Directive which has been available since
> docutils 0.5 released in 2009.
> 
> Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1083694
> Co-developed-by: Takashi Iwai <tiwai@suse.de>
> Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>

FWIW, I've *finally* gotten a chance to test this with a few sphinx
versions; it works just fine, of course.  Will get it upstream shortly.

Thanks,

jon

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-03-07 17:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-02 15:28 [PATCH v2] Documentation/sphinx: Fix Directive import error Takashi Iwai
2018-03-02 16:01 ` Jani Nikula
2018-03-02 16:42   ` Matthew Wilcox
2018-03-02 18:28     ` Matthew Wilcox
2018-03-02 16:34 ` Matthew Wilcox
2018-03-02 18:40 ` [PATCH v3] " Matthew Wilcox
2018-03-02 19:00   ` Jani Nikula
2018-03-07 17:12   ` Jonathan Corbet

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).