Edgewall Software
Modify

Opened 16 years ago

Last modified 7 months ago

#7463 new defect

theme.html not included when trac is at / URL.

Reported by: anonymous Owned by:
Priority: normal Milestone: next-stable-1.6.x
Component: general Version: 0.11-stable
Severity: normal Keywords:
Cc: ninuje@…, cmlenz@… Branch:
Release Notes:
API Changes:
Internal Changes:

Description

It took me 4 hours to trace all things and make out this bug. I have simple setup nothing special. When I visit http://trac.host:8000/project/ all is ok (using tracd) But when I use apache + mod_wsgi to visit http://trac.host (without project) I do not see header, banner, menu, just content. When I looked into sources I noticed that trac did not generate divs. So I started to trace it. It finished with the solution:

snowflake templates # diff  layout.html layout.html-orig 
54c54
<   <xi:include href="$chrome.theme"></xi:include>
---
>   <xi:include href="$chrome.theme"><xi:fallback /></xi:include>
snowflake templates # 

I suppose that when fallback is ON Genshi does not search another template directories to include theme.html.

Attachments (0)

Change History (25)

comment:1 by anonymous, 16 years ago

Same with site.html. The file is in /path/to/project/templates, and when using tracd it's displayed. So I had to remove fallback and there. No the last 3 lines of layout.html look like:

  <xi:include href="$chrome.theme"></xi:include>                                                                             
  <xi:include href="site.html"></xi:include>                                                                                 
</html>                                                                                                                      
         

comment:2 by Christian Boos, 16 years ago

Which version of Genshi are you using? Would be quite helpful to compare the results you get with the released Genshi 0.5 and latest development version (either genshi:source:branches/stable/0.5.x or genshi:source:trunk, they seem to have the same template loader code).

comment:3 by Remy Blank, 16 years ago

Resolution: worksforme
Status: newclosed

Information requested but not provided, closing as worksforme. Feel free to reopen if you can provide the requested information.

comment:4 by ninuje@…, 15 years ago

Cc: ninuje@… added
Resolution: worksforme
Status: closedreopened

I'm having the exact same issue (using mod_wsgi with a single trac project).

This is on a fresh new x86 box, but for the record, I had the same problem with the old one ;).

Stripping the fallback tag in layout.html also 'fix' it for me.

Without this patch, I get the same behaviour with every Genshi version available (0.5.1 release, Genshi-0.5.2dev_r947, Genshi-0.6dev_r960).

It works fine with tracd.

(And it does seem to be the same issue as #7742, at least in my case).

comment:5 by ninuje@…, 15 years ago

Forgot to post the specs:

Gentoo ~x86, Python 2.5.2, Trac-0.11stable_r7655, Subversion 1.5.4.

Stock trac environment using SQLite.

comment:6 by Christian Boos, 15 years ago

Cc: cmlenz@… added
Milestone: 0.11.3

Christopher, could you confirm the need for removing the <xi:include> fallback in order to force Genshi to look in other search directories, or is it another problem?

comment:7 by anonymous, 15 years ago

Could reproduce this on an X86 - Debian/lenny Server.

  Python:   2.5.2
  Trac:     0.11.1
  Genshi:   0.5.1
  mod_wsgi: 2.3

However trac is here at /trac in an SSL subdomain

in reply to:  7 comment:8 by Noah Kantrowitz, 15 years ago

Replying to anonymous:

Could reproduce this on an X86 - Debian/lenny Server.

  Python:   2.5.2
  Trac:     0.11.1
  Genshi:   0.5.1
  mod_wsgi: 2.3

However trac is here at /trac in an SSL subdomain

I was helping this user troubleshoot in the IRC channel. Using tracd made the problem go away, but forcing mod_wsgi into daemon mode did not. Also the issue applied to all URLs, not just the base.

comment:9 by Carsten Klein <carsten.klein@…>, 14 years ago

Perhaps this is an access permission related problem?

apache requires that it has read access to the file and also that it can enter the directory which holds that file.

Perhaps changing the group ownership of the project folder to

chgrp www-data -R <project-root>

and access permission for the group to

chmod g+x,g+r -R <project-root>

with access permission for the configuration and database set to

chmod g+w <project-root>conf/trac.ini <project-root>/db/trac.db

would do the trick.

in reply to:  9 comment:10 by Carsten Klein <carsten.klein@…>, 14 years ago

But then again, after rereading available comments, this would not solve it, since when removing fallback, everything seems to be working fine…

comment:11 by zooko@…, 13 years ago

I seem to have this problem. I have no header on my trac page. When I was directed to this ticket by rblank on IRC, I tried the patch described in comment:1, like this:

$ diff -u /usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/templates/layout.html.orig /usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/templates/layout.html
--- /usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/templates/layout.html.orig        2011-10-13 05:57:06.000000000 +0000
+++ /usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/templates/layout.html     2011-10-13 05:57:22.000000000 +0000
@@ -58,6 +58,6 @@
     </div>
   </body></py:match>
 
-  <xi:include href="$chrome.theme"><xi:fallback /></xi:include>
-  <xi:include href="site.html"><xi:fallback /></xi:include>
+  <xi:include href="$chrome.theme"></xi:include>
+  <xi:include href="site.html"></xi:include>
 </html>

With this patch in place, when I load the front page of my trac installation, I get:

Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/web/api.py", line 440, in send_error
    data, 'text/html')
  File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/trac/web/chrome.py", line 836, in render_template
    stream = template.generate(**data)
  File "/usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg/genshi/template/base.py", line 532, in generate
    stream = self.stream
  File "/usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg/genshi/template/base.py", line 442, in stream
    self._stream = list(self._prepare(self._stream))
  File "/usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg/genshi/template/base.py", line 493, in _prepare
    for event in tmpl.stream:
  File "/usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg/genshi/template/base.py", line 442, in stream
    self._stream = list(self._prepare(self._stream))
  File "/usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg/genshi/template/base.py", line 478, in _prepare
    yield kind, (directives, list(substream)), pos
  File "/usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg/genshi/template/base.py", line 492, in _prepare
    cls=cls or self.__class__)
  File "/usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg/genshi/template/loader.py", line 246, in load
    raise TemplateNotFound(filename, search_path)
