I have one concern: if we introduce these packaging files and then the distro wants to modify them because we did it suboptimally now they first have to maintain a patch to remove our packaging and then introduce their packaging meaning extra work for the distro maintainer. This might also interfere with cherry-picking security fixes in case the commit that does a security fix also changes these guix.scm files, now the distro maintaner cannot simply cherry-pick it because it would conflict with their changes.
Joonas Denis 'GNUtoo' Carikli: > The guix.scm file can be used to test the build in various > configurations in a reproducible way. > > Once you have guix installed, and up to date, you can use > it with the following command: > $ guix build --file=guix.scm > > The filename (guix.scm) is a convention that is also used in > other packages to also do build tests in various configurations. > > For more background on the use of guix.scm see the Guix days 2020 > presentation about it[1]. > > [1]https://xana.lepiller.eu/guix-days-2020/guix-days-2020-efraim-flashner-build-it-with-guix.webm > > Signed-off-by: Denis 'GNUtoo' Carikli <gnu...@cyberdimension.org> > --- > guix.scm | 194 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 194 insertions(+) > create mode 100644 guix.scm > > diff --git a/guix.scm b/guix.scm > new file mode 100644 > index 0000000..26210f5 > --- /dev/null > +++ b/guix.scm > @@ -0,0 +1,194 @@ > +;;; Copyright © 2020 Denis Carikli <gnu...@cyberdimension.org> > +;;; > +;;; This file is not part of GNU Guix (yet). > +;;; > +;;; Part of this file might be moved to Guix when a new release of > +;;; libsamsung-ipc is made. This will probably not happen before > +;;; the API and ABI changes are complete, ie when the ipc_client > +;;; has been passed to all the exported functions when that makes > +;;; sense. > +;;; > +;;; This file 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 file 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 GNU Guix. If not, see <http://www.gnu.org/licenses/>. > + > +(use-modules > + (ice-9 popen) > + (ice-9 rdelim) > + (sxml ssax input-parse) > + ((guix licenses) #:prefix license:) > + (guix build-system android-ndk) > + (guix build-system gnu) > + (guix gexp) > + (guix git-download) > + (guix packages) > + (gnu packages android) > + (gnu packages autotools) > + (gnu packages disk) > + (gnu packages linux) > + (gnu packages llvm) > + (gnu packages pkg-config) > + (gnu packages python) > + (gnu packages python-xyz) > + (gnu packages tls)) > + > +(define %strict-cflags "CFLAGS=-Werror -W -Wall -Wunused -Wunused-function") > + > +(define %commit > + (let* ((port (open-input-pipe > + "git --no-pager log --oneline HEAD -1 --format='%H'")) > + (str (read-line port))) > + (close-pipe port) > + str)) > + > +(define %local-source > + (local-file > + (dirname (current-filename)) #:recursive? #t)) > + > +(define-public libsamsung-ipc > + (package > + (name "libsamsung-ipc") > + (version (git-version "0.0" "HEAD" %commit)) > + (source %local-source) > + (build-system gnu-build-system) > + (native-inputs > + `(("autoreconf" ,autoconf) > + ("aclocal" ,automake) > + ("ddrescue", ddrescue) > + ("libtool" ,libtool) > + ("pkgconfig" ,pkg-config) > + ("python" ,python) > + ("python-sh" ,python-sh))) > + (inputs > + `(("openssl" ,openssl))) > + (arguments > + `(#:phases > + (modify-phases %standard-phases > + (add-before 'build 'patch-python > + (lambda _ > + (substitute* (find-files "tools" ".*\\.py$") > + (("/usr/bin/env python") (which "python3"))) > + #t))))) > + (synopsis "libsamsung-ipc is a free software implementation of the > Samsung IPC modem protocol") > + (description > + "libsamsung-ipc is a free software implementation of the Samsung IPC > modem protocol, > +found in many Samsung smartphones and tablets.") > + (home-page "https://www.replicant.us") > + (license license:gpl2+))) > + > +(define-public libsamsung-ipc-gcc-android > + (package > + (inherit libsamsung-ipc) > + (name "libsamsung-ipc-gcc-android") > + (build-system android-ndk-build-system) > + (inputs > + `(("android-libutils" ,android-libutils) > + ("libcrypto" ,openssl))) > + (native-inputs '()) > + (arguments > + `(#:phases > + (modify-phases %standard-phases > + (delete 'bootstrap) > + (add-before 'build 'patch-host > + (lambda _ > + (substitute* "Android.mk" > + (("BUILD_SHARED_LIBRARY") "BUILD_HOST_SHARED_LIBRARY") > + (("BUILD_STATIC_LIBRARY") "BUILD_HOST_STATIC_LIBRARY") > + (("BUILD_STATIC_EXECUTABLE") "BUILD_HOST_STATIC_EXECUTABLE")) > + #t))) > + #:make-flags (list ,%strict-cflags))))) > + > +(define-public libsamsung-ipc-gcc-autotools > + (package > + (inherit libsamsung-ipc) > + (name "libsamsung-ipc-gcc-autotools") > + (arguments > + `(#:phases > + (modify-phases %standard-phases > + (add-before 'build 'patch-python > + (lambda _ > + (substitute* (find-files "tools" > ".*\\.py$") > + (("/usr/bin/env python") > (which "python3"))) > + #t))) > + #:make-flags (list ,%strict-cflags))))) > + > +(define-public libsamsung-ipc-clang-autotools > + (package > + (inherit libsamsung-ipc) > + (name "libsamsung-ipc-gcc-autotools") > + (native-inputs > + `(("autoreconf" ,autoconf) > + ("aclocal" ,automake) > + ("ddrescue", ddrescue) > + ("libtool" ,libtool) > + ("pkgconfig" ,pkg-config) > + ("python" ,python) > + ("python-sh" ,python-sh) > + ("clang" ,clang-10))) > + (arguments > + `(#:phases > + (modify-phases %standard-phases > + (add-before 'build 'patch-python > + (lambda _ > + (substitute* (find-files "tools" ".*\\.py$") > + (("/usr/bin/env python") (which "python3"))) > + #t))) > + #:make-flags (list ,%strict-cflags))))) > + > +(define-public libsamsung-ipc-clang-android > + (package > + (inherit libsamsung-ipc) > + (name "libsamsung-ipc-clang-android") > + (build-system android-ndk-build-system) > + (inputs > + `(("android-libutils" ,android-libutils) > + ("libcrypto" ,openssl) > + ("clang" ,clang-10))) > + (native-inputs '()) > + (arguments > + `(#:phases > + (modify-phases %standard-phases > + (delete 'bootstrap) > + (add-before 'build 'patch-host > + (lambda _ > + (substitute* "Android.mk" > + (("BUILD_SHARED_LIBRARY") "BUILD_HOST_SHARED_LIBRARY") > + (("BUILD_STATIC_LIBRARY") "BUILD_HOST_STATIC_LIBRARY") > + (("BUILD_STATIC_EXECUTABLE") "BUILD_HOST_STATIC_EXECUTABLE")) > + #t)) > + (add-after 'patch-host 'prepare-build-environment > + (lambda* (#:key inputs #:allow-other-keys) > + (setenv "CC" "clang") > + #t))) > + #:make-flags (list ,%strict-cflags))))) > + > +;; Combinaisons: > +;; > +--------------------------------+----------+----------+--------------+--------------+ > +;; | Package name | Compiler | Compiler | Build system | > Comments | > +;; | | | flags | | > | > +;; > +--------------------------------+----------+----------+--------------+--------------+ > +;; | libsamsung-ipc | GCC | none | autotools | > Base package | > +;; > +--------------------------------+----------+----------+--------------+--------------+ > +;; | libsamsung-ipc-gcc-android | GCC | strict | Android.mk | > | > +;; > +--------------------------------+----------+----------+--------------+--------------+ > +;; | libsamsung-ipc-gcc-autotools | GCC | strict | autotools | > | > +;; > +--------------------------------+----------+----------+--------------+--------------+ > +;; | libsamsung-ipc-clang-android | clang | strict | Android.mk | > | > +;; > +--------------------------------+----------+----------+--------------+--------------+ > +;; | libsamsung-ipc-clang-autotools | clang | strict | autotools | > | > +;; > +--------------------------------+----------+----------+--------------+--------------+ > + > +(list libsamsung-ipc > + libsamsung-ipc-gcc-android > + libsamsung-ipc-gcc-autotools > + libsamsung-ipc-clang-android > + libsamsung-ipc-clang-autotools) > _______________________________________________ Replicant mailing list Replicant@osuosl.org https://lists.osuosl.org/mailman/listinfo/replicant