;; SPDX-License-Identifier: CC0-1.0 ;; Copyright (C) 2022 Wojtek Kosior ;; ;; Available under the terms of Creative Commons Zero v1.0 Universal. ;; This file is based on `hydrilla-guix/hydrilla.scm` from Hydrilla&Haketilo ;; repository at ../pydrilla. (use-modules (ice-9 rdelim) (ice-9 regex)) ;; We're mostly running from Makefile, so it's pretty safe to use `getcwd`. (define %source-dir (getcwd)) ;; The PKG-INFO file is generated when running `python3 -m build -s` or similar. ;; It is also automatically included in the source release tarballs. (define %website-version (if (access? "src/koszko_org_website.egg-info/PKG-INFO" R_OK) (let* ((port (open-input-file "src/koszko_org_website.egg-info/PKG-INFO")) (process-line (lambda (self-ref) (let ((match-result (string-match "^Version: (.*)" (read-line port)))) (if match-result (match:substring match-result 1) (self-ref self-ref)))))) (process-line process-line)) "unknown")) (define source-tarball-name (string-append "koszko_org_website-" %website-version ".tar.gz")) (use-modules (guix packages) (guix gexp) (guix build-system python) ((guix licenses) #:prefix license:) (gnu packages python-build) (gnu packages python-web) (gnu packages python-xyz) (gnu packages python-check)) (package (name "koszko-org-website") (version %website-version) (source ;; setuptools_scm makes it impossible to build directly from git ;; checkout. We instead build from source tarball generated under ./dist/. (local-file (string-append %source-dir "/dist/" source-tarball-name))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'replace-wsgi.py (lambda* (#:key inputs outputs #:allow-other-keys) ;; In the wsgi.py file, embed the PYTHONPATH containing both the ;; dependencies and the python modules of this package. This will ;; make them available at runtime. (let ((pythonpath (string-append (getenv "GUIX_PYTHONPATH") ":" (site-packages inputs outputs)))) (substitute* "wsgi.py" (("^from .* import .*" import-line) (string-append "# Make Guix-installed dependencies visible to Python.\n" "import sys\n" "sys.path.extend('" pythonpath "'.split(':'))\n" "\n" import-line)))))) (add-after 'install 'install-wsgi-script (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (share-dir (string-append out "/share/koszko-org-website"))) (mkdir-p share-dir) (copy-file "wsgi.py" (string-append share-dir "/wsgi.py")))))))) (propagated-inputs (list python-flask)) (native-inputs (list python-setuptools-scm python-babel python-pypa-build python-mypy)) (home-page "https://git.koszko.org/koszko-org-website") (synopsis "koszko.org website") (description "This is the packaging of the website at https://koszko.org.") (license (list license:cc0 license:cc-by3.0 (license:non-copyleft "file://LICENSES/LicenseRef-Yahoo-BSD-3.txt") (license:x11-style "file://LICENSES/LicenseRef-Normalize-CSS-MIT.txt") (license:fsdg-compatible "file://LICENSES/LicenseRef-no-facebook.txt"))))