From 14a2d15c2bdabd949a48f96938d8554ece5d3df2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Am=C3=A9lia=20P=2E=20H=2E=20Coutard?= Date: Wed, 6 Mar 2024 13:22:24 +0100 Subject: [PATCH] =?utf8?q?Ajout=20d'Openseeface.=20=C3=80=20faire:=20r?= =?utf8?q?=C3=A9ellement=20packager=20onnxruntime?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- README | 4 + amy/packages/openseeface.scm | 165 +++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+) create mode 100644 amy/packages/openseeface.scm diff --git a/README b/README index 5ec3078..1f65268 100644 --- a/README +++ b/README @@ -4,6 +4,10 @@ Il est disponible sur le site https://www.ameliathe1st.gay. Projets: - Voyage Au Centre Des Fichiers: Un projet de μ-noyau, pour un système d'exploitation inspiré de Plan 9 et de l'ITS. +Projets non-personels: + - Onnxruntime + - OpenSeeFace + Ajoutez le à votre liste de canaux ainsi: ``` (channel diff --git a/amy/packages/openseeface.scm b/amy/packages/openseeface.scm new file mode 100644 index 0000000..5ec8609 --- /dev/null +++ b/amy/packages/openseeface.scm @@ -0,0 +1,165 @@ +; Copyright 2023 Amélia COUTARD. +; +; This file from the guix channel amy is free software: you can redistribute it and/or modify it +; under the terms of the GNU General Public License as published by the Free Software Foundation, +; either version 3 of the License, or (at your option) any later version. +; +; This channel is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +; PURPOSE. See the GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License along with this channel. If +; not, see . + +(define-module (amy packages openseeface) + #:use-module (gnu packages cmake) + #:use-module (gnu packages commencement) + #:use-module (gnu packages compression) + #:use-module (gnu packages elf) + #:use-module (gnu packages gcc) + #:use-module (gnu packages image-processing) + #:use-module (gnu packages protobuf) + #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages serialization) + #:use-module (gnu packages version-control) + #:use-module (guix) + #:use-module (guix build-system copy) + #:use-module (guix git-download) + #:use-module ((guix licenses) + #:select (bsd-2 expat)) + #:export (openseeface)) + +;; (define onnxruntime +;; (package +;; (name "onnxruntime") +;; (version "1.17.1") +;; (source +;; (origin +;; (method git-fetch) +;; (uri (git-reference +;; (url "https://github.com/microsoft/onnxruntime") +;; (commit (string-append "v" version)) +;; (recursive? #t))) +;; (file-name (git-file-name name version)) +;; (sha256 +;; (base32 "02fwm3m4kgd8a6v4f7v2al25nbnlphzqlxrx44gcxx3k1kcb96n6")))) +;; (build-system pyproject-build-system) +;; (inputs (list cmake git)) +;; (propagated-inputs (list python-coloredlogs +;; python-flatbuffers +;; python-numpy +;; python-packaging +;; python-protobuf +;; python-sympy)) +;; (arguments +;; (list +;; #:phases #~(modify-phases %standard-phases +;; (add-after 'unpack 'cmake-version +;; (lambda* (#:key #:allow-other-keys) +;; (substitute* "cmake/CMakeLists.txt" +;; (("3.26") +;; "3.25")))) +;; (replace 'build +;; (lambda* (#:key #:allow-other-keys) +;; (invoke "./build.sh" "--skip_submodule_sync")))))) +;; (synopsis "ML inferencing and training accelerator") +;; (description +;; "ONNX Runtime is a cross-platform inference and training machine-learning accelerator") +;; (home-page "https://onnxruntime.ai") +;; (license expat))) + +;; Downloading builds because it's a ***pain*** to build. +(define onnxruntime + (package + (name "onnxruntime") + (version "1.17.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://files.pythonhosted.org/packages/3d/85/db9e2ccef45f1670013495084bf74db7b24e2edfd3d7be92211eb968e369/onnxruntime-" version + "-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl")) + (sha256 + (base32 "1mxhqnppipav5v90cip55gs9wc2dxc45giqqdx7gav067ayd5g7b")) + (file-name (string-append "onnxruntime-built-v" version ".zip")))) + (inputs (list `(,gcc "lib") + gcc-toolchain + patchelf + python + unzip + zlib)) + (build-system copy-build-system) + (arguments + (list + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'python-to-python3 + (lambda* (#:key #:allow-other-keys) + (substitute* "quantization/calibrate.py" + (("#!/usr/bin/env python") + "#!/usr/bin/env python3")))) + (add-before 'install 'patch-runpath + (lambda* (#:key #:allow-other-keys) + (invoke "patchelf" "--set-rpath" + (string-join (list (string-append #$gcc:lib "/lib") + (string-append #$gcc-toolchain + "/lib")) ":") + "capi/libonnxruntime_providers_shared.so" + "capi/onnxruntime_pybind11_state.cpython-310-x86_64-linux-gnu.so")))) + #:install-plan ''(("../onnxruntime" "lib/")))) + (synopsis "ML inferencing and training accelerator") + (description + "ONNX Runtime is a cross-platform inference and training machine-learning accelerator") + (home-page "https://onnxruntime.ai") + (license expat))) + +(define openseeface + (package + (name "openseeface") + (version "1.20.4") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/emilianavt/OpenSeeFace/archive/refs/tags/v" + version ".tar.gz")) + (sha256 + (base32 "0jblygfzk36k1328ymglir4947ba1pmcg77ckwvixvjiji82lj2h")))) + (build-system copy-build-system) + (inputs (list onnxruntime + opencv + python + python-flatbuffers + python-numpy + python-pillow)) + (arguments + (list + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'fix-py-shebang + (lambda* (#:key #:allow-other-keys) + (substitute* "facetracker.py" + (("import copy") + "#!/usr/bin/python3\nimport copy")))) + (add-after 'install 'wrap + (lambda* (#:key #:allow-other-keys) + (invoke "chmod" "+x" + (string-append #$output "/bin/facetracker.py")) + (wrap-program (string-append #$output + "/bin/facetracker.py") + `("PYTHONPATH" = + (,(getenv "GUIX_PYTHONPATH") ,(string-append #$output + "/lib/openseeface") ,(string-append #$onnxruntime "/lib"))))))) + #:install-plan ''(("facetracker.py" "bin/") + ("models" "lib/openseeface/") + ("input_reader.py" "lib/openseeface/") + ("escapi.py" "lib/openseeface/") + ("dshowcapture.py" "lib/openseeface/") + ("remedian.py" "lib/openseeface/") + ("retinaface.py" "lib/openseeface/") + ("similaritytransform.py" "lib/openseeface/") + ("tracker.py" "lib/openseeface/")))) + (synopsis "Realtime face tracking") + (description + "OpenSeeFace is a program for realtime face and facial landmark tracking on the CPU") + (home-page "https://github.com/emilianavt/OpenSeeFace") + (license bsd-2))) -- 2.47.0