From 26046fcc220bcec5186e0abaabae04fd4e068ab5 Mon Sep 17 00:00:00 2001 From: Martin Schanzenbach Date: Mon, 20 Nov 2023 20:30:48 +0100 Subject: NEWS: Remove single-use API macro GNUNET_VA_ARG_ENUM --- src/include/gnunet_common.h | 6 ------ src/service/fs/fs_api.c | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/include/gnunet_common.h b/src/include/gnunet_common.h index 9b2b50f01..85b67377b 100644 --- a/src/include/gnunet_common.h +++ b/src/include/gnunet_common.h @@ -145,12 +145,6 @@ enum GNUNET_GenericReturnValue #endif #endif -/** - * wrap va_arg for enums - */ -#define GNUNET_VA_ARG_ENUM(va, X) ((enum X) va_arg (va, int)) - - /** * @ingroup logging * define #GNUNET_EXTRA_LOGGING if using this header outside the GNUnet source diff --git a/src/service/fs/fs_api.c b/src/service/fs/fs_api.c index 627c58004..65646c7eb 100644 --- a/src/service/fs/fs_api.c +++ b/src/service/fs/fs_api.c @@ -3264,7 +3264,7 @@ GNUNET_FS_start (const struct GNUNET_CONFIGURATION_Handle *cfg, GNUNET_TIME_UNIT_MINUTES; /* conservative starting point */ va_start (ap, flags); while (GNUNET_FS_OPTIONS_END != - (opt = GNUNET_VA_ARG_ENUM (ap, GNUNET_FS_OPTIONS))) + (opt = ((enum GNUNET_FS_OPTIONS) va_arg (ap, int)))) { switch (opt) { -- cgit v1.2.3 From 20402ca50f0b5a890759377d61071c6184641e97 Mon Sep 17 00:00:00 2001 From: Martin Schanzenbach Date: Wed, 22 Nov 2023 19:01:09 +0100 Subject: GNS: Fix dns2gns test with default gnunet.org GNS override we introduced --- src/cli/gns/test_dns2gns.conf | 5 +++-- src/cli/gns/test_dns2gns.sh | 6 ++++-- src/service/gns/gnunet-dns2gns.c | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/cli/gns/test_dns2gns.conf b/src/cli/gns/test_dns2gns.conf index f484d4114..2f6bdc797 100644 --- a/src/cli/gns/test_dns2gns.conf +++ b/src/cli/gns/test_dns2gns.conf @@ -18,7 +18,7 @@ MAX_PARALLEL_BACKGROUND_QUERIES = 10 DEFAULT_LOOKUP_TIMEOUT = 15 s RECORD_PUT_INTERVAL = 1 h ZONE_PUBLISH_TIME_WINDOW = 1 h -DNS_ROOT=PD67SGHF3E0447TU9HADIVU9OM7V4QHTOG0EBU69TFRI2LG63DR0 +.gnunet.org = [namestore] IMMEDIATE_START = YES @@ -65,4 +65,5 @@ IMMEDIATE_START = YES RUN_PER_USER = YES BIND_TO = 127.0.0.1 BIND_TO6 = ::1 -OPTIONS = -d 1.1.1.1 -p 12000 +PORT = 12000 +OPTIONS = -d 1.1.1.1 diff --git a/src/cli/gns/test_dns2gns.sh b/src/cli/gns/test_dns2gns.sh index 295bcc766..a6024ca3c 100755 --- a/src/cli/gns/test_dns2gns.sh +++ b/src/cli/gns/test_dns2gns.sh @@ -20,7 +20,7 @@ MY_EGO="localego" TEST_IP="127.0.0.1" TEST_IPV6="dead::beef" LABEL="fnord" -TEST_DOMAIN="gnunet.org" +TEST_DOMAIN="taler.net" gnunet-arm -s -c test_dns2gns.conf PKEY=`gnunet-identity -V -C $MY_EGO -c test_dns2gns.conf` @@ -34,14 +34,16 @@ if nslookup -port=12000 $LABEL.$PKEY localhost && nslookup -port=12000 $LABEL.$M echo "PASS: GNS records can be resolved using dns2gns bridge" else echo "FAIL: GNS records can't be resolved using dns2gns bridge" + gnunet-arm -e -c test_dns2gns.conf rm -rf `gnunet-config -c test_dns2gns.conf -f -s paths -o GNUNET_TEST_HOME` exit 1 fi -if nslookup -port=12000 gnunet.org localhost; then +if nslookup -port=12000 $TEST_DOMAIN localhost; then echo "PASS: DNS records can be resolved using dns2gns bridge" else echo "FAIL: DNS records can't be resolved using dns2gns bridge" + gnunet-arm -e -c test_dns2gns.conf rm -rf `gnunet-config -c test_dns2gns.conf -f -s paths -o GNUNET_TEST_HOME` exit 1 fi diff --git a/src/service/gns/gnunet-dns2gns.c b/src/service/gns/gnunet-dns2gns.c index 04d320c62..8706bec3a 100644 --- a/src/service/gns/gnunet-dns2gns.c +++ b/src/service/gns/gnunet-dns2gns.c @@ -750,7 +750,7 @@ read_dns4 (void *cls) "recvfrom"); return; } - GNUNET_break (size == sret); + GNUNET_break (size != sret); handle_request (listen_socket4, &v4, addrlen, @@ -803,7 +803,7 @@ read_dns6 (void *cls) "recvfrom"); return; } - GNUNET_break (size == sret); + GNUNET_break (size != sret); handle_request (listen_socket6, &v6, addrlen, -- cgit v1.2.3 From aa395c1bce6e3f70e20c0d78693cd4064b6d6a79 Mon Sep 17 00:00:00 2001 From: Martin Schanzenbach Date: Wed, 22 Nov 2023 19:01:35 +0100 Subject: PEERSTORE: Simplify API such that we no longer get caught in while loops --- contrib/gana | 2 +- src/include/gnunet_peerstore_service.h | 8 +- src/service/cadet/gnunet-service-cadet_hello.c | 2 +- src/service/dhtu/plugin_dhtu_gnunet.c | 2 +- src/service/fs/gnunet-service-fs_cp.c | 3 +- .../hostlist/gnunet-daemon-hostlist_client.c | 2 +- .../hostlist/gnunet-daemon-hostlist_server.c | 2 +- src/service/peerstore/peerstore_api.c | 128 ++++++++------------- src/service/topology/gnunet-daemon-topology.c | 2 +- src/service/transport/gnunet-communicator-tcp.c | 2 +- src/service/transport/gnunet-service-transport.c | 2 +- src/service/transport/transport-testing2.c | 2 +- .../transport/transport_api_cmd_stop_peer.c | 2 +- 13 files changed, 63 insertions(+), 96 deletions(-) diff --git a/contrib/gana b/contrib/gana index c1dc2dc97..840792da1 160000 --- a/contrib/gana +++ b/contrib/gana @@ -1 +1 @@ -Subproject commit c1dc2dc975742c929a523c22d91f7d4f82787230 +Subproject commit 840792da1b88e826a178df77a48f42b0b58a2570 diff --git a/src/include/gnunet_peerstore_service.h b/src/include/gnunet_peerstore_service.h index c57a66b1f..966abb7a6 100644 --- a/src/include/gnunet_peerstore_service.h +++ b/src/include/gnunet_peerstore_service.h @@ -337,15 +337,13 @@ GNUNET_PEERSTORE_connect (const struct GNUNET_CONFIGURATION_Handle *cfg); /** - * Disconnect from the PEERSTORE service. Any pending ITERATE and WATCH requests - * will be canceled. - * Any pending STORE requests will depend on @e snyc_first flag. + * Disconnect from the PEERSTORE service. Any pending ITERATE and WATCH and + * STORE requests will be canceled. * * @param h handle to disconnect - * @param sync_first send any pending STORE requests before disconnecting */ void -GNUNET_PEERSTORE_disconnect (struct GNUNET_PEERSTORE_Handle *h, int sync_first); +GNUNET_PEERSTORE_disconnect (struct GNUNET_PEERSTORE_Handle *h); /** diff --git a/src/service/cadet/gnunet-service-cadet_hello.c b/src/service/cadet/gnunet-service-cadet_hello.c index 3c8509ea4..ac84fab1e 100644 --- a/src/service/cadet/gnunet-service-cadet_hello.c +++ b/src/service/cadet/gnunet-service-cadet_hello.c @@ -128,7 +128,7 @@ GCH_shutdown () } if (NULL != peerstore) { - GNUNET_PEERSTORE_disconnect (peerstore, GNUNET_YES); + GNUNET_PEERSTORE_disconnect (peerstore); peerstore = NULL; } if (NULL != mine) diff --git a/src/service/dhtu/plugin_dhtu_gnunet.c b/src/service/dhtu/plugin_dhtu_gnunet.c index 1c56be0e5..7c02fdd15 100644 --- a/src/service/dhtu/plugin_dhtu_gnunet.c +++ b/src/service/dhtu/plugin_dhtu_gnunet.c @@ -540,7 +540,7 @@ libgnunet_plugin_dhtu_gnunet_done (void *cls) if (NULL != plugin->peerstore_notify) GNUNET_PEERSTORE_hello_changed_notify_cancel (plugin->peerstore_notify); if (NULL != plugin->peerstore) - GNUNET_PEERSTORE_disconnect (plugin->peerstore, GNUNET_YES); + GNUNET_PEERSTORE_disconnect (plugin->peerstore); //GPI_plugins_unload (); GNUNET_free (plugin->my_priv); GNUNET_free (plugin); diff --git a/src/service/fs/gnunet-service-fs_cp.c b/src/service/fs/gnunet-service-fs_cp.c index 74dd42daf..b2b73d0a5 100644 --- a/src/service/fs/gnunet-service-fs_cp.c +++ b/src/service/fs/gnunet-service-fs_cp.c @@ -1610,8 +1610,7 @@ GSF_connected_peer_done_ () fr_task = NULL; GNUNET_CONTAINER_multipeermap_destroy (cp_map); cp_map = NULL; - GNUNET_PEERSTORE_disconnect (peerstore, - GNUNET_YES); + GNUNET_PEERSTORE_disconnect (peerstore); } diff --git a/src/service/hostlist/gnunet-daemon-hostlist_client.c b/src/service/hostlist/gnunet-daemon-hostlist_client.c index bedc52612..2a03caaac 100644 --- a/src/service/hostlist/gnunet-daemon-hostlist_client.c +++ b/src/service/hostlist/gnunet-daemon-hostlist_client.c @@ -1814,7 +1814,7 @@ GNUNET_HOSTLIST_client_stop () proxy_password = NULL; if (NULL != peerstore) { - GNUNET_PEERSTORE_disconnect (peerstore, GNUNET_YES); + GNUNET_PEERSTORE_disconnect (peerstore); peerstore = NULL; } cfg = NULL; diff --git a/src/service/hostlist/gnunet-daemon-hostlist_server.c b/src/service/hostlist/gnunet-daemon-hostlist_server.c index dd4f435a1..d2ef8dd7a 100644 --- a/src/service/hostlist/gnunet-daemon-hostlist_server.c +++ b/src/service/hostlist/gnunet-daemon-hostlist_server.c @@ -876,7 +876,7 @@ GNUNET_HOSTLIST_server_stop () } if (NULL != peerstore) { - GNUNET_PEERSTORE_disconnect (peerstore, GNUNET_YES); + GNUNET_PEERSTORE_disconnect (peerstore); peerstore = NULL; } cfg = NULL; diff --git a/src/service/peerstore/peerstore_api.c b/src/service/peerstore/peerstore_api.c index 9014193c7..3dec7e01b 100644 --- a/src/service/peerstore/peerstore_api.c +++ b/src/service/peerstore/peerstore_api.c @@ -86,10 +86,6 @@ struct GNUNET_PEERSTORE_Handle */ struct GNUNET_TIME_Relative reconnect_delay; - /** - * Are we in the process of disconnecting but need to sync first? - */ - int disconnecting; }; /** @@ -464,25 +460,6 @@ destroy_watch (void *cls, const struct GNUNET_HashCode *key, void *value) } -/** - * Kill the connection to the service. This can be delayed in case of pending - * STORE requests and the user explicitly asked to sync first. Otherwise it is - * performed instantly. - * - * @param h Handle to the service. - */ -static void -final_disconnect (struct GNUNET_PEERSTORE_Handle *h) -{ - if (NULL != h->mq) - { - GNUNET_MQ_destroy (h->mq); - h->mq = NULL; - } - GNUNET_free (h); -} - - /** * Connect to the PEERSTORE service. * @@ -496,7 +473,6 @@ GNUNET_PEERSTORE_connect (const struct GNUNET_CONFIGURATION_Handle *cfg) h = GNUNET_new (struct GNUNET_PEERSTORE_Handle); h->cfg = cfg; - h->disconnecting = GNUNET_NO; reconnect (h); if (NULL == h->mq) { @@ -513,10 +489,9 @@ GNUNET_PEERSTORE_connect (const struct GNUNET_CONFIGURATION_Handle *cfg) * Any pending STORE requests will depend on @e snyc_first flag. * * @param h handle to disconnect - * @param sync_first send any pending STORE requests before disconnecting */ void -GNUNET_PEERSTORE_disconnect (struct GNUNET_PEERSTORE_Handle *h, int sync_first) +GNUNET_PEERSTORE_disconnect (struct GNUNET_PEERSTORE_Handle *h) { struct GNUNET_PEERSTORE_IterateContext *ic; struct GNUNET_PEERSTORE_StoreContext *sc; @@ -533,19 +508,12 @@ GNUNET_PEERSTORE_disconnect (struct GNUNET_PEERSTORE_Handle *h, int sync_first) GNUNET_break (0); GNUNET_PEERSTORE_iterate_cancel (ic); } - if (NULL != h->store_head) + while (NULL != (sc = h->store_head)) { - if (GNUNET_YES == sync_first) - { - LOG (GNUNET_ERROR_TYPE_DEBUG, - "Delaying disconnection due to pending store requests.\n"); - h->disconnecting = GNUNET_YES; - return; - } - while (NULL != (sc = h->store_head)) - GNUNET_PEERSTORE_store_cancel (sc); + GNUNET_break (0); + GNUNET_PEERSTORE_store_cancel (sc); } - final_disconnect (h); + disconnect (h); } @@ -562,8 +530,6 @@ GNUNET_PEERSTORE_disconnect (struct GNUNET_PEERSTORE_Handle *h, int sync_first) void GNUNET_PEERSTORE_store_cancel (struct GNUNET_PEERSTORE_StoreContext *sc) { - struct GNUNET_PEERSTORE_Handle *h = sc->h; - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "store cancel with sc %p \n", sc); @@ -575,8 +541,6 @@ GNUNET_PEERSTORE_store_cancel (struct GNUNET_PEERSTORE_StoreContext *sc) GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "store cancel with sc %p is null\n", sc); - if ((GNUNET_YES == h->disconnecting) && (NULL == h->store_head)) - final_disconnect (h); } @@ -751,15 +715,15 @@ handle_iterate_result (void *cls, const struct StoreRecordMessage *msg) void GNUNET_PEERSTORE_iterate_cancel (struct GNUNET_PEERSTORE_IterateContext *ic) { - if (GNUNET_NO == ic->iterating) + if (GNUNET_YES == ic->iterating) { - GNUNET_CONTAINER_DLL_remove (ic->h->iterate_head, ic->h->iterate_tail, ic); - GNUNET_free (ic->sub_system); - GNUNET_free (ic->key); - GNUNET_free (ic); + if (NULL != ic->callback) + ic->callback (ic->callback_cls, NULL, "Iteration canceled due to reconnection"); } - else - ic->callback = NULL; + GNUNET_CONTAINER_DLL_remove (ic->h->iterate_head, ic->h->iterate_tail, ic); + GNUNET_free (ic->sub_system); + GNUNET_free (ic->key); + GNUNET_free (ic); } @@ -965,8 +929,8 @@ GNUNET_PEERSTORE_watch_cancel (struct GNUNET_PEERSTORE_WatchContext *wc) static void watch_iterate (void *cls, - const struct GNUNET_PEERSTORE_Record *record, - const char *emsg) + const struct GNUNET_PEERSTORE_Record *record, + const char *emsg) { struct GNUNET_PEERSTORE_WatchContext *wc = cls; struct GNUNET_PEERSTORE_Handle *h = wc->h; @@ -1053,11 +1017,11 @@ GNUNET_PEERSTORE_watch (struct GNUNET_PEERSTORE_Handle *h, wc->sub_system = sub_system; wc->ic = GNUNET_PEERSTORE_iterate (h, - sub_system, - peer, - key, - &watch_iterate, - wc); + sub_system, + peer, + key, + &watch_iterate, + wc); return wc; } @@ -1091,7 +1055,8 @@ hello_updated (void *cls, hello = record->value; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "hello_updated with expired %s and size %u for peer %s\n", - GNUNET_STRINGS_absolute_time_to_string (GNUNET_HELLO_builder_get_expiration_time (hello)), + GNUNET_STRINGS_absolute_time_to_string ( + GNUNET_HELLO_builder_get_expiration_time (hello)), ntohs (hello->size), GNUNET_i2s (&record->peer)); if ((0 == record->value_size)) @@ -1119,11 +1084,11 @@ GNUNET_PEERSTORE_hello_changed_notify (struct GNUNET_PEERSTORE_Handle *h, nc->h = h; nc->wc = GNUNET_PEERSTORE_watch (h, - "peerstore", - NULL, - GNUNET_PEERSTORE_HELLO_KEY, - &hello_updated, - nc); + "peerstore", + NULL, + GNUNET_PEERSTORE_HELLO_KEY, + &hello_updated, + nc); return nc; } @@ -1152,7 +1117,8 @@ merge_success (void *cls, int success) struct StoreHelloCls *shu_cls = cls; struct GNUNET_PEERSTORE_StoreHelloContext *huc = shu_cls->huc; - if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_remove (huc->store_context_map, huc->pid, shu_cls->sc)) + if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_remove (huc->store_context_map, + huc->pid, shu_cls->sc)) GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "There was no store context to be removed after storing hello for peer %s\n", GNUNET_i2s (huc->pid)); @@ -1213,14 +1179,16 @@ store_hello (struct GNUNET_PEERSTORE_StoreHelloContext *huc, GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "store_hello with expiration %s\n", GNUNET_STRINGS_absolute_time_to_string (hello_exp)); - GNUNET_assert (GNUNET_SYSERR != GNUNET_CONTAINER_multipeermap_put (huc->store_context_map, - huc->pid, - sc, - GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); + GNUNET_assert (GNUNET_SYSERR != GNUNET_CONTAINER_multipeermap_put ( + huc->store_context_map, + huc->pid, + sc, + GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); shu_cls->sc = sc; } -//TODO Find a better name for the function. We do not merge, but replace, if there is a storing process + +// TODO Find a better name for the function. We do not merge, but replace, if there is a storing process // during another store process with a newer hello. static void merge_uri (void *cls, @@ -1249,11 +1217,12 @@ merge_uri (void *cls, GNUNET_STRINGS_absolute_time_to_string (huc_hello_exp_time)); store_hello (huc, huc->hello); } - else if (GNUNET_NO == huc->success && 0 == GNUNET_memcmp (huc->pid, &record->peer)) + else if (GNUNET_NO == huc->success && 0 == GNUNET_memcmp (huc->pid, + &record->peer)) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "merge_uri record for peer %s\n", - GNUNET_i2s (&record->peer)); + "merge_uri record for peer %s\n", + GNUNET_i2s (&record->peer)); hello = record->value; if ((0 == record->value_size)) { @@ -1310,11 +1279,11 @@ GNUNET_PEERSTORE_hello_add (struct GNUNET_PEERSTORE_Handle *h, GNUNET_STRINGS_absolute_time_to_string (huc_exp), size_msg); huc->wc = GNUNET_PEERSTORE_watch (h, - "peerstore", - NULL, - GNUNET_PEERSTORE_HELLO_KEY, - &merge_uri, - huc); + "peerstore", + NULL, + GNUNET_PEERSTORE_HELLO_KEY, + &merge_uri, + huc); GNUNET_HELLO_builder_free (builder); return huc; @@ -1322,13 +1291,14 @@ GNUNET_PEERSTORE_hello_add (struct GNUNET_PEERSTORE_Handle *h, static enum GNUNET_GenericReturnValue -free_store_context(void *cls, - const struct GNUNET_PeerIdentity *key, - void *value) +free_store_context (void *cls, + const struct GNUNET_PeerIdentity *key, + void *value) { (void) cls; - GNUNET_PEERSTORE_store_cancel ((struct GNUNET_PEERSTORE_StoreContext *) value); + GNUNET_PEERSTORE_store_cancel ((struct + GNUNET_PEERSTORE_StoreContext *) value); return GNUNET_YES; // FIXME why is this a map anyway } diff --git a/src/service/topology/gnunet-daemon-topology.c b/src/service/topology/gnunet-daemon-topology.c index a1875eb38..8b9360e86 100644 --- a/src/service/topology/gnunet-daemon-topology.c +++ b/src/service/topology/gnunet-daemon-topology.c @@ -943,7 +943,7 @@ cleaning_task (void *cls) } if (NULL != ps) { - GNUNET_PEERSTORE_disconnect (ps, GNUNET_YES); + GNUNET_PEERSTORE_disconnect (ps); ps = NULL; } if (NULL != stats) diff --git a/src/service/transport/gnunet-communicator-tcp.c b/src/service/transport/gnunet-communicator-tcp.c index 318f2286e..e1d11d569 100644 --- a/src/service/transport/gnunet-communicator-tcp.c +++ b/src/service/transport/gnunet-communicator-tcp.c @@ -3526,7 +3526,7 @@ do_shutdown (void *cls) } if (NULL != peerstore) { - GNUNET_PEERSTORE_disconnect (peerstore, GNUNET_NO); + GNUNET_PEERSTORE_disconnect (peerstore); peerstore = NULL; } if (NULL != resolve_request_handle) diff --git a/src/service/transport/gnunet-service-transport.c b/src/service/transport/gnunet-service-transport.c index bd178d914..5cce27b1c 100644 --- a/src/service/transport/gnunet-service-transport.c +++ b/src/service/transport/gnunet-service-transport.c @@ -11620,7 +11620,7 @@ do_shutdown (void *cls) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnecting from PEERSTORE service\n"); - GNUNET_PEERSTORE_disconnect (peerstore, GNUNET_NO); + GNUNET_PEERSTORE_disconnect (peerstore); peerstore = NULL; } GNUNET_CONTAINER_multishortmap_destroy (dvlearn_map); diff --git a/src/service/transport/transport-testing2.c b/src/service/transport/transport-testing2.c index b88a2b7e9..4081e5111 100644 --- a/src/service/transport/transport-testing2.c +++ b/src/service/transport/transport-testing2.c @@ -649,7 +649,7 @@ GNUNET_TRANSPORT_TESTING_stop_peer (struct { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnecting from PEERSTORE service\n"); - GNUNET_PEERSTORE_disconnect (p->ph, GNUNET_NO); + GNUNET_PEERSTORE_disconnect (p->ph); p->ph = NULL; } diff --git a/src/service/transport/transport_api_cmd_stop_peer.c b/src/service/transport/transport_api_cmd_stop_peer.c index 60d48c56b..795a2f0f3 100644 --- a/src/service/transport/transport_api_cmd_stop_peer.c +++ b/src/service/transport/transport_api_cmd_stop_peer.c @@ -84,7 +84,7 @@ stop_peer_run (void *cls, { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnecting from PEERSTORE service\n"); - GNUNET_PEERSTORE_disconnect (sps->ph, GNUNET_NO); + GNUNET_PEERSTORE_disconnect (sps->ph); } if (NULL != sps->peer) { -- cgit v1.2.3 From cf53590a76e5265244604118a217014b7c7e9a8d Mon Sep 17 00:00:00 2001 From: Martin Schanzenbach Date: Wed, 22 Nov 2023 20:09:11 +0100 Subject: PEERSTORE: Fix API and meson build --- src/cli/identity/.gitignore | 1 + src/cli/peerstore/.gitignore | 1 + src/cli/peerstore/Makefile.am | 23 ++++++++ src/cli/peerstore/gnunet-peerstore.c | 97 ++++++++++++++++++++++++++++++++ src/cli/peerstore/meson.build | 9 +++ src/service/peerstore/gnunet-peerstore.c | 97 -------------------------------- 6 files changed, 131 insertions(+), 97 deletions(-) create mode 100644 src/cli/identity/.gitignore create mode 100644 src/cli/peerstore/.gitignore create mode 100644 src/cli/peerstore/Makefile.am create mode 100644 src/cli/peerstore/gnunet-peerstore.c create mode 100644 src/cli/peerstore/meson.build delete mode 100644 src/service/peerstore/gnunet-peerstore.c diff --git a/src/cli/identity/.gitignore b/src/cli/identity/.gitignore new file mode 100644 index 000000000..1c5862dbb --- /dev/null +++ b/src/cli/identity/.gitignore @@ -0,0 +1 @@ +gnunet-identity diff --git a/src/cli/peerstore/.gitignore b/src/cli/peerstore/.gitignore new file mode 100644 index 000000000..3ae0f6c6c --- /dev/null +++ b/src/cli/peerstore/.gitignore @@ -0,0 +1 @@ +gnunet-peerstore diff --git a/src/cli/peerstore/Makefile.am b/src/cli/peerstore/Makefile.am new file mode 100644 index 000000000..f5be82f09 --- /dev/null +++ b/src/cli/peerstore/Makefile.am @@ -0,0 +1,23 @@ +# This Makefile.am is in the public domain +AM_CPPFLAGS = -I$(top_srcdir)/src/include + +plugindir = $(libdir)/gnunet + +pkgcfgdir= $(pkgdatadir)/config.d/ + +libexecdir= $(pkglibdir)/libexec/ + +if USE_COVERAGE + AM_CFLAGS = -fprofile-arcs -ftest-coverage +endif + +# This program does not do anything. +noinst_PROGRAMS = \ + gnunet-peerstore + +gnunet_peerstore_SOURCES = \ + gnunet-peerstore.c +gnunet_peerstore_LDADD = \ + $(top_builddir)/src/lib/util/libgnunetutil.la \ + $(top_builddir)/src/service/peerstore/libgnunetpeerstore.la \ + $(GN_LIBINTL) diff --git a/src/cli/peerstore/gnunet-peerstore.c b/src/cli/peerstore/gnunet-peerstore.c new file mode 100644 index 000000000..11313b5d3 --- /dev/null +++ b/src/cli/peerstore/gnunet-peerstore.c @@ -0,0 +1,97 @@ +/* + This file is part of GNUnet. + Copyright (C) + + GNUnet is free software: you can redistribute it and/or modify it + under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, + or (at your option) any later version. + + GNUnet 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 + Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + SPDX-License-Identifier: AGPL3.0-or-later + */ + +/** + * @file peerstore/gnunet-peerstore.c + * @brief peerstore tool + * @author Omar Tarabai + */ +#include "platform.h" +#include "gnunet_util_lib.h" +#include "gnunet_peerstore_service.h" + +static int ret; + +/* + * Handle to PEERSTORE service + */ +static struct GNUNET_PEERSTORE_Handle *peerstore_handle; + + +/** + * Run on shutdown + * + * @param cls unused + */ +static void +shutdown_task (void *cls) +{ + if (NULL != peerstore_handle) + { + GNUNET_PEERSTORE_disconnect (peerstore_handle, GNUNET_YES); + peerstore_handle = NULL; + } +} + + +/** + * Main function that will be run by the scheduler. + * + * @param cls closure + * @param args remaining command-line arguments + * @param cfgfile name of the configuration file used (for saving, can be NULL!) + * @param cfg configuration + */ +static void +run (void *cls, + char *const *args, + const char *cfgfile, + const struct GNUNET_CONFIGURATION_Handle *cfg) +{ + GNUNET_SCHEDULER_add_shutdown (&shutdown_task, + NULL); + peerstore_handle = GNUNET_PEERSTORE_connect (cfg); + GNUNET_assert (NULL != peerstore_handle); + ret = 0; +} + + +/** + * The main function to peerstore. + * + * @param argc number of arguments from the command line + * @param argv command line arguments + * @return 0 ok, 1 on error + */ +int +main (int argc, char *const *argv) +{ + static const struct GNUNET_GETOPT_CommandLineOption options[] = { + GNUNET_GETOPT_OPTION_END + }; + + return (GNUNET_OK == + GNUNET_PROGRAM_run (argc, argv, "gnunet-peerstore [options [value]]", + gettext_noop ("peerstore"), options, &run, + NULL)) ? ret : 1; +} + + +/* end of gnunet-peerstore.c */ diff --git a/src/cli/peerstore/meson.build b/src/cli/peerstore/meson.build new file mode 100644 index 000000000..1fd177734 --- /dev/null +++ b/src/cli/peerstore/meson.build @@ -0,0 +1,9 @@ +executable ('gnunet-peerstore', + 'gnunet-peerstore.c', + dependencies: [libgnunetpeerstore_dep, + libgnunetutil_dep + ], + include_directories: [incdir, configuration_inc], + install: false, + install_dir: get_option('bindir')) + diff --git a/src/service/peerstore/gnunet-peerstore.c b/src/service/peerstore/gnunet-peerstore.c deleted file mode 100644 index 11313b5d3..000000000 --- a/src/service/peerstore/gnunet-peerstore.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - This file is part of GNUnet. - Copyright (C) - - GNUnet is free software: you can redistribute it and/or modify it - under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, - or (at your option) any later version. - - GNUnet 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 - Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - - SPDX-License-Identifier: AGPL3.0-or-later - */ - -/** - * @file peerstore/gnunet-peerstore.c - * @brief peerstore tool - * @author Omar Tarabai - */ -#include "platform.h" -#include "gnunet_util_lib.h" -#include "gnunet_peerstore_service.h" - -static int ret; - -/* - * Handle to PEERSTORE service - */ -static struct GNUNET_PEERSTORE_Handle *peerstore_handle; - - -/** - * Run on shutdown - * - * @param cls unused - */ -static void -shutdown_task (void *cls) -{ - if (NULL != peerstore_handle) - { - GNUNET_PEERSTORE_disconnect (peerstore_handle, GNUNET_YES); - peerstore_handle = NULL; - } -} - - -/** - * Main function that will be run by the scheduler. - * - * @param cls closure - * @param args remaining command-line arguments - * @param cfgfile name of the configuration file used (for saving, can be NULL!) - * @param cfg configuration - */ -static void -run (void *cls, - char *const *args, - const char *cfgfile, - const struct GNUNET_CONFIGURATION_Handle *cfg) -{ - GNUNET_SCHEDULER_add_shutdown (&shutdown_task, - NULL); - peerstore_handle = GNUNET_PEERSTORE_connect (cfg); - GNUNET_assert (NULL != peerstore_handle); - ret = 0; -} - - -/** - * The main function to peerstore. - * - * @param argc number of arguments from the command line - * @param argv command line arguments - * @return 0 ok, 1 on error - */ -int -main (int argc, char *const *argv) -{ - static const struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; - - return (GNUNET_OK == - GNUNET_PROGRAM_run (argc, argv, "gnunet-peerstore [options [value]]", - gettext_noop ("peerstore"), options, &run, - NULL)) ? ret : 1; -} - - -/* end of gnunet-peerstore.c */ -- cgit v1.2.3 From c7ea74d4767da3c769c8cfe90ff47bf05735bbb0 Mon Sep 17 00:00:00 2001 From: Martin Schanzenbach Date: Wed, 22 Nov 2023 20:31:41 +0100 Subject: PEERSTORE: Forgot makefile update --- src/service/peerstore/Makefile.am | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/service/peerstore/Makefile.am b/src/service/peerstore/Makefile.am index de301bbcf..6ca8e7925 100644 --- a/src/service/peerstore/Makefile.am +++ b/src/service/peerstore/Makefile.am @@ -14,23 +14,12 @@ if USE_COVERAGE AM_CFLAGS = -fprofile-arcs -ftest-coverage endif -# This program does not do anything. -noinst_PROGRAMS = \ - gnunet-peerstore - libexec_PROGRAMS = \ gnunet-service-peerstore lib_LTLIBRARIES = \ libgnunetpeerstore.la -gnunet_peerstore_SOURCES = \ - gnunet-peerstore.c -gnunet_peerstore_LDADD = \ - $(top_builddir)/src/lib/util/libgnunetutil.la \ - libgnunetpeerstore.la \ - $(GN_LIBINTL) - gnunet_service_peerstore_SOURCES = \ gnunet-service-peerstore.c \ peerstore_common.c peerstore_common.h \ -- cgit v1.2.3 From 12ab12595f5021427c4d09623f0d7bb9aac21710 Mon Sep 17 00:00:00 2001 From: Martin Schanzenbach Date: Wed, 22 Nov 2023 20:43:29 +0100 Subject: PEERSTORE: More peerstore API change missing changes --- configure.ac | 1 + po/POTFILES.in | 2 +- src/cli/Makefile.am | 1 + src/cli/meson.build | 1 + src/cli/peerstore/gnunet-peerstore.c | 2 +- src/contrib/service/rps/gnunet-service-rps.c | 2 +- src/lib/util/gnunet_error_codes.c | 1 - src/service/peerstore/perf_peerstore_store.c | 2 +- src/service/peerstore/test_peerstore_api_iterate.c | 2 +- src/service/peerstore/test_peerstore_api_sync.c | 3 +-- 10 files changed, 9 insertions(+), 8 deletions(-) diff --git a/configure.ac b/configure.ac index ae5ee9ff2..6e579e1dd 100644 --- a/configure.ac +++ b/configure.ac @@ -1327,6 +1327,7 @@ src/cli/identity/Makefile src/cli/messenger/Makefile src/cli/namecache/Makefile src/cli/namestore/Makefile +src/cli/peerstore/Makefile src/cli/nat/Makefile src/cli/nat-auto/Makefile src/cli/nse/Makefile diff --git a/po/POTFILES.in b/po/POTFILES.in index 06cff2846..4afcf48db 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -25,6 +25,7 @@ src/cli/nat-auto/gnunet-nat-auto.c src/cli/nat-auto/gnunet-nat-server.c src/cli/nat/gnunet-nat.c src/cli/nse/gnunet-nse.c +src/cli/peerstore/gnunet-peerstore.c src/cli/reclaim/gnunet-did.c src/cli/reclaim/gnunet-reclaim.c src/cli/revocation/gnunet-revocation-tvg.c @@ -393,7 +394,6 @@ src/service/nat/nat_api_stun.c src/service/nse/gnunet-nse-profiler.c src/service/nse/gnunet-service-nse.c src/service/nse/nse_api.c -src/service/peerstore/gnunet-peerstore.c src/service/peerstore/gnunet-service-peerstore.c src/service/peerstore/peerstore_api.c src/service/peerstore/peerstore_common.c diff --git a/src/cli/Makefile.am b/src/cli/Makefile.am index d7584b2c4..6ad6dd70a 100644 --- a/src/cli/Makefile.am +++ b/src/cli/Makefile.am @@ -2,6 +2,7 @@ SUBDIRS = \ util \ arm \ statistics \ + peerstore \ core \ nat \ nat-auto \ diff --git a/src/cli/meson.build b/src/cli/meson.build index 5c1fded1a..12662933d 100644 --- a/src/cli/meson.build +++ b/src/cli/meson.build @@ -1,6 +1,7 @@ subdir('util') subdir('arm') subdir('statistics') +subdir('peerstore') subdir('datastore') subdir('nat') subdir('nat-auto') diff --git a/src/cli/peerstore/gnunet-peerstore.c b/src/cli/peerstore/gnunet-peerstore.c index 11313b5d3..84cae675f 100644 --- a/src/cli/peerstore/gnunet-peerstore.c +++ b/src/cli/peerstore/gnunet-peerstore.c @@ -45,7 +45,7 @@ shutdown_task (void *cls) { if (NULL != peerstore_handle) { - GNUNET_PEERSTORE_disconnect (peerstore_handle, GNUNET_YES); + GNUNET_PEERSTORE_disconnect (peerstore_handle); peerstore_handle = NULL; } } diff --git a/src/contrib/service/rps/gnunet-service-rps.c b/src/contrib/service/rps/gnunet-service-rps.c index 76e33c87b..8ca25257a 100644 --- a/src/contrib/service/rps/gnunet-service-rps.c +++ b/src/contrib/service/rps/gnunet-service-rps.c @@ -4745,7 +4745,7 @@ shutdown_task (void *cls) /* Disconnect from other services */ GNUNET_PEERSTORE_hello_changed_notify_cancel (peerstore_notify); - GNUNET_PEERSTORE_disconnect (peerstore, GNUNET_YES); + GNUNET_PEERSTORE_disconnect (peerstore); peerstore = NULL; GNUNET_NSE_disconnect (nse); if (NULL != map_single_hop) diff --git a/src/lib/util/gnunet_error_codes.c b/src/lib/util/gnunet_error_codes.c index c286f2e52..11ce2d0c8 100644 --- a/src/lib/util/gnunet_error_codes.c +++ b/src/lib/util/gnunet_error_codes.c @@ -17,7 +17,6 @@ SPDX-License-Identifier: AGPL3.0-or-later */ -#include "platform.h" #include "gnunet_error_codes.h" #include #include diff --git a/src/service/peerstore/perf_peerstore_store.c b/src/service/peerstore/perf_peerstore_store.c index 24c7e4f01..e59af61e5 100644 --- a/src/service/peerstore/perf_peerstore_store.c +++ b/src/service/peerstore/perf_peerstore_store.c @@ -43,7 +43,7 @@ static void disconnect () { if (NULL != h) - GNUNET_PEERSTORE_disconnect (h, GNUNET_YES); + GNUNET_PEERSTORE_disconnect (h); GNUNET_SCHEDULER_shutdown (); } diff --git a/src/service/peerstore/test_peerstore_api_iterate.c b/src/service/peerstore/test_peerstore_api_iterate.c index b6cd51906..59367a110 100644 --- a/src/service/peerstore/test_peerstore_api_iterate.c +++ b/src/service/peerstore/test_peerstore_api_iterate.c @@ -58,7 +58,7 @@ iter3_cb (void *cls, } GNUNET_assert (count == 3); ok = 0; - GNUNET_PEERSTORE_disconnect (h, GNUNET_NO); + GNUNET_PEERSTORE_disconnect (h); GNUNET_SCHEDULER_shutdown (); } diff --git a/src/service/peerstore/test_peerstore_api_sync.c b/src/service/peerstore/test_peerstore_api_sync.c index 5057c98b5..4e16afae8 100644 --- a/src/service/peerstore/test_peerstore_api_sync.c +++ b/src/service/peerstore/test_peerstore_api_sync.c @@ -110,8 +110,7 @@ iterate_cb (void *cls, it = NULL; if (0 == ok) { - GNUNET_PEERSTORE_disconnect (h, - GNUNET_NO); + GNUNET_PEERSTORE_disconnect (h); if (NULL != to) { GNUNET_SCHEDULER_cancel (to); -- cgit v1.2.3 From 2f3120f189968c47c305ec7c66dba5b38bfb4170 Mon Sep 17 00:00:00 2001 From: Devan Carpenter Date: Wed, 22 Nov 2023 22:54:30 -0500 Subject: ci: move to contrib dir --- ci/Containerfile | 43 ----------------------------- ci/ci.sh | 30 -------------------- ci/jobs/0-build/build.sh | 10 ------- ci/jobs/0-build/job.sh | 6 ---- ci/jobs/2-deb-package/job.sh | 22 --------------- ci/jobs/2-deb-package/version.sh | 12 -------- ci/jobs/3-deploy-package/config.ini | 5 ---- ci/jobs/3-deploy-package/job.sh | 14 ---------- contrib/ci/Containerfile | 43 +++++++++++++++++++++++++++++ contrib/ci/ci.sh | 30 ++++++++++++++++++++ contrib/ci/jobs/0-build/build.sh | 10 +++++++ contrib/ci/jobs/0-build/job.sh | 6 ++++ contrib/ci/jobs/2-deb-package/job.sh | 22 +++++++++++++++ contrib/ci/jobs/2-deb-package/version.sh | 12 ++++++++ contrib/ci/jobs/3-deploy-package/config.ini | 5 ++++ contrib/ci/jobs/3-deploy-package/job.sh | 14 ++++++++++ 16 files changed, 142 insertions(+), 142 deletions(-) delete mode 100644 ci/Containerfile delete mode 100755 ci/ci.sh delete mode 100755 ci/jobs/0-build/build.sh delete mode 100755 ci/jobs/0-build/job.sh delete mode 100755 ci/jobs/2-deb-package/job.sh delete mode 100755 ci/jobs/2-deb-package/version.sh delete mode 100644 ci/jobs/3-deploy-package/config.ini delete mode 100755 ci/jobs/3-deploy-package/job.sh create mode 100644 contrib/ci/Containerfile create mode 100755 contrib/ci/ci.sh create mode 100755 contrib/ci/jobs/0-build/build.sh create mode 100755 contrib/ci/jobs/0-build/job.sh create mode 100755 contrib/ci/jobs/2-deb-package/job.sh create mode 100755 contrib/ci/jobs/2-deb-package/version.sh create mode 100644 contrib/ci/jobs/3-deploy-package/config.ini create mode 100755 contrib/ci/jobs/3-deploy-package/job.sh diff --git a/ci/Containerfile b/ci/Containerfile deleted file mode 100644 index e0778e7b7..000000000 --- a/ci/Containerfile +++ /dev/null @@ -1,43 +0,0 @@ -FROM docker.io/library/debian:bookworm - -ENV DEBIAN_FRONTEND=noninteractive - -RUN apt-get update -yqq && \ - apt-get upgrade -yqq && \ - apt-get install -yqq \ - git \ - autoconf \ - libextractor-dev \ - libjansson-dev \ - libgcrypt-dev \ - libqrencode-dev \ - libpq-dev \ - libmicrohttpd-dev \ - pkg-config \ - libtool \ - recutils \ - make \ - python3-sphinx \ - python3-sphinx-book-theme \ - texinfo \ - autopoint \ - curl \ - libcurl4-openssl-dev \ - libsodium-dev \ - libidn11-dev \ - zlib1g-dev \ - libunistring-dev \ - iptables - -# Debian packaging tools -RUN apt-get install -yqq \ - po-debconf \ - build-essential \ - debhelper-compat \ - devscripts \ - git-buildpackage \ - && rm -rf /var/lib/apt/lists/* - -WORKDIR /workdir - -CMD ["/bin/bash"] diff --git a/ci/ci.sh b/ci/ci.sh deleted file mode 100755 index 7dd3a957a..000000000 --- a/ci/ci.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -set -evuo pipefail - -# Use podman if available, otherwise use docker. -# Fails if neither is found in PATH -OCI_RUNTIME=$(which podman || which docker) -REPO_NAME=$(basename "${PWD}") -JOB_NAME="${1}" -JOB_CONTAINER=$((grep CONTAINER_NAME ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${REPO_NAME}") - -echo "${JOB_CONTAINER}" - -if [ "${JOB_CONTAINER}" = "${REPO_NAME}" ] ; then - "${OCI_RUNTIME}" build \ - -t "${JOB_CONTAINER}" \ - -f ci/Containerfile . -fi - -"${OCI_RUNTIME}" run \ - --rm \ - -ti \ - --env CI_COMMIT_REF="$(git rev-parse HEAD)" \ - --volume "${PWD}":/workdir \ - --workdir /workdir \ - "${JOB_CONTAINER}" \ - ci/jobs/"${JOB_NAME}"/job.sh - -top_dir=$(dirname "${BASH_SOURCE[0]}") - -#"${top_dir}"/build.sh diff --git a/ci/jobs/0-build/build.sh b/ci/jobs/0-build/build.sh deleted file mode 100755 index a5a89ca82..000000000 --- a/ci/jobs/0-build/build.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -exuo pipefail - -./bootstrap -./configure CFLAGS="-ggdb -O0" \ - --enable-logging=verbose \ - --disable-doc - -make -j $(nproc) -make install diff --git a/ci/jobs/0-build/job.sh b/ci/jobs/0-build/job.sh deleted file mode 100755 index 8d79902c5..000000000 --- a/ci/jobs/0-build/job.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -exuo pipefail - -job_dir=$(dirname "${BASH_SOURCE[0]}") - -"${job_dir}"/build.sh diff --git a/ci/jobs/2-deb-package/job.sh b/ci/jobs/2-deb-package/job.sh deleted file mode 100755 index fc1f114f4..000000000 --- a/ci/jobs/2-deb-package/job.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -set -exuo pipefail -# This file is in the public domain. -# Helper script to build the latest DEB packages in the container. - - -unset LD_LIBRARY_PATH - -# Install build-time dependencies. -# Update apt cache first -apt-get update -mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control - -export VERSION="$(./ci/jobs/2-deb-package/version.sh)" -echo "Building gnunet packages version ${VERSION}" -EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}" -./bootstrap -dpkg-buildpackage -rfakeroot -b -uc -us - -ls -alh ../*.deb -mkdir -p /artifacts/gnunet/${CI_COMMIT_REF} # Variable comes from CI environment -mv ../*.deb /artifacts/gnunet/${CI_COMMIT_REF}/ diff --git a/ci/jobs/2-deb-package/version.sh b/ci/jobs/2-deb-package/version.sh deleted file mode 100755 index 74d0099a2..000000000 --- a/ci/jobs/2-deb-package/version.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -set -ex - -git fetch origin $(git rev-parse --abbrev-ref HEAD) --depth=1000 --tags -RECENT_VERSION_TAG=$(git describe --tags --match 'v*.*.*' --always --abbrev=0 HEAD) - -commits="$(git rev-list ${RECENT_VERSION_TAG}..HEAD --count)" -if [ "${commits}" = "0" ]; then - git describe --tag HEAD -else - echo $(echo ${RECENT_VERSION_TAG} | cut -d'v' -f2)-${commits}-$(git rev-parse --short=8 HEAD) -fi diff --git a/ci/jobs/3-deploy-package/config.ini b/ci/jobs/3-deploy-package/config.ini deleted file mode 100644 index 8d6409a6e..000000000 --- a/ci/jobs/3-deploy-package/config.ini +++ /dev/null @@ -1,5 +0,0 @@ -[build] -HALT_ON_FAILURE = True -WARN_ON_FAILURE = True -CONTAINER_BUILD = False -CONTAINER_NAME = nixery.dev/shell/rsync diff --git a/ci/jobs/3-deploy-package/job.sh b/ci/jobs/3-deploy-package/job.sh deleted file mode 100755 index d53588a0f..000000000 --- a/ci/jobs/3-deploy-package/job.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -set -exuo pipefail - -ARTIFACT_PATH="/artifacts/gnunet/${CI_COMMIT_REF}/*.deb" - -RSYNC_HOST="taler.host.internal" -RSYNC_PORT=424242 -RSYNC_PATH="incoming_packages/bookworm-taler-ci/" -RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}" - - -rsync -vP \ - --port ${RSYNC_PORT} \ - ${ARTIFACT_PATH} ${RSYNC_DEST} diff --git a/contrib/ci/Containerfile b/contrib/ci/Containerfile new file mode 100644 index 000000000..e0778e7b7 --- /dev/null +++ b/contrib/ci/Containerfile @@ -0,0 +1,43 @@ +FROM docker.io/library/debian:bookworm + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update -yqq && \ + apt-get upgrade -yqq && \ + apt-get install -yqq \ + git \ + autoconf \ + libextractor-dev \ + libjansson-dev \ + libgcrypt-dev \ + libqrencode-dev \ + libpq-dev \ + libmicrohttpd-dev \ + pkg-config \ + libtool \ + recutils \ + make \ + python3-sphinx \ + python3-sphinx-book-theme \ + texinfo \ + autopoint \ + curl \ + libcurl4-openssl-dev \ + libsodium-dev \ + libidn11-dev \ + zlib1g-dev \ + libunistring-dev \ + iptables + +# Debian packaging tools +RUN apt-get install -yqq \ + po-debconf \ + build-essential \ + debhelper-compat \ + devscripts \ + git-buildpackage \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /workdir + +CMD ["/bin/bash"] diff --git a/contrib/ci/ci.sh b/contrib/ci/ci.sh new file mode 100755 index 000000000..7dd3a957a --- /dev/null +++ b/contrib/ci/ci.sh @@ -0,0 +1,30 @@ +#!/bin/bash +set -evuo pipefail + +# Use podman if available, otherwise use docker. +# Fails if neither is found in PATH +OCI_RUNTIME=$(which podman || which docker) +REPO_NAME=$(basename "${PWD}") +JOB_NAME="${1}" +JOB_CONTAINER=$((grep CONTAINER_NAME ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${REPO_NAME}") + +echo "${JOB_CONTAINER}" + +if [ "${JOB_CONTAINER}" = "${REPO_NAME}" ] ; then + "${OCI_RUNTIME}" build \ + -t "${JOB_CONTAINER}" \ + -f ci/Containerfile . +fi + +"${OCI_RUNTIME}" run \ + --rm \ + -ti \ + --env CI_COMMIT_REF="$(git rev-parse HEAD)" \ + --volume "${PWD}":/workdir \ + --workdir /workdir \ + "${JOB_CONTAINER}" \ + ci/jobs/"${JOB_NAME}"/job.sh + +top_dir=$(dirname "${BASH_SOURCE[0]}") + +#"${top_dir}"/build.sh diff --git a/contrib/ci/jobs/0-build/build.sh b/contrib/ci/jobs/0-build/build.sh new file mode 100755 index 000000000..a5a89ca82 --- /dev/null +++ b/contrib/ci/jobs/0-build/build.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -exuo pipefail + +./bootstrap +./configure CFLAGS="-ggdb -O0" \ + --enable-logging=verbose \ + --disable-doc + +make -j $(nproc) +make install diff --git a/contrib/ci/jobs/0-build/job.sh b/contrib/ci/jobs/0-build/job.sh new file mode 100755 index 000000000..8d79902c5 --- /dev/null +++ b/contrib/ci/jobs/0-build/job.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -exuo pipefail + +job_dir=$(dirname "${BASH_SOURCE[0]}") + +"${job_dir}"/build.sh diff --git a/contrib/ci/jobs/2-deb-package/job.sh b/contrib/ci/jobs/2-deb-package/job.sh new file mode 100755 index 000000000..fc1f114f4 --- /dev/null +++ b/contrib/ci/jobs/2-deb-package/job.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -exuo pipefail +# This file is in the public domain. +# Helper script to build the latest DEB packages in the container. + + +unset LD_LIBRARY_PATH + +# Install build-time dependencies. +# Update apt cache first +apt-get update +mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control + +export VERSION="$(./ci/jobs/2-deb-package/version.sh)" +echo "Building gnunet packages version ${VERSION}" +EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}" +./bootstrap +dpkg-buildpackage -rfakeroot -b -uc -us + +ls -alh ../*.deb +mkdir -p /artifacts/gnunet/${CI_COMMIT_REF} # Variable comes from CI environment +mv ../*.deb /artifacts/gnunet/${CI_COMMIT_REF}/ diff --git a/contrib/ci/jobs/2-deb-package/version.sh b/contrib/ci/jobs/2-deb-package/version.sh new file mode 100755 index 000000000..74d0099a2 --- /dev/null +++ b/contrib/ci/jobs/2-deb-package/version.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -ex + +git fetch origin $(git rev-parse --abbrev-ref HEAD) --depth=1000 --tags +RECENT_VERSION_TAG=$(git describe --tags --match 'v*.*.*' --always --abbrev=0 HEAD) + +commits="$(git rev-list ${RECENT_VERSION_TAG}..HEAD --count)" +if [ "${commits}" = "0" ]; then + git describe --tag HEAD +else + echo $(echo ${RECENT_VERSION_TAG} | cut -d'v' -f2)-${commits}-$(git rev-parse --short=8 HEAD) +fi diff --git a/contrib/ci/jobs/3-deploy-package/config.ini b/contrib/ci/jobs/3-deploy-package/config.ini new file mode 100644 index 000000000..8d6409a6e --- /dev/null +++ b/contrib/ci/jobs/3-deploy-package/config.ini @@ -0,0 +1,5 @@ +[build] +HALT_ON_FAILURE = True +WARN_ON_FAILURE = True +CONTAINER_BUILD = False +CONTAINER_NAME = nixery.dev/shell/rsync diff --git a/contrib/ci/jobs/3-deploy-package/job.sh b/contrib/ci/jobs/3-deploy-package/job.sh new file mode 100755 index 000000000..d53588a0f --- /dev/null +++ b/contrib/ci/jobs/3-deploy-package/job.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -exuo pipefail + +ARTIFACT_PATH="/artifacts/gnunet/${CI_COMMIT_REF}/*.deb" + +RSYNC_HOST="taler.host.internal" +RSYNC_PORT=424242 +RSYNC_PATH="incoming_packages/bookworm-taler-ci/" +RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}" + + +rsync -vP \ + --port ${RSYNC_PORT} \ + ${ARTIFACT_PATH} ${RSYNC_DEST} -- cgit v1.2.3 From 134c62afff16745f2144ccd06990ff92897ef175 Mon Sep 17 00:00:00 2001 From: Devan Carpenter Date: Thu, 23 Nov 2023 00:05:24 -0500 Subject: ci: set arch in deploy job config --- contrib/ci/jobs/3-deploy-package/config.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/ci/jobs/3-deploy-package/config.ini b/contrib/ci/jobs/3-deploy-package/config.ini index 8d6409a6e..08c106f9c 100644 --- a/contrib/ci/jobs/3-deploy-package/config.ini +++ b/contrib/ci/jobs/3-deploy-package/config.ini @@ -3,3 +3,4 @@ HALT_ON_FAILURE = True WARN_ON_FAILURE = True CONTAINER_BUILD = False CONTAINER_NAME = nixery.dev/shell/rsync +CONTAINER_ARCH = amd64 -- cgit v1.2.3