anastasis-gtk

Demonstrator GUI for Anastasis
Log | Files | Refs | README | LICENSE

commit 3ceca6171d3cf482382f4aae74070954348cf374
parent 84c27329fcb46b65505949f60b63fa88140095e4
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Thu, 23 Apr 2026 15:38:45 +0200

build: Migrate to meson

Diffstat:
M.gitignore | 2--
AMakefile.in | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Mbootstrap | 8+-------
Aconfigure | 255+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontrib/meson.build | 47+++++++++++++++++++++++++++++++++++++++++++++++
Adoc/meson.build | 2++
Aflake.lock | 1654+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aflake.nix | 135+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ameson.build | 307+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ameson.options | 5+++++
Ascripts/doxygen.meson.sh | 18++++++++++++++++++
Msrc/anastasis/anastasis-gtk_action.h | 1-
Msrc/anastasis/anastasis-gtk_helper.h | 1-
Asrc/anastasis/meson.build | 98+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/include/meson.build | 3+++
Asrc/meson.build | 5+++++
Asrc/util/meson.build | 25+++++++++++++++++++++++++
17 files changed, 2604 insertions(+), 11 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -12,7 +12,6 @@ .libs/ .svn/ Makefile -Makefile.in aclocal.m4 autom4te.cache/ compile @@ -20,7 +19,6 @@ config.guess config.log config.status config.sub -configure depcomp install-sh libtool diff --git a/Makefile.in b/Makefile.in @@ -0,0 +1,49 @@ +# Build the program in the local tree +.PHONY: all +all: + $(NINJA) -C $(mesonbuilddir) + +# Install the program +.PHONY: install +install: all + $(MESON) install -C $(mesonbuilddir) + +# Remove files created during 'all' +.PHONY: clean +clean: + $(NINJA) -C $(mesonbuilddir) -t clean + +# Remove files created during 'install' +.PHONY: uninstall +uninstall: + $(NINJA) uninstall -C $(mesonbuilddir) + +# Make tarball +.PHONY: dist +dist: + $(MESON) dist -C $(mesonbuilddir) --no-tests --formats gztar + +# Make doxygen +.PHONY: doxygen +doxygen: + $(NINJA) -C $(mesonbuilddir) doxygen + +# Run tests +.PHONY: check +check: + $(MESON) test -C $(mesonbuilddir) + +.PHONY: installcheck +installcheck: + $(MESON) test -C $(mesonbuilddir) --suite=installcheck + +.PHONY: integrationtests +integrationtests: + $(MESON) test -C $(mesonbuilddir) --suite=integrationtests + +format: + $(MESON) fmt -i -r . + #find ./src -name "*.[h,c]" | uncrustify -l c -c contrib/conf/uncrustify.cfg -F - --replace --no-backup + +Makefile: Makefile.in + ./config.status diff --git a/bootstrap b/bootstrap @@ -15,10 +15,4 @@ existence() command -v "$1" >/dev/null 2>&1 } -if existence libtool || existence libtoolize || existence glibtoolize; then - autoreconf -if - . "contrib/pogen.sh" -else - echo "*** No libtoolize (libtool) or libtool found, please install it ***" >&2; - exit 1 -fi +. "contrib/pogen.sh" diff --git a/configure b/configure @@ -0,0 +1,255 @@ +#!/bin/sh + +pkg_name="anastasis" +pkg_default_features="" +pkg_optional_features="coverage logging only-doc install-rpath" +pkg_optional_dependencies="" + +# DO NOT EDIT BELOW THIS LINE +standard_dirs="prefix exec_prefix bindir sbindir libexecdir sysconfdir sharedstatedir localstatedir runstatedir libdir includedir oldincludedir datarootdir datadir infodir localedir mandir docdir htmldir dvidir pdfdir psdir srcdir mesonbuilddir" +standard_utils="AR AS BISON CC CXX CPP FLEX INSTALL LD LDCONFIG LEX MAKE MAKEINFO RANLIB TEXI2DVI YACC CHGRP CHMOD CHOWN MKNOD RM NINJA MESON" +standard_flags="ARFLAGS BISONFLAGS CFLAGS CXXFLAGS CPPFLAGS FLEXFLAGS INSTALLFLAGS LDFLAGS LDCONFIGFLAGS LFLAGS MAKEFLAGS MAKEINFOFLAGS RANLIBFLAGS TEXI2DVIFLAGS YACCFLAGS CHGRPFLAGS CHMODFLAGS CHOWNFLAGS MKNODFLAGS" +standard_vars="INSTALL_DATA INSTALL_PROGRAM INSTALL_SCRIPT" +generated_comment="# This file was generated by configure. DO NOT edit it directly." + +# Save arguments +cat > config.status <<EOF +#!/bin/sh +$generated_comment +$0 $* +EOF +chmod 755 config.status + +# Parse arguments +oldifs="$IFS" +while [ "$#" -gt "0" ]; do + arg="$1" + shift + argsave="$@" + + IFS="=" + set -- $arg + IFS="$oldifs" + arg="$1" + shift + argparam="$@" + + case "$arg" in + --help|-h) + cat <<-EOF + Usage: $0 [options...] + General options: + + <variable>=<value> Overrides default utils and flags, e.g. CC=gcc + EOF + echo "" + echo "Directory variables:" + for sdir in $standard_dirs; do + echo "--$sdir=<directory>" + done + echo "" + echo "Options specific to $pkg_name:" + for feat in $pkg_optional_features; do + echo "--enable-$feat[=arg]" + done + for feat in $pkg_default_features; do + echo "--disable-$feat" + done + for dep in $pkg_optional_dependencies; do + echo "--with-$dep" + done + + echo + echo Other options will be ignored. Please see the README for additional information. + exit 0 + ;; + --enable-*) + for feat in $pkg_optional_features $pkg_default_features; do + ft=$(echo $feat | tr - _) + if [ "--enable-$feat" = "$arg" ] && [ -z "$argparam" ]; then + eval "enable_$ft=true" + elif [ "--enable-$feat" = "$arg" ]; then + if [ "$argparam" = "yes" ]; then + eval "enable_$ft=\"true\"" + else + eval "enable_$ft=\"$argparam\"" + fi + fi + done + ;; + --disable-*) + argsave="--enable-${arg#--disable-}=false $argsave" + ;; + --with-*) + for dep in $pkg_optional_dependencies; do + if [ "--with-$dep" = "$arg" ] && [ -z "$argparam" ]; then + eval "with_$dep=yes" + elif [ "--with-$dep" = "$arg" ]; then + eval "with_$dep=\"$argparam\"" + fi + done + ;; + --without-*) + argsave="--with-${arg#--without-}=no $argsave" + ;; + --*) + for dir in $standard_dirs; do + [ "--$dir" = "$arg" ] && eval "var_$dir=\"$argparam\"" + done + ;; + *) + for flag in $standard_utils $standard_flags standard_vars; do + [ "$flag" = "$arg" ] && eval "$flag=\"$argparam\"" + done + ;; + esac + + set -- $argsave +done + +# Set default values +for util in $standard_utils; do + case "$util" in + CPP) eval "$util=\"\${${util}:-\\\$(CC) -E}\"" ;; + CXX) eval "$util=\"\${${util}:-g++}\"" ;; + RM) eval "$util=\"\${${util}:-rm -f}\"" ;; + MESON) eval "$util=\"\${${util}:-meson}\"" ;; + NINJA) eval "$util=\"\${${util}:-ninja}\"" ;; + *) eval "$util=\"\${${util}:-${util}}\"" ;; + esac +done +for feat in $pkg_optional_features; do + ft=$(echo $feat | tr - _) + eval "enable_$ft=\${enable_$ft:-false}" +done +for feat in $pkg_default_features; do + eval "enable_$feat=\${enable_$feat:-true}" +done +for feat in $pkg_optional_dependencies; do + eval "with_$feat=\${with_$feat:-no}" +done + +# Find source files +if [ -z "$var_srcdir" ]; then + [ -f ../Makefile.in ] && var_srcdir=.. + [ -f ./Makefile.in ] && var_srcdir=. +fi +if [ -z "$var_srcdir" ]; then + echo "Source files not found. Please specify a directory using --srcdir=..." >&2 + exit 1 +fi + +# Write Makefile +cat > Makefile <<EOF +$generated_comment +SHELL = /bin/sh +VPATH = ${var_srcdir} + +mesonbuilddir = ${var_mesonbuilddir:-build} +srcdir = ${var_srcdir} +prefix = ${var_prefix:-/usr/local} +exec_prefix = ${var_exec_prefix:-\$(prefix)} +bindir = ${var_bindir:-\$(exec_prefix)/bin} +sbindir = ${var_sbindir:-\$(exec_prefix)/sbin} +libexecdir = ${var_libexecdir:-\$(exec_prefix)/libexec} +datarootdir = ${var_datarootdir:-\$(prefix)/share} +datadir = ${var_datadir:-\$(datarootdir)} +sysconfdir = ${var_sysconfdir:-\$(prefix)/etc} +sharedstatedir = ${var_sharedstatedir:-\$(prefix)/com} +localstatedir = ${var_localstatedir:-\$(prefix)/var} +runstatedir = ${var_runstatedir:-\$(localstatedir)/run} +includedir = ${var_includedir:-\$(prefix)/include} +oldincludedir = ${var_oldincludedir:-/usr/include} +docdir = ${var_docdir:-\$(datarootdir)/doc/"$pkg_name"} +infodir = ${var_infodir:-\$(datarootdir)/info} +htmldir = ${var_htmldir:-\$(docdir)} +dvidir = ${var_dvidir:-\$(docdir)} +pdfdir = ${var_pdfdir:-\$(docdir)} +psdir = ${var_psdir:-\$(docdir)} +libdir = ${var_libdir:-\$(exec_prefix)/lib} +lispdir = ${var_lispdir:-\$(datarootdir)/emacs/site-lisp} +localedir = ${var_localedir:-\$(datarootdir)/locale} +mandir = ${var_mandir:-\$(datarootdir)/man} +manext = .1 +EOF + +if [ -d ${var_mesonbuilddir:-build} ]; then + echo "${var_mesonbuilddir:-build} already exists, deleting with" + $RM -r ${var_mesonbuilddir:-build} || exit 1 +fi + +for var in $standard_utils $standard_flags $standard_vars; do + eval "echo \"${var} = \$${var}\" >> Makefile" +done +echo >> Makefile + +mesonfeatopts="" +for feat in $pkg_optional_features $pkg_default_features; do + ft=$(echo $feat | tr - _) + eval "echo \"enable_$ft=\${enable_$ft}\" >> Makefile" + if [ "coverage" = $feat ]; then + mfeat="b_$feat" + else + mfeat=$feat + fi + eval "mesonfeatopts=\"$mesonfeatopts -D$mfeat=\${enable_$ft}\"" +done +for dep in $pkg_optional_dependencies; do + eval "echo \"with_$dep=\${with_$dep}\" >> Makefile" +done +echo >> Makefile + +cat "${var_srcdir}/Makefile.in" >> Makefile + +# Create default targets, if not already present +default_target() { + grep "^$1:" Makefile >/dev/null && return + echo ".PHONY: $1" >> Makefile + echo "$1: $2" >> Makefile + cat >> Makefile + echo >> Makefile +} + +#default_target Makefile <<EOF +# ./config.status +#EOF +for format in html dvi pdf ps; do + default_target "$format" </dev/null + default_target "install-$format" "$format" </dev/null +done +default_target check </dev/null +default_target mostlyclean clean </dev/null +default_target distclean clean <<EOF + \$(RM) Makefile config.status +EOF +default_target maintainer-clean distclean </dev/null +default_target install-strip <<EOF + \$(MAKE) INSTALL_PROGRAM='\$(INSTALL_PROGRAM) -s' \\ + INSTALL_SCRIPT='\$(INSTALL_SCRIPT)' install +EOF + +mesondiropts="" +for dr in $standard_dirs; do + if [ $dr = "srcdir" ]; then + continue + fi + if [ $dr = "mesonbuilddir" ]; then + continue + fi + eval "vn=\${var_$dr}" + if [ ! -z $vn ]; then + eval "mesondiropts=\"$mesondiropts -D$dr=\${var_$dr}\"" + fi +done + +${MESON} setup \ + -Ddefault_library=shared \ + $mesondiropts \ + $mesonfeatopts \ + ${var_mesonbuilddir:-build} \ + ${var_srcdir} || exit 1 + +# Done +echo "Package $pkg_name configured successfully." +echo "Run 'make' to build and 'make install' to install the package" + diff --git a/contrib/meson.build b/contrib/meson.build @@ -0,0 +1,47 @@ +# This file is in the public domain + +install_data( + 'this_stays_private.glade', + 'anastasis_gtk_add_provider.glade', + 'anastasis_gtk_auth_add_email.glade', + 'anastasis_gtk_auth_add_iban.glade', + 'anastasis_gtk_auth_add_post.glade', + 'anastasis_gtk_auth_add_question.glade', + 'anastasis_gtk_auth_add_sms.glade', + 'anastasis_gtk_auth_add_totp.glade', + 'anastasis_gtk_auth_add_video.glade', + 'anastasis_gtk_challenge_code.glade', + 'anastasis_gtk_challenge_iban.glade', + 'anastasis_gtk_challenge_question.glade', + 'anastasis_gtk_challenge_template.glade', + 'anastasis_gtk_challenge_totp.glade', + 'anastasis_gtk_deny_singlefactor.glade', + 'anastasis_gtk_edit_providers.glade', + 'anastasis_gtk_edit_policy.glade', + 'anastasis_gtk_main_window.glade', + 'anastasis_gtk_open_file_dialog.glade', + 'anastasis_gtk_open_secret_dialog.glade', + 'anastasis_gtk_policy_template.glade', + 'anastasis_gtk_save_file_dialog.glade', + 'anastasis_gtk_save_secret_dialog.glade', + 'anastasis_gtk_user_sure.glade', + 'anastasis_gtk_warn_multifactor.glade', + 'bandiera_stelle.png', + 'checkmark.svgz', + 'freeotp.png', + 'logo.png', + 'home_work_black_24dp.svg', + 'ngi_ledger.png', + 'noun_blindfold_3574196.svg', + 'outline_contact_support_black_24dp.png', + 'outline_email_black_24dp.png', + 'outline_home_work_black_24dp.png', + 'outline_iban_24dp.png', + 'outline_stay_current_portrait_black_24dp.png', + 'outline_totp_24dp.png', + 'outline_video_camera_front_black_24dp.png', + 'qr_dummy.png', + 'video_camera_front_black_24dp.svg', + install_dir: pkgdatadir) + + diff --git a/doc/meson.build b/doc/meson.build @@ -0,0 +1,2 @@ +# This file is in the public domain +install_man('anastasis-gtk.1') diff --git a/flake.lock b/flake.lock @@ -0,0 +1,1654 @@ +{ + "nodes": { + "anastasis": { + "inputs": { + "donau": "donau", + "exchange": "exchange_2", + "gnunet": "gnunet_4", + "merchant": "merchant", + "nixpkgs": "nixpkgs_16", + "systems": "systems_16" + }, + "locked": { + "lastModified": 1776947250, + "narHash": "sha256-+9oNyc19q7ZBva4E+g+wyx68ZRO6HeoXyhOTNRB3JMQ=", + "ref": "refs/heads/master", + "rev": "c55bf5de869065cafbd4b05edcd16980f7f1abae", + "revCount": 532, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/anastasis" + }, + "original": { + "rev": "c55bf5de869065cafbd4b05edcd16980f7f1abae", + "type": "git", + "url": "https://git.gnunet.org/anastasis" + } + }, + "donau": { + "inputs": { + "exchange": "exchange", + "gnunet": "gnunet_2", + "nixpkgs": "nixpkgs_4", + "systems": "systems_4" + }, + "locked": { + "lastModified": 1776068074, + "narHash": "sha256-/UG1yoOAak34+mZ/fTB8+/FMMEaj4enPn+IxOV8R/4A=", + "ref": "refs/heads/master", + "rev": "4f609168fe263891f134eff01f86288066acdd81", + "revCount": 1050, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/donau" + }, + "original": { + "rev": "4f609168fe263891f134eff01f86288066acdd81", + "type": "git", + "url": "https://git.gnunet.org/donau" + } + }, + "donau_2": { + "inputs": { + "exchange": "exchange_3", + "gnunet": "gnunet_6", + "nixpkgs": "nixpkgs_11", + "systems": "systems_11" + }, + "locked": { + "lastModified": 1776068074, + "narHash": "sha256-/UG1yoOAak34+mZ/fTB8+/FMMEaj4enPn+IxOV8R/4A=", + "ref": "refs/heads/master", + "rev": "4f609168fe263891f134eff01f86288066acdd81", + "revCount": 1050, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/donau" + }, + "original": { + "rev": "4f609168fe263891f134eff01f86288066acdd81", + "type": "git", + "url": "https://git.gnunet.org/donau" + } + }, + "donau_3": { + "inputs": { + "exchange": "exchange_5", + "gnunet": "gnunet_10", + "nixpkgs": "nixpkgs_20", + "systems": "systems_20" + }, + "locked": { + "lastModified": 1776068074, + "narHash": "sha256-/UG1yoOAak34+mZ/fTB8+/FMMEaj4enPn+IxOV8R/4A=", + "ref": "refs/heads/master", + "rev": "4f609168fe263891f134eff01f86288066acdd81", + "revCount": 1050, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/donau" + }, + "original": { + "rev": "4f609168fe263891f134eff01f86288066acdd81", + "type": "git", + "url": "https://git.gnunet.org/donau" + } + }, + "donau_4": { + "inputs": { + "exchange": "exchange_7", + "gnunet": "gnunet_14", + "nixpkgs": "nixpkgs_27", + "systems": "systems_27" + }, + "locked": { + "lastModified": 1776068074, + "narHash": "sha256-/UG1yoOAak34+mZ/fTB8+/FMMEaj4enPn+IxOV8R/4A=", + "ref": "refs/heads/master", + "rev": "4f609168fe263891f134eff01f86288066acdd81", + "revCount": 1050, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/donau" + }, + "original": { + "rev": "4f609168fe263891f134eff01f86288066acdd81", + "type": "git", + "url": "https://git.gnunet.org/donau" + } + }, + "exchange": { + "inputs": { + "gnunet": "gnunet", + "nixpkgs": "nixpkgs_2", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1776020637, + "narHash": "sha256-U/KHaAaE/JrlS3RYbRRiRRe0ur2JACkKysevCrzCXYY=", + "ref": "refs/heads/master", + "rev": "1b474b461597d11382e4e036520259a96f254e9b", + "revCount": 9931, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/exchange" + }, + "original": { + "rev": "1b474b461597d11382e4e036520259a96f254e9b", + "type": "git", + "url": "https://git.gnunet.org/exchange" + } + }, + "exchange_2": { + "inputs": { + "gnunet": "gnunet_3", + "nixpkgs": "nixpkgs_6", + "systems": "systems_6" + }, + "locked": { + "lastModified": 1776021477, + "narHash": "sha256-V6qYPCNgaalQi6tRkDZ+Per3PPifm1Ze2pShV6LGomg=", + "ref": "refs/heads/master", + "rev": "92da4e81006404494f6443781c8f55249e723847", + "revCount": 9932, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/exchange" + }, + "original": { + "rev": "92da4e81006404494f6443781c8f55249e723847", + "type": "git", + "url": "https://git.gnunet.org/exchange" + } + }, + "exchange_3": { + "inputs": { + "gnunet": "gnunet_5", + "nixpkgs": "nixpkgs_9", + "systems": "systems_9" + }, + "locked": { + "lastModified": 1776020637, + "narHash": "sha256-U/KHaAaE/JrlS3RYbRRiRRe0ur2JACkKysevCrzCXYY=", + "ref": "refs/heads/master", + "rev": "1b474b461597d11382e4e036520259a96f254e9b", + "revCount": 9931, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/exchange" + }, + "original": { + "rev": "1b474b461597d11382e4e036520259a96f254e9b", + "type": "git", + "url": "https://git.gnunet.org/exchange" + } + }, + "exchange_4": { + "inputs": { + "gnunet": "gnunet_7", + "nixpkgs": "nixpkgs_13", + "systems": "systems_13" + }, + "locked": { + "lastModified": 1776021477, + "narHash": "sha256-V6qYPCNgaalQi6tRkDZ+Per3PPifm1Ze2pShV6LGomg=", + "ref": "refs/heads/master", + "rev": "92da4e81006404494f6443781c8f55249e723847", + "revCount": 9932, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/exchange" + }, + "original": { + "rev": "92da4e81006404494f6443781c8f55249e723847", + "type": "git", + "url": "https://git.gnunet.org/exchange" + } + }, + "exchange_5": { + "inputs": { + "gnunet": "gnunet_9", + "nixpkgs": "nixpkgs_18", + "systems": "systems_18" + }, + "locked": { + "lastModified": 1776020637, + "narHash": "sha256-U/KHaAaE/JrlS3RYbRRiRRe0ur2JACkKysevCrzCXYY=", + "ref": "refs/heads/master", + "rev": "1b474b461597d11382e4e036520259a96f254e9b", + "revCount": 9931, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/exchange" + }, + "original": { + "rev": "1b474b461597d11382e4e036520259a96f254e9b", + "type": "git", + "url": "https://git.gnunet.org/exchange" + } + }, + "exchange_6": { + "inputs": { + "gnunet": "gnunet_11", + "nixpkgs": "nixpkgs_22", + "systems": "systems_22" + }, + "locked": { + "lastModified": 1776021477, + "narHash": "sha256-V6qYPCNgaalQi6tRkDZ+Per3PPifm1Ze2pShV6LGomg=", + "ref": "refs/heads/master", + "rev": "92da4e81006404494f6443781c8f55249e723847", + "revCount": 9932, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/exchange" + }, + "original": { + "rev": "92da4e81006404494f6443781c8f55249e723847", + "type": "git", + "url": "https://git.gnunet.org/exchange" + } + }, + "exchange_7": { + "inputs": { + "gnunet": "gnunet_13", + "nixpkgs": "nixpkgs_25", + "systems": "systems_25" + }, + "locked": { + "lastModified": 1776020637, + "narHash": "sha256-U/KHaAaE/JrlS3RYbRRiRRe0ur2JACkKysevCrzCXYY=", + "ref": "refs/heads/master", + "rev": "1b474b461597d11382e4e036520259a96f254e9b", + "revCount": 9931, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/exchange" + }, + "original": { + "rev": "1b474b461597d11382e4e036520259a96f254e9b", + "type": "git", + "url": "https://git.gnunet.org/exchange" + } + }, + "exchange_8": { + "inputs": { + "gnunet": "gnunet_15", + "nixpkgs": "nixpkgs_29", + "systems": "systems_29" + }, + "locked": { + "lastModified": 1776021477, + "narHash": "sha256-V6qYPCNgaalQi6tRkDZ+Per3PPifm1Ze2pShV6LGomg=", + "ref": "refs/heads/master", + "rev": "92da4e81006404494f6443781c8f55249e723847", + "revCount": 9932, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/exchange" + }, + "original": { + "rev": "92da4e81006404494f6443781c8f55249e723847", + "type": "git", + "url": "https://git.gnunet.org/exchange" + } + }, + "gnunet": { + "inputs": { + "nixpkgs": "nixpkgs", + "systems": "systems" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_10": { + "inputs": { + "nixpkgs": "nixpkgs_19", + "systems": "systems_19" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_11": { + "inputs": { + "nixpkgs": "nixpkgs_21", + "systems": "systems_21" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_12": { + "inputs": { + "nixpkgs": "nixpkgs_23", + "systems": "systems_23" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_13": { + "inputs": { + "nixpkgs": "nixpkgs_24", + "systems": "systems_24" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_14": { + "inputs": { + "nixpkgs": "nixpkgs_26", + "systems": "systems_26" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_15": { + "inputs": { + "nixpkgs": "nixpkgs_28", + "systems": "systems_28" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_16": { + "inputs": { + "nixpkgs": "nixpkgs_30", + "systems": "systems_30" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_2": { + "inputs": { + "nixpkgs": "nixpkgs_3", + "systems": "systems_3" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_3": { + "inputs": { + "nixpkgs": "nixpkgs_5", + "systems": "systems_5" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_4": { + "inputs": { + "nixpkgs": "nixpkgs_7", + "systems": "systems_7" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_5": { + "inputs": { + "nixpkgs": "nixpkgs_8", + "systems": "systems_8" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_6": { + "inputs": { + "nixpkgs": "nixpkgs_10", + "systems": "systems_10" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_7": { + "inputs": { + "nixpkgs": "nixpkgs_12", + "systems": "systems_12" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_8": { + "inputs": { + "nixpkgs": "nixpkgs_14", + "systems": "systems_14" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "gnunet_9": { + "inputs": { + "nixpkgs": "nixpkgs_17", + "systems": "systems_17" + }, + "locked": { + "lastModified": 1774899416, + "narHash": "sha256-YcGma1gX/t76xDv9DW71nKkWFhzXYz3NkN/WEceHbZM=", + "ref": "refs/heads/master", + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "revCount": 33194, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/gnunet" + }, + "original": { + "rev": "7c6b613e37e301b0e81fb94af5878d00c98e5b75", + "type": "git", + "url": "https://git.gnunet.org/gnunet" + } + }, + "merchant": { + "inputs": { + "donau": "donau_2", + "exchange": "exchange_4", + "gnunet": "gnunet_8", + "nixpkgs": "nixpkgs_15", + "systems": "systems_15" + }, + "locked": { + "lastModified": 1776070816, + "narHash": "sha256-R+a90LanaprK2S4XzUXyW5tAUXOf+pVD7ljCfvulgAM=", + "ref": "refs/heads/master", + "rev": "b174138726171601b666fff346762502be5150a1", + "revCount": 5567, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/merchant" + }, + "original": { + "rev": "b174138726171601b666fff346762502be5150a1", + "type": "git", + "url": "https://git.gnunet.org/merchant" + } + }, + "merchant_2": { + "inputs": { + "donau": "donau_4", + "exchange": "exchange_8", + "gnunet": "gnunet_16", + "nixpkgs": "nixpkgs_31", + "systems": "systems_31" + }, + "locked": { + "lastModified": 1776070816, + "narHash": "sha256-R+a90LanaprK2S4XzUXyW5tAUXOf+pVD7ljCfvulgAM=", + "ref": "refs/heads/master", + "rev": "b174138726171601b666fff346762502be5150a1", + "revCount": 5567, + "submodules": true, + "type": "git", + "url": "https://git.gnunet.org/merchant" + }, + "original": { + "rev": "b174138726171601b666fff346762502be5150a1", + "type": "git", + "url": "https://git.gnunet.org/merchant" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1775825553, + "narHash": "sha256-LH0FGBWngFpvqXYfN1eks+L5n3aXy1ALTTRRhxP0HGA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ca62ee54d15571e3122309abb6740578906bcdf7", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_13": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1775730577, + "narHash": "sha256-5i3MKmxBFQP9/wp3QyFWyS7DqURq/M4T8gr1JSbyygI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d5a853f7004a5fc57b61a97ccb02832f8e7ed9d", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1776360938, + "narHash": "sha256-Tq/T/Us82tBQIRuyuZyWR1EMVJ0EStmk/u8qQgsKlVM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "67664cad2361605c8fce9712d9ce6a8e026d2380", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_18": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_19": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_20": { + "locked": { + "lastModified": 1775825553, + "narHash": "sha256-LH0FGBWngFpvqXYfN1eks+L5n3aXy1ALTTRRhxP0HGA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ca62ee54d15571e3122309abb6740578906bcdf7", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_21": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_22": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_23": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_24": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_25": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_26": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_27": { + "locked": { + "lastModified": 1775825553, + "narHash": "sha256-LH0FGBWngFpvqXYfN1eks+L5n3aXy1ALTTRRhxP0HGA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ca62ee54d15571e3122309abb6740578906bcdf7", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_28": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_29": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_30": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_31": { + "locked": { + "lastModified": 1775730577, + "narHash": "sha256-5i3MKmxBFQP9/wp3QyFWyS7DqURq/M4T8gr1JSbyygI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d5a853f7004a5fc57b61a97ccb02832f8e7ed9d", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_32": { + "locked": { + "lastModified": 1776946615, + "narHash": "sha256-Q4SmvLr7PxHm9BLCcsKf4iH3IzIZgqFxV/bk5j4H6AM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6ea81a59ced133851d02042d2ba8c2911fd54546", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1775825553, + "narHash": "sha256-LH0FGBWngFpvqXYfN1eks+L5n3aXy1ALTTRRhxP0HGA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ca62ee54d15571e3122309abb6740578906bcdf7", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1774799055, + "narHash": "sha256-Tsq9BCz0q47ej1uFF39m4tuhcwru/ls6vCCJzutEpaw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "107cba9eb4a8d8c9f8e9e61266d78d340867913a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "release-25.11", + "type": "indirect" + } + }, + "root": { + "inputs": { + "anastasis": "anastasis", + "donau": "donau_3", + "exchange": "exchange_6", + "gnunet": "gnunet_12", + "merchant": "merchant_2", + "nixpkgs": "nixpkgs_32", + "systems": "systems_32" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_10": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_11": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_12": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_13": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_14": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_15": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_16": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_17": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_18": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_19": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_20": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_21": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_22": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_23": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_24": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_25": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_26": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_27": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_28": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_29": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_30": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_31": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_32": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_9": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix @@ -0,0 +1,135 @@ +# This is a nix flake. To use it, you need nix (with flake support) installed. +# If you do not have nix and do not intend to use it, you can ignore this file. +# Why should you use it? Using this flake will allow you to enter a developer shell +# which has all necessary packages for this repository already installed. +# The shell will allow you to code against the specific revisions of the dependencies +# pinned in this file. +# This is useful when git HEAD of your dependencies already contains breaking changes +# you should not (yet) code against. +# OTOH, if you should code against a newer, not yet released revision, you can specify +# this revision in this file. +# You can use this file in three ways: +# 1. Build: $ nix build +# this will build the package (it runs make for you in an environment with the dependencies installed) +# 2. Develop: $ nix develop +# This will drop you inside a shell in which you can develop and compile (and test) your code. +# It even starts and sets up the test database for you. +# 3. Use this repository in a new project +# Should you create a new project that depends on this project you are in luck. You can create a flake.nix +# in your repository and include this packages as a dependency just like the dependencies of this package are +# included here. + +{ + inputs = { + nixpkgs.url = "nixpkgs/release-25.11"; + systems.url = "github:nix-systems/default"; + gnunet.url = "git+https://git.gnunet.org/gnunet?rev=7c6b613e37e301b0e81fb94af5878d00c98e5b75"; + exchange.url = "git+https://git.gnunet.org/exchange?rev=92da4e81006404494f6443781c8f55249e723847"; + merchant.url = "git+https://git.gnunet.org/merchant?rev=b174138726171601b666fff346762502be5150a1"; + donau.url = "git+https://git.gnunet.org/donau?rev=4f609168fe263891f134eff01f86288066acdd81"; + anastasis.url = "git+https://git.gnunet.org/anastasis?rev=c55bf5de869065cafbd4b05edcd16980f7f1abae"; + self.submodules = true; + }; + + outputs = { self, nixpkgs, gnunet, exchange, donau, merchant, anastasis, systems, ... } @ inputs: + let + supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; + forEachSystem = nixpkgs.lib.genAttrs supportedSystems; + nixpkgsFor = forEachSystem (system: import nixpkgs { inherit system; }); + in + { + # This defines (installable) package derivations + # For use in flakes that use this flake as input in order + # to specify/use this package from git as a dependency + packages = forEachSystem (system: + let + pkgs = nixpkgsFor.${system}; + gnunetpkgs = gnunet.packages.${system}; + exchangepkgs = exchange.packages.${system}; + donaupkgs = donau.packages.${system}; + merchantpkgs = merchant.packages.${system}; + anastasispkgs = anastasis.packages.${system}; + in { + anastasisgtk = pkgs.stdenv.mkDerivation { + name = "anastasis-gtk"; + src = ./.; + nativeBuildInputs = [ + pkgs.gnumake + pkgs.meson + pkgs.ninja + pkgs.pkg-config + ]; + buildInputs = [ + pkgs.libtool + pkgs.jansson + pkgs.git + pkgs.gettext + pkgs.libmicrohttpd + pkgs.curlWithGnuTls + pkgs.qrencode + pkgs.libharu + pkgs.glade + pkgs.glib + pkgs.gtk3 + gnunetpkgs.gnunet + exchangepkgs.exchange + donaupkgs.donau + merchantpkgs.merchant + anastasispkgs.anastasis + ]; + preConfigure = '' + patchShebangs --build contrib/check-prebuilt + ./bootstrap + ''; + }; + } + ); + defaultPackage = forEachSystem (system: self.packages.${system}.anastasis); + # This defines a development shell in which you can compile + # (and use) exchange + devShells = forEachSystem + (system: + let + pkgs = nixpkgsFor.${system}; + gnunetpkgs = gnunet.packages.${system}; + exchangepkgs = exchange.packages.${system}; + donaupkgs = donau.packages.${system}; + merchantpkgs = merchant.packages.${system}; + anastasispkgs = anastasis.packages.${system}; + in + { + default = pkgs.mkShell { + packages = [ + pkgs.gcc + pkgs.meson + pkgs.ninja + pkgs.gnumake + pkgs.pkg-config + pkgs.libtool + pkgs.git + pkgs.gettext + pkgs.curlWithGnuTls + gnunetpkgs.gnunet + pkgs.codespell + pkgs.clang-tools + pkgs.uncrustify + pkgs.qrencode + pkgs.libharu + pkgs.glade + pkgs.glib + pkgs.gtk3 + exchangepkgs.exchange + donaupkgs.donau + merchantpkgs.merchant + anastasispkgs.anastasis + ]; + + shellHook = '' + echo "anastasis-gtk environment loaded." + export CC=gcc + export CFLAGS="-O" + ''; + }; + }); + }; +} diff --git a/meson.build b/meson.build @@ -0,0 +1,307 @@ +project( + 'anastasis-gtk', + 'c', + license: 'AGPLv3', + meson_version: '>=1.1.0', + version: '0.7.0', +) + +cc = meson.get_compiler('c') +incdir = include_directories('.', 'src/include') + +# Used to populate gnunet_private_config.h +private_config = configuration_data() + + +plugindir = get_option('libdir') / 'anastasis-gtk' +pkgdatadir = get_option('datadir') / 'anastasis-gtk' +pkgcfgdir = pkgdatadir / 'config.d' +docdir = get_option('datadir') / 'doc' / 'anastasis-gtk' + +if get_option('install-rpath') + rpath_option = get_option('prefix') / get_option('libdir') +else + rpath_option = '' +endif + +install_emptydir(docdir) +install_data('README', 'COPYING', install_dir: docdir) + +gnunet_user = false +dpkg_architecture_bin = find_program( + 'dpkg-architecture', + '/usr/bin/dpkg-architecture', + required: false, +) +if dpkg_architecture_bin.found() + private_config.set( + 'MULTIARCH', + dpkg_architecture_bin.full_path() + ' -qDEB_HOST_MULTIARCH', + ) +endif + +TALER_PLUGIN_LDFLAGS = [ + '-export-dynamic', + '-avoid-version', + '-module', + '--no-undefined', +] + +cdata = configuration_data() +if not get_option('only-doc') + add_project_arguments( + '-Wall', + '-Wno-address-of-packed-member', + language: 'c', + ) + taler_lib_ldflags = '-export-dynamic -no-undefined' + + check_headers = ['errno.h', 'stdio.h', 'unistd.h', 'locale.h', 'sys/stat.h', 'sys/types.h', 'langinfo.h', 'libintl.h', 'stddef.h', 'argz.h', 'sys/socket.h', 'netinet/in.h', 'stdarg.h'] + + foreach h : check_headers + if cc.check_header(h) + define = 'HAVE_' + h.underscorify().to_upper() + message(define) + private_config.set(define, 1) + endif + endforeach + + if cc.has_function('getpwnam') + private_config.set('HAVE_GETPWNAM', 1) + endif + if cc.has_header_symbol('_stati64', 'sys/stat.h') + private_config.set('HAVE_DECL__STATI64', 1) + endif + + + # Gettext + i18n = import('i18n') + + gettext_package = 'anastasis-gtk' + add_project_arguments('-DGETTEXT_PACKAGE=' + gettext_package, language: 'c') + add_project_arguments('-DENABLE_NLS=1', language: 'c') + + magic_dep = dependency('magic', required: false) + if not magic_dep.found() + magic_dep = cc.find_library('magic', required: true) + endif + haru_dep = dependency('hpdf', required: false) + if not haru_dep.found() + haru_dep = cc.find_library('hpdf', required: false) + endif + + qrencode_dep = dependency('qrencode', required: false) + if not qrencode_dep.found() + qrencode_dep = cc.find_library('qrencode', required: true) + endif + + mhd_dep = dependency('libmicrohttpd', required: false) + if not mhd_dep.found() + mhd_dep = cc.find_library('microhttpd', required: true) + endif + + json_dep = dependency('jansson', required: false) + if not json_dep.found() + json_dep = cc.find_library('jansson', required: true) + endif + + gcrypt_dep = dependency('libgcrypt', required: false) + if not gcrypt_dep.found() + gcrypt_dep = cc.find_library('gcrypt', required: true) + endif + + private_config.set_quoted('NEED_LIBGCRYPT_VERSION', '1.6.1') + + anastasis_dep = dependency('anastasis', required: false) + if not anastasis_dep.found() + anastasis_dep = cc.find_library('anastasis', required: true) + endif + + cc.has_header_symbol( + 'anastasis/anastasis_service.h', + 'ANASTASIS_get_config', + dependencies: [anastasis_dep], + required: true, + ) + + anastasisrest_dep = dependency('anastasisrest', required: false) + if not anastasisrest_dep.found() + anastasisrest_dep = cc.find_library('anastasisrest', required: true) + endif + + anastasisredux_dep = dependency('anastasisredux', required: false) + if not anastasisredux_dep.found() + anastasisredux_dep = cc.find_library('anastasisredux', required: true) + endif + + anastasisutil_dep = dependency('anastasisutil', required: false) + if not anastasisutil_dep.found() + anastasisutil_dep = cc.find_library('anastasisutil', required: true) + endif + + + + + gnunetutil_dep = dependency('gnunetutil', required: false) + if not gnunetutil_dep.found() + gnunetutil_dep = cc.find_library('gnunetutil', required: true) + endif + + cc.has_header_symbol( + 'gnunet/gnunet_util_lib.h', + 'GNUNET_TIME_round_up', + dependencies: [gnunetutil_dep], + required: true, + ) + gnunetjson_dep = dependency('gnunetjson', required: false) + if not gnunetjson_dep.found() + gnunetjson_dep = cc.find_library('gnunetjson', required: true) + endif + gnunetcurl_dep = dependency('gnunetcurl', required: false) + if not gnunetcurl_dep.found() + gnunetcurl_dep = cc.find_library('gnunetcurl', required: true) + endif + talerjson_dep = dependency('talerjson', required: false) + if not talerjson_dep.found() + talerjson_dep = cc.find_library('talerjson', required: true) + endif + cc.has_header_symbol( + 'taler/taler_json_lib.h', + 'TALER_JSON_currency_specs_to_json', + required: true, + dependencies: [talerjson_dep], + ) + private_config.set10('HAVE_TALERJSON', talerjson_dep.found()) + + talerutil_dep = dependency('talerutil', required: false) + if not talerutil_dep.found() + talerutil_dep = cc.find_library('talerutil', required: true) + endif + cc.has_header_symbol( + 'taler/taler_util.h', + 'TALER_merchant_instance_auth_hash_with_salt', + required: true, + dependencies: [talerutil_dep], + ) + private_config.set10('HAVE_TALERUTIL', talerutil_dep.found()) + + + gtk_dep = dependency('gtk+-3.0', required: false) + if not gtk_dep.found() + gtk_dep = cc.find_library('gtk+-3.0', required: true) + endif + + glade_dep = dependency('gladeui-2.0', required: false) + if not glade_dep.found() + glade_dep = cc.find_library('glade-2.0', required: true) + endif + + curl_dep = dependency('libcurl', version: '>=7.34.0', required: false) + if not curl_dep.found() + curl_dep = cc.find_library('curl', required: true) + curl_version_check = '''#include <curl/curl.h> + int main(int argc, char **argv) { + #if LIBCURL_VERSION_NUM < 0x073400 + #error "cURL version >= 7.34.0 required" + #endif + return 0; + } + ''' + if not cc.compiles( + curl_version_check, + name: 'cURL version check', + dependencies: curl_dep, + ) + error('cURL version >=7.34.0 required') + endif + endif + + logging_opt = get_option('logging') + logging_verbosity = 0 + + if logging_opt == 'yes' + logging_verbosity = 1 + endif + if logging_opt == 'no' + add_project_arguments('-DGNUNET_CULL_LOGGING=1', language: 'c') + endif + if logging_opt == 'verbose' + logging_verbosity = 2 + endif + if logging_opt == 'veryverbose' + logging_verbosity = 3 + endif + + #add_project_arguments('-DGNUNET_EXTRA_LOGGING=@0@'.format(logging_verbosity), language: 'c') + + + # todo gcov has meson builtin + + # Used to populate configuration file and script templates + + + libltversions = [ + ['libanastasisgtkutil', '0:0:0'], + ] + + solibversions = {} + + foreach libversion : libltversions + ltversion = libversion[1].split(':') + current = ltversion[0].to_int() + revision = ltversion[1].to_int() + age = ltversion[2].to_int() + soversion_str = '@0@'.format(current - age) + ltversion_str = '@0@.@1@.@2@'.format(current - age, age, revision) + solibversions = solibversions + { + libversion[0]: { + 'soversion': soversion_str, + 'version': ltversion_str, + }, + } + endforeach + + #private_config.set_quoted('PACKAGE', meson.project_name()) + add_project_arguments('-DPACKAGE="@0@"'.format(meson.project_name()), language: 'c') + add_project_arguments('-DPACKAGE_NAME="@0@"'.format(meson.project_name()), language: 'c') + private_config.set_quoted('PACKAGE_VERSION', meson.project_version()) + # Compatibility. Used in source. + private_config.set_quoted('VERSION', meson.project_version()) + private_config.set_quoted('VCS_VERSION', 'mesonbuild') + private_config.set_quoted('PACKAGE_BUGREPORT', 'taler@gnu.org') + configure_file(output: 'anastasis_gtk_config.h', configuration: private_config) + configuration_inc = include_directories('.') + + cdata.merge_from(private_config) + add_project_arguments('-DHAVE_CONFIG_H', language: 'c') + + pkg = import('pkgconfig') + subdir('contrib') + subdir('src') + if not get_option('disable-doc') + subdir('doc') + endif + + taler_prefix = get_option('prefix') / get_option('libdir') + + add_test_setup( + 'default', + env: ['ANASTASIS_PREFIX=' + taler_prefix], + exclude_suites: ['perf', 'installcheck', 'integrationtests'], + is_default: true, + ) +else + subdir('contrib') + if not get_option('disable-doc') + subdir('doc') + endif +endif + +run_target( + 'doxygen', + command: 'scripts/doxygen.meson.sh', + env: {'PACKAGE_VERSION': meson.project_version()}, +) + +#meson.add_dist_script('meson-dist-script') + diff --git a/meson.options b/meson.options @@ -0,0 +1,5 @@ +# Build options +option('only-doc', type : 'boolean', value : false, description: 'whether to compile documentation ONLY') +option('disable-doc', type : 'boolean', value : false, description: 'whether to disable documentation') +option('install-rpath', type : 'boolean', value : false, description: 'Add rpath to installed binaries if set') +option('logging', type : 'string', value: 'yes', description: 'Log setting. Can be set to "yes" (logging, default), "no" (no logging), "verbose" (extra logging"), "veryverbose" (even more logging)') diff --git a/scripts/doxygen.meson.sh b/scripts/doxygen.meson.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +# This is more portable than `which' but comes with +# the caveat of not(?) properly working on busybox's ash: +existence() +{ + type "$1" >/dev/null 2>&1 +} + +if ! existence doxygen; then + echo "Doxygen not found" + exit 1 +fi +cd "${MESON_SOURCE_ROOT}/doc/doxygen" +echo "PROJECT_NUMBER = ${PACKAGE_VERSION}" > version.doxy +make all + +echo "Doxygen files generated into ${MESON_SOURCE_ROOT}/doc/doxygen!" diff --git a/src/anastasis/anastasis-gtk_action.h b/src/anastasis/anastasis-gtk_action.h @@ -26,7 +26,6 @@ */ #ifndef ANASTASIS_GTK_ACTION_H #define ANASTASIS_GTK_ACTION_H -#include <gnunet-gtk/gnunet_gtk.h> #include <gtk/gtk.h> #include <anastasis/anastasis_service.h> #include <anastasis/anastasis_redux.h> diff --git a/src/anastasis/anastasis-gtk_helper.h b/src/anastasis/anastasis-gtk_helper.h @@ -26,7 +26,6 @@ */ #ifndef ANASTASIS_GTK_HELPER_H #define ANASTASIS_GTK_HELPER_H -#include <gnunet-gtk/gnunet_gtk.h> #include <gtk/gtk.h> #include <anastasis/anastasis_service.h> #include <anastasis/anastasis_redux.h> diff --git a/src/anastasis/meson.build b/src/anastasis/meson.build @@ -0,0 +1,98 @@ +# This file is in the public domain +anastasis_gtk_SOURCES = [ + 'anastasis-gtk.c', + 'anastasis-gtk_action.c', + 'anastasis-gtk_attributes.c', + 'anastasis-gtk_autocomplete.c', + 'anastasis-gtk_dispatch.c', + 'anastasis-gtk_io.c', + 'anastasis-gtk_handle-add-provider.c', + 'anastasis-gtk_handle-auth-delete-button-clicked.c', + 'anastasis-gtk_handle-auth-edit-provider-clicked.c', + 'anastasis-gtk_handle-backup-button-clicked.c', + 'anastasis-gtk_handle-challenge-code.c', + 'anastasis-gtk_handle-challenge-iban.c', + 'anastasis-gtk_handle-challenge-question.c', + 'anastasis-gtk_handle-challenge-totp.c', + 'anastasis-gtk_handle-clear-secret-clicked.c', + 'anastasis-gtk_handle-continent-selected.c', + 'anastasis-gtk_handle-country-activated.c', + 'anastasis-gtk_handle-country-unselected.c', + 'anastasis-gtk_handle-core-secret-changed.c', + 'anastasis-gtk_handle-core-secret-name-changed.c', + 'anastasis-gtk_handle-expiration-change.c', + 'anastasis-gtk_handle-identity-changed.c', + 'anastasis-gtk_handle-main-window-forward-clicked.c', + 'anastasis-gtk_handle-main-window-back-clicked.c', + 'anastasis-gtk_handle-method-email.c', + 'anastasis-gtk_handle-method-iban.c', + 'anastasis-gtk_handle-method-post.c', + 'anastasis-gtk_handle-method-question.c', + 'anastasis-gtk_handle-method-sms.c', + 'anastasis-gtk_handle-method-totp.c', + 'anastasis-gtk_handle-payqr-selection-changed.c', + 'anastasis-gtk_handle-policy-activate.c', + 'anastasis-gtk_handle-policy-button.c', + 'anastasis-gtk_handle-policy-meta.c', + 'anastasis-gtk_handle-policy-selection-changed.c', + 'anastasis-gtk_handle-recovery-button-clicked.c', + 'anastasis-gtk_handle-secret-buttons.c', + 'anastasis-gtk_helper.c', + 'anastasis-gtk_pe-add-policy.c', + 'anastasis-gtk_pe-delete-challenge.c', + 'anastasis-gtk_pe-delete-policy.c', + 'anastasis-gtk_pe-edit-policy.c', + 'anastasis-gtk_progress.c', +] + +if haru_dep.found() + anastasis_gtk_SOURCES += 'anastasis-gtk_handle-print.c' + anastasis_gtk_SOURCES += 'print.c' +else + anastasis_gtk_SOURCES += 'anastasis-gtk_handle-noprint.c' +endif + +executable( + 'anastasis-gtk', + anastasis_gtk_SOURCES, + dependencies: [ + libanastasisgtkutil_dep, + glade_dep, + gtk_dep, + gnunetutil_dep, + gnunetjson_dep, + gnunetcurl_dep, + qrencode_dep, + anastasisrest_dep, + anastasisredux_dep, + anastasisutil_dep, + talerjson_dep, + talerutil_dep, + json_dep, + gcrypt_dep, + mhd_dep, + magic_dep, + haru_dep, + ], + include_directories: [incdir, configuration_inc], + install: true, +) + + +#EXTRA_DIST = \ +# gettext.h +# +#if HPDF_ENABLED +#noinst_PROGRAMS = \ +# test-print +# +#test_print_SOURCES = \ +# test-print.c \ +# print.c +#test_print_LDADD = \ +# $(HPDF_LIBS) \ +# -lgnunetutil \ +# -ljansson +#test_print_CFLAGS = \ +# $(HPDF_CFLAGS) +#endif diff --git a/src/include/meson.build b/src/include/meson.build @@ -0,0 +1,3 @@ +# This file is in the public domain + +install_data('anastasis_gtk_util.h', install_dir: get_option('includedir') / 'anastasis-gtk') diff --git a/src/meson.build b/src/meson.build @@ -0,0 +1,5 @@ +# This file is in the public domain +subdir('include') +subdir('util') +subdir('anastasis') +#subdir('testing') diff --git a/src/util/meson.build b/src/util/meson.build @@ -0,0 +1,25 @@ +# This file is in the public domain +libanastasisgtkutil = library( + 'anastasisgtkutil', + ['eventloop.c','glade.c','nls.c','os_installation.c'], + soversion: solibversions['libanastasisgtkutil']['soversion'], + version: solibversions['libanastasisgtkutil']['soversion'], + install_rpath: rpath_option, + dependencies: [ + gnunetutil_dep, + gtk_dep, + glade_dep, + ], + include_directories: [incdir, configuration_inc], + install: true, + install_dir: get_option('libdir'), +) + +libanastasisgtkutil_dep = declare_dependency(link_with: libanastasisgtkutil) +pkg.generate( + libanastasisgtkutil, + url: 'https://taler.net', + description: 'GNU Anastasis utilities library', +) + +