TemplateNotFound: Template "site.html" not found

If I then install a site.html file into the project's templates directory, I get a fully populated trac with header! (And with my site.html.)

Python: 2.6.5
Trac: 0.12.2
Genshi: 0.6
uWSGI 0.9.8.6
nginx 1.0.8

in reply to:  11 ; comment:12 by Remy Blank, 13 years ago

Replying to zooko@…:

If I then install a site.html file into the project's templates directory, I get a fully populated trac with header! (And with my site.html.)

What happens if you remove the <xi:fallback/> only for $chrome.theme (which is actually theme.html), and remove your site.html?

in reply to:  12 ; comment:13 by anonymous, 12 years ago

Replying to rblank:

Replying to zooko@…:

If I then install a site.html file into the project's templates directory, I get a fully populated trac with header! (And with my site.html.)

What happens if you remove the <xi:fallback/> only for $chrome.theme (which is actually theme.html), and remove your site.html?

I've now done that and my site still works fine.

in reply to:  13 comment:14 by anonymous, 12 years ago

Replying to anonymous:

Replying to rblank:

Replying to zooko@…:

If I then install a site.html file into the project's templates directory, I get a fully populated trac with header! (And with my site.html.)

What happens if you remove the <xi:fallback/> only for $chrome.theme (which is actually theme.html), and remove your site.html?

I've now done that and my site still works fine.

Oh, and that was me, zooko@…, who said that.

comment:15 by zookog@…, 11 years ago

I just upgraded https://Tahoe-LAFS.org from Trac-0.12.3 to Trac-0.12.5 and the header and toolbar disappeared. I ran diff of the relevant files in the two versions locally installed:

zooko@tahoe-lafs:/usr/local/lib/python2.6/dist-packages$ diff -u ./Trac-0.12.3-py2.6.egg/trac/templates/layout.html ./Trac-0.12.5-py2.6.egg/trac/templates/layout.html
--- ./Trac-0.12.3-py2.6.egg/trac/templates/layout.html  2012-03-02 13:27:04.000000000 +0000
+++ ./Trac-0.12.5-py2.6.egg/trac/templates/layout.html  2013-03-31 00:42:45.000000000 +0000
@@ -12,7 +12,10 @@
     </title>
     <meta py:if="chrome.content_type == 'text/html'" http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <meta py:for="meta in chrome.metas" py:attrs="meta"/>
