SourceForge has been redesigned. Learn more.

URL address and Database source tree

Xuejun Lu
  • Xuejun Lu

    Xuejun Lu - 2011-09-26

    The finished lxr url is http://localhost/lxr/source. Where is full directory path of the top of source tree?

    Can anyone write a simplier installation step by step?

  • Andre-Littoz

    Andre-Littoz - 2011-09-27

    All configuration parameters (source tree path, versions, data base parameters, …) are in file lxr.conf. Have a look at, "installation instructions", step 4.

    If you still don't get what you expect, send your lxr.conf.


  • Xuejun Lu

    Xuejun Lu - 2011-09-27

    Hi ajl,

    I didn't see where to put the source code of linux kernel?

    Next, if I have another version of kernel which needs to add to the source tree, what are the steps?


  • Andre-Littoz

    Andre-Littoz - 2011-09-27

    Hi xlu,

    Create a directory in your "home", e.g.

    mkdir ~/thesource

    In this directory, create one sub-directory per version, e.g. 

    mkdir ~/source/v1

    Copy your source tree into v1.

    Then, change lxr.conf to tell LXR where your source tree is located. This sub-step 4 of "LXR basic configuration" (see

    , 'baseurl' => 'http://localhost/lxr'
    , 'sourceroot' => '/home/[i]your_user_id[/i]/thesource

    In the "variables subsection:

    , 'range' => [ qw(v1) ]

    These are the minimal steps to display your source tree. If you want to cross-reference the variables and functions you need to set up the database and run genxref.

    Try first to reach the stage where LXR displays something meaningful on the screen. Then you can go further.


  • Andre-Littoz

    Andre-Littoz - 2011-09-27

    I forgot to answer the second question.

    If you want to ass another version, create a second subdirectory:

    mkdir ~/thesource/v2

    note: I made a mistake above, the correct command for creation of the V1 directory should read:

    mkdir ~/thesource/v1

    Copy your second tree into v2

    Modify the 'range' line to

    , 'range' => [ qw(v1 v2) ]

    If you don't like LXR displaying the first version by default, you can add:

    , 'default' => 'v2'

    Of course, you need to run genxref against the newly added version if you want the cross-references.


  • Xuejun Lu

    Xuejun Lu - 2011-09-27

    Hi ajl,

    Thank you for the answers. I understand it much better.

    By the way, why not to implement a technology/business model as this:
    1. I/users upload the source code to a web address such as youtube for video.
    2. The web address and server provide LXR service.
    3.  I/users navigate the source code by LXR.

    LXR is the best one for cross reference. Students, developers, and many technical people would like a website which provides the LXR function.


  • Andre-Littoz

    Andre-Littoz - 2011-09-28

    I don't think this would substantially ease LXR setup because you still need to tell LXR where your source tree is. I see several difficulties:

    1. The server must offer both web service and shell service
    LXR usual operation lies in the web service, but LXR configuration and database setup lie in the shell service

    2. There are security issues with allowing anybody to use shell service
    Unless strict security procedures are followed, you gain access to virtually any public directory on the server.

    3. You are still faced with LXR configuration
    This step cannot be automated. This is the dark side of its versatility. You have noticed that some parts are not trivial.

    4. I cannot guarantee that LXR is 100% secure
    Some developers in the past have discovered LXR could be used for XSS exploits. This has been fixed but are there other vulnerabilites left?

    5. Apart from students during their training on public data, people concerned with intellectual property prefer to keep their development on a local computer where they can control access to their source.

    6. Even if setting up LXR is a real burden the first time, it is a very light software utility (only 2-3 thousands lines) compared to the source tree size.
    It doesn't require too much local resources and you end up with a better response time than with remote service.

    You find difficult to set up LXR on your computer. I agree it is not a trivial task. But that's nothing compared to activating LXR service on Sourceforge because of argument 2. The key to success is understanding the references to files: there 3 contexts during LXR operation (see, each one with its own filename space.

    You would like a simpler installation guide. So please, read carefully the LXR site ( and the User's manual and give me feed-back, remarks or suggestions so that I can improve them.


  • Xuejun Lu

    Xuejun Lu - 2011-10-03

    Hi ajl,

    Until now, I didn't have time to do it.

    Do you know expert who did LXR setup before in Montreal Canada? I is better to get some help.


  • Xuejun Lu

    Xuejun Lu - 2012-02-19

    Hi ajl,

    Could you do me a favour?

    There are LXR websites of  Linux kernel, but I want to see the whole Fedora OS by LXR. Could you build a website to provide LXR service for more source codes? Such as Fedora, or all files of Sourceforge.

    Thank you,

  • Andre-Littoz

    Andre-Littoz - 2012-02-20

    Hi xlu,

    The answer is no.

    Though LXR is a very small project (now in the 8k lines range), it requires time to keep it bug-clean. Moreover, I'm working on documentation for the next release. I intend to issue simultaneously the manual and the software (ready, but I hold it till I get a polished manual).

    Also, your request makes no sense: Fedora is not an OS, it is a distribution. This means it is made of numerous components: a kernel of course, many many GNU tools, lots of applications (Mozilla suite, LibreOffice suite, …). It is nearly impossible to grab all sources since they have various origins. Next, supposing I could gather everything in an adequately sized disk, I doubt I could index all source trees in a manageable time (on my high-end computer, indexing the 3.1 kernel took 3 hours 45 minutes for a single version). I can't figure out even an order of magnitude of the number of source trees LXR should handle in such a situation.

    There is also the issue of updating the cross-references whenever something changes in the distribution. As you can see if you try to keep up with state-of-the-distribution, update frequency is very high. I believe it is the application/software author's responsability to provide an LXR service for its software.

    The same argument also applies to SourceForge files. Remember that many projects on SF are dead (they have not been updated for years). So why waste time and resources on them? I add SF staff (and configuration) put limits on what can be done on their computers. When building LXR web site and its demo, I bumped into technical limits which allowed me to discover bugs and shortcomings inside LXR. More, SF security rules make it hard to have an operational LXR service. I know now how to do it, I can share this knowledge but I don't want to do it in somebody else's place.

    A sensible idea would be to have a link page pointing to LXR services (I already know of for Linux kernels, for Mozilla applications, and others). Unhappily, they either use the outdated 0.31 versions, the technically different lxrng or the customized mxr. I don't see many up-to-date sites (i.e. using 0.10 release).

    Send me links you find on the Net, I'll put them in this link page.

    Sorry for this negative answer, but I think it isn't feasible.



Log in to post a comment.