From af1394e665806226c88e3e4e4e0b4e97e909adda Mon Sep 17 00:00:00 2001 From: David Douard <david.douard@sdfa3.org> Date: Fri, 16 Aug 2024 17:49:17 +0200 Subject: [PATCH] Migrate the build system to hatch This allows especially to install the sources in editable mode from a read-only directory. i.e. it allows to install it from sources in a docker environment where the source directory is mounter read-only, for example when running (docker based) integration tests using local sources. We move static assets as proper package data (i.e. under swh/web/) for easier packaging. --- .gitignore | 12 ++--- assets/config/webpack.config.development.js | 14 ++--- pyproject.toml | 51 +++++++++++++----- swh/web/settings/common.py | 16 ++++-- .../web/static}/img/arrow-up-small.png | Bin .../web/static}/img/icons/swh-logo-32x32.png | Bin .../img/icons/swh-logo-archive-180x180.png | Bin .../img/icons/swh-logo-archive-192x192.png | Bin .../img/icons/swh-logo-archive-270x270.png | Bin {static => swh/web/static}/img/logos/arch.png | Bin {static => swh/web/static}/img/logos/aur.png | Bin .../web/static}/img/logos/bioconductor.png | Bin .../web/static}/img/logos/bitbucket-hg.png | 0 .../web/static}/img/logos/bitbucket.png | Bin .../web/static}/img/logos/bower.png | Bin {static => swh/web/static}/img/logos/cgit.png | Bin .../web/static}/img/logos/conda.png | Bin {static => swh/web/static}/img/logos/cpan.png | Bin {static => swh/web/static}/img/logos/cran.png | Bin .../web/static}/img/logos/crates.png | Bin .../web/static}/img/logos/debian.png | Bin .../web/static}/img/logos/dlang.png | Bin .../web/static}/img/logos/elife.png | Bin .../web/static}/img/logos/gitea.png | Bin .../web/static}/img/logos/github.png | Bin .../web/static}/img/logos/gitlab.png | Bin .../web/static}/img/logos/gitorious.png | Bin .../web/static}/img/logos/gitweb.png | Bin {static => swh/web/static}/img/logos/gnu.png | Bin {static => swh/web/static}/img/logos/gogs.png | Bin .../web/static}/img/logos/golang.png | Bin .../web/static}/img/logos/googlecode.png | Bin {static => swh/web/static}/img/logos/guix.png | Bin .../web/static}/img/logos/hackage.png | Bin {static => swh/web/static}/img/logos/hal.png | Bin .../web/static}/img/logos/heptapod.png | Bin .../web/static}/img/logos/inria.jpg | Bin {static => swh/web/static}/img/logos/ipol.png | Bin .../web/static}/img/logos/launchpad.png | Bin .../web/static}/img/logos/maven.png | Bin .../web/static}/img/logos/nixos.png | Bin {static => swh/web/static}/img/logos/npm.png | Bin {static => swh/web/static}/img/logos/opam.png | Bin .../web/static}/img/logos/packagist.png | Bin .../web/static}/img/logos/pagure.png | Bin .../web/static}/img/logos/phabricator.png | Bin .../web/static}/img/logos/pubdev.png | Bin .../web/static}/img/logos/puppet.png | Bin {static => swh/web/static}/img/logos/pypi.png | Bin {static => swh/web/static}/img/logos/rpm.png | Bin .../web/static}/img/logos/rubygems.png | Bin .../web/static}/img/logos/sourceforge.png | Bin .../web/static}/img/logos/zenodo.png | Bin {static => swh/web/static}/img/swh-donor.png | Bin .../web/static}/img/swh-logo-white.svg | 0 {static => swh/web/static}/img/swh-logo.png | Bin {static => swh/web/static}/img/swh-logo.svg | 0 {static => swh/web/static}/img/swh-mirror.png | Bin .../web/static}/img/swh-spinner-small.gif | Bin .../web/static}/img/swh-spinner.gif | Bin {static => swh/web/static}/img/swh-vault.png | Bin .../static}/json/highlightjs-languages.json | 0 .../web/static}/xml/swh-opensearch.xml | 0 63 files changed, 62 insertions(+), 31 deletions(-) rename {static => swh/web/static}/img/arrow-up-small.png (100%) rename {static => swh/web/static}/img/icons/swh-logo-32x32.png (100%) rename {static => swh/web/static}/img/icons/swh-logo-archive-180x180.png (100%) rename {static => swh/web/static}/img/icons/swh-logo-archive-192x192.png (100%) rename {static => swh/web/static}/img/icons/swh-logo-archive-270x270.png (100%) rename {static => swh/web/static}/img/logos/arch.png (100%) rename {static => swh/web/static}/img/logos/aur.png (100%) rename {static => swh/web/static}/img/logos/bioconductor.png (100%) rename {static => swh/web/static}/img/logos/bitbucket-hg.png (100%) rename {static => swh/web/static}/img/logos/bitbucket.png (100%) rename {static => swh/web/static}/img/logos/bower.png (100%) rename {static => swh/web/static}/img/logos/cgit.png (100%) rename {static => swh/web/static}/img/logos/conda.png (100%) rename {static => swh/web/static}/img/logos/cpan.png (100%) rename {static => swh/web/static}/img/logos/cran.png (100%) rename {static => swh/web/static}/img/logos/crates.png (100%) rename {static => swh/web/static}/img/logos/debian.png (100%) rename {static => swh/web/static}/img/logos/dlang.png (100%) rename {static => swh/web/static}/img/logos/elife.png (100%) rename {static => swh/web/static}/img/logos/gitea.png (100%) rename {static => swh/web/static}/img/logos/github.png (100%) rename {static => swh/web/static}/img/logos/gitlab.png (100%) rename {static => swh/web/static}/img/logos/gitorious.png (100%) rename {static => swh/web/static}/img/logos/gitweb.png (100%) rename {static => swh/web/static}/img/logos/gnu.png (100%) rename {static => swh/web/static}/img/logos/gogs.png (100%) rename {static => swh/web/static}/img/logos/golang.png (100%) rename {static => swh/web/static}/img/logos/googlecode.png (100%) rename {static => swh/web/static}/img/logos/guix.png (100%) rename {static => swh/web/static}/img/logos/hackage.png (100%) rename {static => swh/web/static}/img/logos/hal.png (100%) rename {static => swh/web/static}/img/logos/heptapod.png (100%) rename {static => swh/web/static}/img/logos/inria.jpg (100%) rename {static => swh/web/static}/img/logos/ipol.png (100%) rename {static => swh/web/static}/img/logos/launchpad.png (100%) rename {static => swh/web/static}/img/logos/maven.png (100%) rename {static => swh/web/static}/img/logos/nixos.png (100%) rename {static => swh/web/static}/img/logos/npm.png (100%) rename {static => swh/web/static}/img/logos/opam.png (100%) rename {static => swh/web/static}/img/logos/packagist.png (100%) rename {static => swh/web/static}/img/logos/pagure.png (100%) rename {static => swh/web/static}/img/logos/phabricator.png (100%) rename {static => swh/web/static}/img/logos/pubdev.png (100%) rename {static => swh/web/static}/img/logos/puppet.png (100%) rename {static => swh/web/static}/img/logos/pypi.png (100%) rename {static => swh/web/static}/img/logos/rpm.png (100%) rename {static => swh/web/static}/img/logos/rubygems.png (100%) rename {static => swh/web/static}/img/logos/sourceforge.png (100%) rename {static => swh/web/static}/img/logos/zenodo.png (100%) rename {static => swh/web/static}/img/swh-donor.png (100%) rename {static => swh/web/static}/img/swh-logo-white.svg (100%) rename {static => swh/web/static}/img/swh-logo.png (100%) rename {static => swh/web/static}/img/swh-logo.svg (100%) rename {static => swh/web/static}/img/swh-mirror.png (100%) rename {static => swh/web/static}/img/swh-spinner-small.gif (100%) rename {static => swh/web/static}/img/swh-spinner.gif (100%) rename {static => swh/web/static}/img/swh-vault.png (100%) rename {static => swh/web/static}/json/highlightjs-languages.json (100%) rename {static => swh/web/static}/xml/swh-opensearch.xml (100%) diff --git a/.gitignore b/.gitignore index c10b97018..2590ee1c9 100644 --- a/.gitignore +++ b/.gitignore @@ -12,12 +12,12 @@ docs/dev-info.md *.sqlite3* .directory node_modules/ -static/*.* -static/js/ -static/css/ -static/fonts/ -static/jssources/ -static/img/thirdParty/ +swh/web/static/*.* +swh/web/static/js/ +swh/web/static/css/ +swh/web/static/fonts/ +swh/web/static/jssources/ +swh/web/static/img/thirdParty/ build/ dist/ package-lock.json diff --git a/assets/config/webpack.config.development.js b/assets/config/webpack.config.development.js index 64d48f13e..d3a0a900f 100644 --- a/assets/config/webpack.config.development.js +++ b/assets/config/webpack.config.development.js @@ -161,7 +161,7 @@ module.exports = { entry: bundles, // assets output configuration output: { - path: path.resolve('./static/'), + path: path.resolve('./swh/web/static/'), filename: 'js/[name].[contenthash].js', chunkFilename: 'js/[name].[contenthash].js', publicPath: publicPath, @@ -363,7 +363,7 @@ module.exports = { }), // needed in order to use django_webpack_loader new BundleTracker({ - path: './static/', + path: './swh/web/static/', filename: 'webpack-stats.json' }), // for generating the robots.txt file @@ -390,23 +390,23 @@ module.exports = { patterns: [ { from: path.resolve(nodeModules, 'pdfjs-dist/legacy/build/pdf.worker.min.mjs'), - to: path.resolve(repoRootPath, 'static/js/pdf.worker.min.js') + to: path.resolve(repoRootPath, 'swh/web/static/js/pdf.worker.min.js') }, { from: path.resolve(nodeModules, 'mathjax/es5/output/chtml/fonts/woff-v2/**'), - to: path.resolve(repoRootPath, 'static/fonts/[name][ext]') + to: path.resolve(repoRootPath, 'swh/web/static/fonts/[name][ext]') }, { from: path.resolve(nodeModules, 'mathjax/es5/input/tex/extensions/'), - to: path.resolve(repoRootPath, 'static/js/mathjax/input/tex/extensions/') + to: path.resolve(repoRootPath, 'swh/web/static/js/mathjax/input/tex/extensions/') }, { from: path.resolve(nodeModules, 'mathjax/es5/input/mml/extensions/'), - to: path.resolve(repoRootPath, 'static/js/mathjax/input/mml/extensions/') + to: path.resolve(repoRootPath, 'swh/web/static/js/mathjax/input/mml/extensions/') }, { from: path.resolve(nodeModules, 'mathjax/es5/sre/mathmaps/'), - to: path.resolve(repoRootPath, 'static/js/mathjax/sre/mathmaps/') + to: path.resolve(repoRootPath, 'swh/web/static/js/mathjax/sre/mathmaps/') } ] }), diff --git a/pyproject.toml b/pyproject.toml index 9fd738e0c..5cc351c32 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,14 +17,44 @@ classifiers = [ ] dynamic = ["version", "dependencies", "optional-dependencies"] -[tool.setuptools.packages.find] -include = ["swh.*"] +[build-system] +requires = ["hatchling", "hatch-requirements-txt", "hatch-vcs", "hatch-build-scripts"] +build-backend = "hatchling.build" + +[tool.hatch] +[tool.hatch.build.targets.wheel] +packages = ["swh"] -[tool.setuptools.dynamic] -dependencies = { file = ["requirements.txt", "requirements-swh.txt"] } -[tool.setuptools.dynamic.optional-dependencies] -testing = { file = ["requirements-test.txt"] } +[tool.hatch.build.targets.sdist] +exclude = [ + "docs/_build", + "docs/apidoc", +] + +[tool.hatch.version] +source = "vcs" +fallback-version = "0.0.1" + +[tool.hatch.metadata.hooks.requirements_txt] +files = ["requirements.txt", "requirements-swh.txt"] + +[tool.hatch.metadata.hooks.requirements_txt.optional-dependencies] +testing = ["requirements-test.txt"] + +# Note: the [[...]] syntax denotes an array of tables in toml, see +# https://toml.io/en/v1.0.0#array-of-tables +#[[tool.hatch.build.targets.wheel.hooks.build-scripts.scripts]] +#commands = [ +# "make build-webpack-prod" + #"make java", + #"cargo build --all-features --release", + #"sh -c 'ORC_USE_SYSTEM_LIBRARIES=1 cargo build --all-features --release'" +#] +#artifacts = [ +# "webpack-stats.json", +#] +#out_dir = "java/target" [project.urls] "Homepage" = "https://gitlab.softwareheritage.org/swh/devel/swh-web" @@ -33,13 +63,6 @@ testing = { file = ["requirements-test.txt"] } "Documentation" = "https://docs.softwareheritage.org/devel/swh-web/" "Source" = "https://gitlab.softwareheritage.org/swh/devel/swh-web.git" -[build-system] -requires = ["setuptools", "setuptools-scm"] -build-backend = "setuptools.build_meta" - -[tool.setuptools_scm] -fallback_version = "0.0.1" - [tool.black] target-version = ['py310', 'py311', 'py312'] exclude = 'swh/web/tests/resources/contents' @@ -120,4 +143,4 @@ ignore = [ "E704", # multiple statements on one line "W503" # line break before binary operator <https://github.com/psf/black/issues/52> ] -max-line-length = 88 \ No newline at end of file +max-line-length = 88 diff --git a/swh/web/settings/common.py b/swh/web/settings/common.py index ce839d231..2d2f41474 100644 --- a/swh/web/settings/common.py +++ b/swh/web/settings/common.py @@ -140,8 +140,13 @@ TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": SWH_APP_TEMPLATES, - "APP_DIRS": True, + # "APP_DIRS": True, "OPTIONS": { + # "debug": True, + "loaders": [ + "django.template.loaders.filesystem.Loader", + "django.template.loaders.app_directories.Loader", + ], "context_processors": [ "django.template.context_processors.debug", "django.template.context_processors.request", @@ -201,20 +206,23 @@ USE_TZ = True STATIC_URL = "/static/" # static folder location when swh-web has been installed with pip -STATIC_DIR = os.path.join(sys.prefix, "share/swh/web/static") +STATIC_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../static")) +if not os.path.exists(STATIC_DIR): + STATIC_DIR = os.path.join(sys.prefix, "share/swh/web/static") if not os.path.exists(STATIC_DIR): # static folder location when swh-web has been installed with "pip --user" STATIC_DIR = os.path.join(site.getuserbase(), "share/swh/web/static") if not os.path.exists(STATIC_DIR): + warnings.warn("Get to run the dirty look-for-static code here") ROOT_DIR = Path(PROJECT_DIR).absolute() - while not (ROOT_DIR / "static").is_dir(): + while not (ROOT_DIR / "swh/web/static").is_dir(): ROOT_DIR = ROOT_DIR = ROOT_DIR.parent if (ROOT_DIR / ".git").is_dir() or (ROOT_DIR / "pyproject.toml").is_file(): break if ROOT_DIR == ROOT_DIR.parent: break - STATIC_DIR = str(ROOT_DIR / "static") + STATIC_DIR = str(ROOT_DIR / "swh/web/static") if not os.path.exists(STATIC_DIR): warnings.warn( diff --git a/static/img/arrow-up-small.png b/swh/web/static/img/arrow-up-small.png similarity index 100% rename from static/img/arrow-up-small.png rename to swh/web/static/img/arrow-up-small.png diff --git a/static/img/icons/swh-logo-32x32.png b/swh/web/static/img/icons/swh-logo-32x32.png similarity index 100% rename from static/img/icons/swh-logo-32x32.png rename to swh/web/static/img/icons/swh-logo-32x32.png diff --git a/static/img/icons/swh-logo-archive-180x180.png b/swh/web/static/img/icons/swh-logo-archive-180x180.png similarity index 100% rename from static/img/icons/swh-logo-archive-180x180.png rename to swh/web/static/img/icons/swh-logo-archive-180x180.png diff --git a/static/img/icons/swh-logo-archive-192x192.png b/swh/web/static/img/icons/swh-logo-archive-192x192.png similarity index 100% rename from static/img/icons/swh-logo-archive-192x192.png rename to swh/web/static/img/icons/swh-logo-archive-192x192.png diff --git a/static/img/icons/swh-logo-archive-270x270.png b/swh/web/static/img/icons/swh-logo-archive-270x270.png similarity index 100% rename from static/img/icons/swh-logo-archive-270x270.png rename to swh/web/static/img/icons/swh-logo-archive-270x270.png diff --git a/static/img/logos/arch.png b/swh/web/static/img/logos/arch.png similarity index 100% rename from static/img/logos/arch.png rename to swh/web/static/img/logos/arch.png diff --git a/static/img/logos/aur.png b/swh/web/static/img/logos/aur.png similarity index 100% rename from static/img/logos/aur.png rename to swh/web/static/img/logos/aur.png diff --git a/static/img/logos/bioconductor.png b/swh/web/static/img/logos/bioconductor.png similarity index 100% rename from static/img/logos/bioconductor.png rename to swh/web/static/img/logos/bioconductor.png diff --git a/static/img/logos/bitbucket-hg.png b/swh/web/static/img/logos/bitbucket-hg.png similarity index 100% rename from static/img/logos/bitbucket-hg.png rename to swh/web/static/img/logos/bitbucket-hg.png diff --git a/static/img/logos/bitbucket.png b/swh/web/static/img/logos/bitbucket.png similarity index 100% rename from static/img/logos/bitbucket.png rename to swh/web/static/img/logos/bitbucket.png diff --git a/static/img/logos/bower.png b/swh/web/static/img/logos/bower.png similarity index 100% rename from static/img/logos/bower.png rename to swh/web/static/img/logos/bower.png diff --git a/static/img/logos/cgit.png b/swh/web/static/img/logos/cgit.png similarity index 100% rename from static/img/logos/cgit.png rename to swh/web/static/img/logos/cgit.png diff --git a/static/img/logos/conda.png b/swh/web/static/img/logos/conda.png similarity index 100% rename from static/img/logos/conda.png rename to swh/web/static/img/logos/conda.png diff --git a/static/img/logos/cpan.png b/swh/web/static/img/logos/cpan.png similarity index 100% rename from static/img/logos/cpan.png rename to swh/web/static/img/logos/cpan.png diff --git a/static/img/logos/cran.png b/swh/web/static/img/logos/cran.png similarity index 100% rename from static/img/logos/cran.png rename to swh/web/static/img/logos/cran.png diff --git a/static/img/logos/crates.png b/swh/web/static/img/logos/crates.png similarity index 100% rename from static/img/logos/crates.png rename to swh/web/static/img/logos/crates.png diff --git a/static/img/logos/debian.png b/swh/web/static/img/logos/debian.png similarity index 100% rename from static/img/logos/debian.png rename to swh/web/static/img/logos/debian.png diff --git a/static/img/logos/dlang.png b/swh/web/static/img/logos/dlang.png similarity index 100% rename from static/img/logos/dlang.png rename to swh/web/static/img/logos/dlang.png diff --git a/static/img/logos/elife.png b/swh/web/static/img/logos/elife.png similarity index 100% rename from static/img/logos/elife.png rename to swh/web/static/img/logos/elife.png diff --git a/static/img/logos/gitea.png b/swh/web/static/img/logos/gitea.png similarity index 100% rename from static/img/logos/gitea.png rename to swh/web/static/img/logos/gitea.png diff --git a/static/img/logos/github.png b/swh/web/static/img/logos/github.png similarity index 100% rename from static/img/logos/github.png rename to swh/web/static/img/logos/github.png diff --git a/static/img/logos/gitlab.png b/swh/web/static/img/logos/gitlab.png similarity index 100% rename from static/img/logos/gitlab.png rename to swh/web/static/img/logos/gitlab.png diff --git a/static/img/logos/gitorious.png b/swh/web/static/img/logos/gitorious.png similarity index 100% rename from static/img/logos/gitorious.png rename to swh/web/static/img/logos/gitorious.png diff --git a/static/img/logos/gitweb.png b/swh/web/static/img/logos/gitweb.png similarity index 100% rename from static/img/logos/gitweb.png rename to swh/web/static/img/logos/gitweb.png diff --git a/static/img/logos/gnu.png b/swh/web/static/img/logos/gnu.png similarity index 100% rename from static/img/logos/gnu.png rename to swh/web/static/img/logos/gnu.png diff --git a/static/img/logos/gogs.png b/swh/web/static/img/logos/gogs.png similarity index 100% rename from static/img/logos/gogs.png rename to swh/web/static/img/logos/gogs.png diff --git a/static/img/logos/golang.png b/swh/web/static/img/logos/golang.png similarity index 100% rename from static/img/logos/golang.png rename to swh/web/static/img/logos/golang.png diff --git a/static/img/logos/googlecode.png b/swh/web/static/img/logos/googlecode.png similarity index 100% rename from static/img/logos/googlecode.png rename to swh/web/static/img/logos/googlecode.png diff --git a/static/img/logos/guix.png b/swh/web/static/img/logos/guix.png similarity index 100% rename from static/img/logos/guix.png rename to swh/web/static/img/logos/guix.png diff --git a/static/img/logos/hackage.png b/swh/web/static/img/logos/hackage.png similarity index 100% rename from static/img/logos/hackage.png rename to swh/web/static/img/logos/hackage.png diff --git a/static/img/logos/hal.png b/swh/web/static/img/logos/hal.png similarity index 100% rename from static/img/logos/hal.png rename to swh/web/static/img/logos/hal.png diff --git a/static/img/logos/heptapod.png b/swh/web/static/img/logos/heptapod.png similarity index 100% rename from static/img/logos/heptapod.png rename to swh/web/static/img/logos/heptapod.png diff --git a/static/img/logos/inria.jpg b/swh/web/static/img/logos/inria.jpg similarity index 100% rename from static/img/logos/inria.jpg rename to swh/web/static/img/logos/inria.jpg diff --git a/static/img/logos/ipol.png b/swh/web/static/img/logos/ipol.png similarity index 100% rename from static/img/logos/ipol.png rename to swh/web/static/img/logos/ipol.png diff --git a/static/img/logos/launchpad.png b/swh/web/static/img/logos/launchpad.png similarity index 100% rename from static/img/logos/launchpad.png rename to swh/web/static/img/logos/launchpad.png diff --git a/static/img/logos/maven.png b/swh/web/static/img/logos/maven.png similarity index 100% rename from static/img/logos/maven.png rename to swh/web/static/img/logos/maven.png diff --git a/static/img/logos/nixos.png b/swh/web/static/img/logos/nixos.png similarity index 100% rename from static/img/logos/nixos.png rename to swh/web/static/img/logos/nixos.png diff --git a/static/img/logos/npm.png b/swh/web/static/img/logos/npm.png similarity index 100% rename from static/img/logos/npm.png rename to swh/web/static/img/logos/npm.png diff --git a/static/img/logos/opam.png b/swh/web/static/img/logos/opam.png similarity index 100% rename from static/img/logos/opam.png rename to swh/web/static/img/logos/opam.png diff --git a/static/img/logos/packagist.png b/swh/web/static/img/logos/packagist.png similarity index 100% rename from static/img/logos/packagist.png rename to swh/web/static/img/logos/packagist.png diff --git a/static/img/logos/pagure.png b/swh/web/static/img/logos/pagure.png similarity index 100% rename from static/img/logos/pagure.png rename to swh/web/static/img/logos/pagure.png diff --git a/static/img/logos/phabricator.png b/swh/web/static/img/logos/phabricator.png similarity index 100% rename from static/img/logos/phabricator.png rename to swh/web/static/img/logos/phabricator.png diff --git a/static/img/logos/pubdev.png b/swh/web/static/img/logos/pubdev.png similarity index 100% rename from static/img/logos/pubdev.png rename to swh/web/static/img/logos/pubdev.png diff --git a/static/img/logos/puppet.png b/swh/web/static/img/logos/puppet.png similarity index 100% rename from static/img/logos/puppet.png rename to swh/web/static/img/logos/puppet.png diff --git a/static/img/logos/pypi.png b/swh/web/static/img/logos/pypi.png similarity index 100% rename from static/img/logos/pypi.png rename to swh/web/static/img/logos/pypi.png diff --git a/static/img/logos/rpm.png b/swh/web/static/img/logos/rpm.png similarity index 100% rename from static/img/logos/rpm.png rename to swh/web/static/img/logos/rpm.png diff --git a/static/img/logos/rubygems.png b/swh/web/static/img/logos/rubygems.png similarity index 100% rename from static/img/logos/rubygems.png rename to swh/web/static/img/logos/rubygems.png diff --git a/static/img/logos/sourceforge.png b/swh/web/static/img/logos/sourceforge.png similarity index 100% rename from static/img/logos/sourceforge.png rename to swh/web/static/img/logos/sourceforge.png diff --git a/static/img/logos/zenodo.png b/swh/web/static/img/logos/zenodo.png similarity index 100% rename from static/img/logos/zenodo.png rename to swh/web/static/img/logos/zenodo.png diff --git a/static/img/swh-donor.png b/swh/web/static/img/swh-donor.png similarity index 100% rename from static/img/swh-donor.png rename to swh/web/static/img/swh-donor.png diff --git a/static/img/swh-logo-white.svg b/swh/web/static/img/swh-logo-white.svg similarity index 100% rename from static/img/swh-logo-white.svg rename to swh/web/static/img/swh-logo-white.svg diff --git a/static/img/swh-logo.png b/swh/web/static/img/swh-logo.png similarity index 100% rename from static/img/swh-logo.png rename to swh/web/static/img/swh-logo.png diff --git a/static/img/swh-logo.svg b/swh/web/static/img/swh-logo.svg similarity index 100% rename from static/img/swh-logo.svg rename to swh/web/static/img/swh-logo.svg diff --git a/static/img/swh-mirror.png b/swh/web/static/img/swh-mirror.png similarity index 100% rename from static/img/swh-mirror.png rename to swh/web/static/img/swh-mirror.png diff --git a/static/img/swh-spinner-small.gif b/swh/web/static/img/swh-spinner-small.gif similarity index 100% rename from static/img/swh-spinner-small.gif rename to swh/web/static/img/swh-spinner-small.gif diff --git a/static/img/swh-spinner.gif b/swh/web/static/img/swh-spinner.gif similarity index 100% rename from static/img/swh-spinner.gif rename to swh/web/static/img/swh-spinner.gif diff --git a/static/img/swh-vault.png b/swh/web/static/img/swh-vault.png similarity index 100% rename from static/img/swh-vault.png rename to swh/web/static/img/swh-vault.png diff --git a/static/json/highlightjs-languages.json b/swh/web/static/json/highlightjs-languages.json similarity index 100% rename from static/json/highlightjs-languages.json rename to swh/web/static/json/highlightjs-languages.json diff --git a/static/xml/swh-opensearch.xml b/swh/web/static/xml/swh-opensearch.xml similarity index 100% rename from static/xml/swh-opensearch.xml rename to swh/web/static/xml/swh-opensearch.xml -- GitLab