-    <!--[if IE]><script type="text/javascript">window.location.hash = window.location.hash;</script><![endif]-->
+    <!--[if IE]><script type="text/javascript">
+      if (/^#__msie303:/.test(window.location.hash))
+        window.location.replace(window.location.hash.replace(/^#__msie303:/, '#'));
+    </script><![endif]-->
     <py:if test="chrome.links">
       <py:for each="rel, links in chrome.links.items()">
         <link rel="${rel}" py:for="link in links" py:attrs="link" />
@@ -39,7 +42,7 @@
     ${select('*|text()|comment()')}
 
     <script type="text/javascript" py:if="chrome.late_links">
-      <py:for each="link in chrome.late_links.get('stylesheet')">
+      <py:for each="link in chrome.late_links.get('stylesheet', [])">
         jQuery.loadStyleSheet("${link.href}", "${link.type}");
       </py:for>
     </script>
@@ -62,6 +65,6 @@
     </div>
   </body></py:match>
 
-  <xi:include href="$chrome.theme"></xi:include>
+  <xi:include href="$chrome.theme"><xi:fallback /></xi:include>
   <xi:include href="site.html"><xi:fallback /></xi:include>
 </html>

I then edited the new file in this way:

zooko@tahoe-lafs:/usr/local/lib/python2.6/dist-packages/Trac-0.12.5-py2.6.egg/trac/templates$ diff -u layout.html.orig layout.html
--- layout.html.orig    2013-03-31 01:28:30.000000000 +0000
+++ layout.html 2013-03-31 01:28:52.000000000 +0000
@@ -65,6 +65,6 @@
     </div>
   </body></py:match>
 
-  <xi:include href="$chrome.theme"><xi:fallback /></xi:include>
+  <xi:include href="$chrome.theme"></xi:include>
   <xi:include href="site.html"><xi:fallback /></xi:include>
 </html>

And my header and toolbar reappeared.

comment:16 by zookog@…, 11 years ago

At the request of osimons on IRC, here's the version of genshi:

pkg_resources.require('genshi') =>  [Genshi 0.6 (/usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg)]
import genshi;print genshi =>  <module 'genshi' from '/usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg/genshi/__init__.pyc'>
import genshi;print genshi.__version__ =>  0.6

comment:17 by osimons, 11 years ago

I also asked for you to test the latest Genshi release (0.6.1). Could you please test it and report back?

comment:18 by Remy Blank, 11 years ago

Potentially of interest: #565

Does anyone who experiences the issues with xi:fallback here run with -O, by any chance?

comment:19 by warner, 11 years ago

I ran into this problem just today (on the same tahoe-lafs.org trac that zooko worked on two years ago). I think upstream genshi's http://genshi.edgewall.org/ticket/565 is the root cause (an assert statement with important side-effects, which gets turned off when optimization is enabled). I observed headers and footers disappear when I ran our trac under uwsgi (which was configured with —optimize=2), but it looked fine under tracd (which probably doesn't use -O). This was using genshi-0.6.1 and trac-0.12.5.

From what I can tell, neither of the current Genshi releases (0.6.1 or 0.7.0) contain the fix. It's in their SVN trunk, and in the 0.6.x/0.7.x branches, but they haven't made a release since then. Trac-0.12.5 says "Genshi≥0.6,<0.7dev", so we'll need an 0.6.2 to satisfy our trac. (trac-1.0 might accept a genshi-0.7.1, I'm not sure).

So until Genshi has a fixed release, the workarounds are one of:

  • locally patch genshi/template/markup.py as described in ticket 565
  • don't use -O / —optimize when running trac
  • don't use xi:fallback in templates

comment:20 by Remy Blank, 11 years ago

Great, thanks for confirming! We'll keep this ticket open as a pointer to #565 until the next Genshi release, and close it with a link to the fixed release.

comment:21 by Ryan J Ollos, 9 years ago

Milestone: next-minor-0.12.xnext-stable-1.0.x

comment:22 by Ryan J Ollos, 9 years ago

Status: reopenednew

comment:23 by Ryan J Ollos, 7 years ago

Milestone: next-stable-1.0.xnext-stable-1.2.x

Moved ticket assigned to next-stable-1.0.x since maintenance of 1.0.x is coming to a close. Please move the ticket back if it's critical to fix on 1.0.x.

comment:24 by Ryan J Ollos, 4 years ago

Milestone: next-stable-1.2.xnext-stable-1.4.x

comment:25 by Ryan J Ollos, 7 months ago

Milestone: next-stable-1.4.xnext-stable-1.6.x

Milestone renamed

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The ticket will remain with no owner.
The ticket will be disowned.
as The resolution will be set. Next status will be 'closed'.
The owner will be changed from (none) to anonymous. Next status will be 'assigned'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.