Restructure Elixir to avoid Python path hacks
* Move static files from http to a new directory
0
elixir/__init__.py
Executable file
|
|
@ -24,12 +24,7 @@ import falcon
|
|||
from urllib import parse
|
||||
import sys
|
||||
|
||||
ELIXIR_DIR = os.path.dirname(os.path.realpath(__file__)) + '/..'
|
||||
|
||||
if ELIXIR_DIR not in sys.path:
|
||||
sys.path = [ ELIXIR_DIR ] + sys.path
|
||||
|
||||
from query import get_query
|
||||
from .query import get_query
|
||||
|
||||
class ApiIdentGetterResource:
|
||||
def on_get(self, req, resp, project, ident):
|
||||
|
|
@ -25,13 +25,8 @@ from urllib import parse
|
|||
from bsddb3.db import DB_SET_RANGE
|
||||
import falcon
|
||||
|
||||
ELIXIR_DIR = os.path.dirname(os.path.realpath(__file__)) + '/..'
|
||||
|
||||
if ELIXIR_DIR not in sys.path:
|
||||
sys.path = [ ELIXIR_DIR ] + sys.path
|
||||
|
||||
from lib import autoBytes
|
||||
from query import get_query
|
||||
from .lib import autoBytes
|
||||
from .query import get_query
|
||||
|
||||
class AutocompleteResource:
|
||||
def on_get(self, req, resp):
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
import bsddb3
|
||||
import re
|
||||
from lib import autoBytes
|
||||
from .lib import autoBytes
|
||||
import os
|
||||
import os.path
|
||||
import errno
|
||||
0
http/filters/__init__.py → elixir/filters/__init__.py
Normal file → Executable file
2
http/filters/configin.py → elixir/filters/configin.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
from .utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
|
||||
# Filters for Config.in includes
|
||||
# source "path/file"
|
||||
2
http/filters/cppinc.py → elixir/filters/cppinc.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
from .utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
|
||||
# Filters for cpp includes like these:
|
||||
# #include "file"
|
||||
2
http/filters/cpppathinc.py → elixir/filters/cpppathinc.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
from .utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
|
||||
# Filters for cpp includes like these:
|
||||
# #include <file>
|
||||
2
http/filters/defconfig.py → elixir/filters/defconfig.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
from .utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
|
||||
# Filter for kconfig identifier in defconfigs
|
||||
# Replaces defconfig identifiers with links to definitions/references
|
||||
2
http/filters/dtscompcode.py → elixir/filters/dtscompcode.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
from .utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
|
||||
# Filter for DT compatible strings in code (C family) files
|
||||
# Finds assigments to properties and variables named 'compatible' and recognized by the Query.query('file')
|
||||
2
http/filters/dtscompdocs.py → elixir/filters/dtscompdocs.py
Normal file → Executable file
|
|
@ -1,6 +1,6 @@
|
|||
import re
|
||||
from urllib.parse import quote
|
||||
from filters.utils import Filter, FilterContext, encode_number, decode_number
|
||||
from .utils import Filter, FilterContext, encode_number, decode_number
|
||||
|
||||
# Filter for DT compatible strings in documentation (B family) files
|
||||
# syscon
|
||||
2
http/filters/dtscompdts.py → elixir/filters/dtscompdts.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
from .utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
|
||||
# Filter for DT compatible strings in DTS (D family) files
|
||||
# compatible = "device"
|
||||
2
http/filters/dtsi.py → elixir/filters/dtsi.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
from .utils import Filter, FilterContext, encode_number, decode_number, extension_matches
|
||||
|
||||
# Filters for dts includes as follows:
|
||||
# Replaces include directives in dts/dtsi files with links to source
|
||||
2
http/filters/ident.py → elixir/filters/ident.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, encode_number, decode_number
|
||||
from .utils import Filter, FilterContext, encode_number, decode_number
|
||||
|
||||
# Filter for identifier links
|
||||
# Replaces identifiers marked by Query.query('file') with links to ident page.
|
||||
2
http/filters/kconfig.py → elixir/filters/kconfig.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, encode_number, decode_number, filename_without_ext_matches
|
||||
from .utils import Filter, FilterContext, encode_number, decode_number, filename_without_ext_matches
|
||||
|
||||
# Filters for Kconfig includes
|
||||
# Replaces KConfig includes (source keyword) with links to included files
|
||||
2
http/filters/kconfigidents.py → elixir/filters/kconfigidents.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, encode_number, decode_number
|
||||
from .utils import Filter, FilterContext, encode_number, decode_number
|
||||
|
||||
# Filter for kconfig identifier links
|
||||
# Replaces KConfig identifiers with links to definitions and references
|
||||
2
http/filters/makefiledir.py → elixir/filters/makefiledir.py
Normal file → Executable file
|
|
@ -1,6 +1,6 @@
|
|||
from os.path import dirname
|
||||
import re
|
||||
from filters.utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
from .utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
|
||||
# Filters for Makefile directory includes as follows:
|
||||
# obj-$(VALUE) += dir/
|
||||
2
http/filters/makefiledtb.py → elixir/filters/makefiledtb.py
Normal file → Executable file
|
|
@ -1,6 +1,6 @@
|
|||
from os.path import dirname
|
||||
import re
|
||||
from filters.utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
from .utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
|
||||
# Filters for Makefile file includes like these:
|
||||
# dtb-y += file.dtb
|
||||
2
http/filters/makefilefile.py → elixir/filters/makefilefile.py
Normal file → Executable file
|
|
@ -1,6 +1,6 @@
|
|||
from os.path import dirname
|
||||
import re
|
||||
from filters.utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
from .utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
|
||||
# Filters for files listed in Makefiles
|
||||
# path/file
|
||||
2
http/filters/makefileo.py → elixir/filters/makefileo.py
Normal file → Executable file
|
|
@ -1,6 +1,6 @@
|
|||
from os.path import dirname
|
||||
import re
|
||||
from filters.utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
from .utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
|
||||
# Filters for Makefile file includes like these:
|
||||
# file.o
|
||||
2
http/filters/makefilesrctree.py → elixir/filters/makefilesrctree.py
Normal file → Executable file
|
|
@ -1,5 +1,5 @@
|
|||
import re
|
||||
from filters.utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
from .utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
|
||||
# Filters for files listed in Makefiles using $(srctree)
|
||||
# $(srctree)/Makefile
|
||||
2
http/filters/makefilesubdir.py → elixir/filters/makefilesubdir.py
Normal file → Executable file
|
|
@ -1,6 +1,6 @@
|
|||
from os.path import dirname
|
||||
import re
|
||||
from filters.utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
from .utils import Filter, FilterContext, decode_number, encode_number, filename_without_ext_matches
|
||||
|
||||
# Filters for Makefile directory includes as follows:
|
||||
# subdir-y += dir
|
||||
0
http/filters/projects.py → elixir/filters/projects.py
Normal file → Executable file
2
http/filters/utils.py → elixir/filters/utils.py
Normal file → Executable file
|
|
@ -2,7 +2,7 @@ import re
|
|||
import os
|
||||
from dataclasses import dataclass
|
||||
from typing import Callable, List
|
||||
from query import Query
|
||||
from ..query import Query
|
||||
|
||||
# Context data used by Filters
|
||||
# tag: browsed version, unqoted
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
import subprocess, os
|
||||
|
||||
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
CURRENT_DIR = os.path.abspath(os.path.dirname(os.path.abspath(__file__)) + '/..')
|
||||
|
||||
def script(*args, env=None):
|
||||
args = (os.path.join(CURRENT_DIR, 'script.sh'),) + args
|
||||
|
|
@ -18,9 +18,9 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with Elixir. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from lib import script, scriptLines, decode
|
||||
import lib
|
||||
import data
|
||||
from .lib import script, scriptLines, decode
|
||||
from . import lib
|
||||
from . import data
|
||||
import os
|
||||
from collections import OrderedDict
|
||||
from urllib import parse
|
||||
|
|
@ -28,23 +28,13 @@ from urllib import parse
|
|||
import falcon
|
||||
import jinja2
|
||||
|
||||
ELIXIR_DIR = os.path.dirname(os.path.realpath(__file__)) + '/..'
|
||||
|
||||
if ELIXIR_DIR not in sys.path:
|
||||
sys.path = [ ELIXIR_DIR ] + sys.path
|
||||
|
||||
HTTP_DIR = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
if HTTP_DIR not in sys.path:
|
||||
sys.path = [ HTTP_DIR ] + sys.path
|
||||
|
||||
from lib import validFamily
|
||||
from query import Query, SymbolInstance
|
||||
from filters import get_filters
|
||||
from filters.utils import FilterContext
|
||||
from autocomplete import AutocompleteResource
|
||||
from api import ApiIdentGetterResource
|
||||
from query import get_query
|
||||
from .lib import validFamily
|
||||
from .query import Query, SymbolInstance
|
||||
from .filters import get_filters
|
||||
from .filters.utils import FilterContext
|
||||
from .autocomplete import AutocompleteResource
|
||||
from .api import ApiIdentGetterResource
|
||||
from .query import get_query
|
||||
|
||||
# Generated a Elixir error page
|
||||
def get_error_page(ctx, title, details=None):
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
import re
|
||||
from urllib import parse
|
||||
from lib import decode
|
||||
from elixir.lib import decode
|
||||
|
||||
class FindCompatibleDTS:
|
||||
def __init__(self):
|
||||
|
|
|
|||
|
|
@ -1,39 +0,0 @@
|
|||
/* ubuntu-regular - cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.eot'); /* IE9 Compat Modes */
|
||||
src: local('Ubuntu Regular'), local('Ubuntu-Regular'),
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.woff') format('woff'), /* Modern Browsers */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.svg#Ubuntu') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
/* ubuntu-italic - cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.eot'); /* IE9 Compat Modes */
|
||||
src: local('Ubuntu Italic'), local('Ubuntu-Italic'),
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.woff') format('woff'), /* Modern Browsers */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.svg#Ubuntu') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
/* ubuntu-700 - cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.eot'); /* IE9 Compat Modes */
|
||||
src: local('Ubuntu Bold'), local('Ubuntu-Bold'),
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.woff') format('woff'), /* Modern Browsers */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.svg#Ubuntu') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
39
static/fonts.css
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
/* ubuntu-regular - cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.eot'); /* IE9 Compat Modes */
|
||||
src: local('Ubuntu Regular'), local('Ubuntu-Regular'),
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.woff') format('woff'), /* Modern Browsers */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-regular.svg#Ubuntu') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
/* ubuntu-italic - cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.eot'); /* IE9 Compat Modes */
|
||||
src: local('Ubuntu Italic'), local('Ubuntu-Italic'),
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.woff') format('woff'), /* Modern Browsers */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-italic.svg#Ubuntu') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
/* ubuntu-700 - cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.eot'); /* IE9 Compat Modes */
|
||||
src: local('Ubuntu Bold'), local('Ubuntu-Bold'),
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.woff') format('woff'), /* Modern Browsers */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('/static/fonts/ubuntu/ubuntu-v14-cyrillic_greek_latin_latin-ext_greek-ext_cyrillic-ext-700.svg#Ubuntu') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
|
@ -1,7 +1,7 @@
|
|||
.header {
|
||||
height: 200px;
|
||||
background: #6D7DD2;
|
||||
background-image: url('/img/2penguins.svg');
|
||||
background-image: url('/static/img/2penguins.svg');
|
||||
background-repeat: no-repeat;
|
||||
background-size: 300px;
|
||||
background-position: bottom -82px right;
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 283 B After Width: | Height: | Size: 283 B |
|
|
@ -288,7 +288,7 @@ h2 {
|
|||
text-decoration: none;
|
||||
|
||||
background-color: #aaa;
|
||||
background-image: url("/img/arrow-dropdown-16.svg");
|
||||
background-image: url("/static/img/arrow-dropdown-16.svg");
|
||||
background-position: right 2px center;
|
||||
background-repeat: no-repeat;
|
||||
|
||||
|
|
@ -810,8 +810,8 @@ h2 {
|
|||
|
||||
@font-face {
|
||||
font-family: "lxr";
|
||||
src: url("/fonts/lxr.svg") format("svg"),
|
||||
url("/fonts/lxr.ttf") format("truetype");
|
||||
src: url("/static/fonts/lxr.svg") format("svg"),
|
||||
url("/static/fonts/lxr.ttf") format("truetype");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
|
@ -12,9 +12,9 @@
|
|||
<a class="message-link" target="_blank" href="https://bootlin.com/training/audio/"></a>
|
||||
</div>
|
||||
<h1>
|
||||
<object data="/images/bootlin-logo-white.svg" type="image/svg+xml">
|
||||
<object data="/static/images/bootlin-logo-white.svg" type="image/svg+xml">
|
||||
<!-- If the browser doesn't support SVG -->
|
||||
<img src="/images/bootlin-logo-white.png" alt="Bootlin logo" />
|
||||
<img src="/static/images/bootlin-logo-white.png" alt="Bootlin logo" />
|
||||
</object>
|
||||
</h1>
|
||||
<h2>Elixir Cross Referencer</h2>
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@
|
|||
Elixir Cross Referencer - Explore source code in your browser - Particularly useful for the Linux kernel and other low-level projects in C/C++ (bootloaders, C libraries...)
|
||||
{%- endblock %}">
|
||||
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1" />
|
||||
<link rel="stylesheet" href="/style.css?v=7">
|
||||
<link rel="stylesheet" href="/banner.css">
|
||||
<link rel="stylesheet" href="/autocomplete.css">
|
||||
<link rel="stylesheet" href="/static/style.css?v=7">
|
||||
<link rel="stylesheet" href="/static/banner.css">
|
||||
<link rel="stylesheet" href="/static/autocomplete.css">
|
||||
<script>document.documentElement.className = 'js'</script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
@ -48,8 +48,8 @@
|
|||
<span class="poweredby">powered by <a target="_blank" href="https://github.com/bootlin/elixir">Elixir 2.2</a></span>
|
||||
</footer>
|
||||
</div>
|
||||
<script src="/script.js?v=5"></script>
|
||||
<script src="/dynamic-references.js?v=4"></script>
|
||||
<script src="/autocomplete.js" project="{{ current_project }}"></script>
|
||||
<script src="/static/script.js?v=5"></script>
|
||||
<script src="/static/dynamic-references.js?v=4"></script>
|
||||
<script src="/static/autocomplete.js" project="{{ current_project }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -25,10 +25,10 @@
|
|||
from sys import argv
|
||||
from threading import Thread, Lock, Event, Condition
|
||||
|
||||
import lib
|
||||
from lib import script, scriptLines
|
||||
import data
|
||||
from data import PathList
|
||||
import elixir.lib as lib
|
||||
from elixir.lib import script, scriptLines
|
||||
import elixir.data as data
|
||||
from elixir.data import PathList
|
||||
from find_compatible_dts import FindCompatibleDTS
|
||||
|
||||
verbose = False
|
||||
|
|
|
|||
1
wsgi.py
Executable file
|
|
@ -0,0 +1 @@
|
|||
from elixir.web import application
|
||||