Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Jun 2021 15:06:26 GMT
From:      "Vanilla I. Shu" <vanilla@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 8e1e5df81a6d - main - net/gamenetworkingsockets: add new ports.
Message-ID:  <202106011506.151F6QGX018273@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by vanilla:

URL: https://cgit.FreeBSD.org/ports/commit/?id=8e1e5df81a6deb4424f0e3f4f33bdc196dfd26ea

commit 8e1e5df81a6deb4424f0e3f4f33bdc196dfd26ea
Author:     Vanilla I. Shu <vanilla@FreeBSD.org>
AuthorDate: 2021-06-01 15:03:55 +0000
Commit:     Vanilla I. Shu <vanilla@FreeBSD.org>
CommitDate: 2021-06-01 15:03:55 +0000

    net/gamenetworkingsockets: add new ports.
    
    GameNetworkingSockets is Valve's semi-recently open-sourced networking
    library.
    
    It supports a number of very useful features, including:
    
    - Reliable & unreliable messages over UDP.
    - Robust message fragmentation & reassembly.
    - P2P networking / NAT traversal. Encryption.
    
    PR:             256295
    Reported by:    Karsten Pedersen <kpedersen at disroot.org>
---
 net/Makefile                                       |  1 +
 net/gamenetworkingsockets/Makefile                 | 24 +++++++++++++++++++
 net/gamenetworkingsockets/distinfo                 |  3 +++
 .../files/patch-include_steam_steamclientpublic.h  | 11 +++++++++
 .../files/patch-src_CMakeLists.txt                 | 10 ++++++++
 net/gamenetworkingsockets/pkg-descr                | 27 ++++++++++++++++++++++
 net/gamenetworkingsockets/pkg-plist                | 19 +++++++++++++++
 7 files changed, 95 insertions(+)

diff --git a/net/Makefile b/net/Makefile
index d2962af2565d..9dba94a11213 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -171,6 +171,7 @@
     SUBDIR += fspclient
     SUBDIR += fspd
     SUBDIR += fsplib
+    SUBDIR += gamenetworkingsockets
     SUBDIR += gdrive
     SUBDIR += gemserv
     SUBDIR += geoclue
diff --git a/net/gamenetworkingsockets/Makefile b/net/gamenetworkingsockets/Makefile
new file mode 100644
index 000000000000..f8ff540c510a
--- /dev/null
+++ b/net/gamenetworkingsockets/Makefile
@@ -0,0 +1,24 @@
+# Created by: Karsten Pedersen <kpedersen@disroot.org>
+
+PORTNAME=	gamenetworkingsockets
+PORTVERSION=	1.3.0
+DISTVERSIONPREFIX=	v
+CATEGORIES=	net
+
+MAINTAINER=	kpedersen@disroot.org
+COMMENT=	GameNetworkingSockets is a basic transport layer for games
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS=	libprotobuf.so:devel/protobuf
+
+USES=		cmake
+USE_GITHUB=	yes
+GH_ACCOUNT=	ValveSoftware
+GH_PROJECT=	GameNetworkingSockets
+
+CMAKE_ARGS=	-DGAMENETWORKINGSOCKETS_BUILD_EXAMPLES=OFF \
+		-DGAMENETWORKINGSOCKETS_BUILD_TESTS=OFF
+
+.include <bsd.port.mk>
diff --git a/net/gamenetworkingsockets/distinfo b/net/gamenetworkingsockets/distinfo
new file mode 100644
index 000000000000..6fdfd390e9fb
--- /dev/null
+++ b/net/gamenetworkingsockets/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1622554893
+SHA256 (ValveSoftware-GameNetworkingSockets-v1.3.0_GH0.tar.gz) = f473789ae8a8415dd1f5473793775e68a919d27eba18b9ba7d0a14f254afddf9
+SIZE (ValveSoftware-GameNetworkingSockets-v1.3.0_GH0.tar.gz) = 10921035
diff --git a/net/gamenetworkingsockets/files/patch-include_steam_steamclientpublic.h b/net/gamenetworkingsockets/files/patch-include_steam_steamclientpublic.h
new file mode 100644
index 000000000000..2034a2143f25
--- /dev/null
+++ b/net/gamenetworkingsockets/files/patch-include_steam_steamclientpublic.h
@@ -0,0 +1,11 @@
+--- include/steam/steamclientpublic.h.orig	2021-05-31 13:43:13 UTC
++++ include/steam/steamclientpublic.h
+@@ -1257,7 +1257,7 @@ typedef void *BREAKPAD_HANDLE;
+ 	#define VALVE_CALLBACK_PACK_LARGE
+ #else
+ 
+-	#if defined(__linux__) || defined(__APPLE__) 
++	#if defined(__linux__) || defined(__APPLE__)  || defined(__FreeBSD__)
+ 	// The 32-bit version of gcc has the alignment requirement for uint64 and double set to
+ 	// 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned.
+ 	// The 64-bit version of gcc has the alignment requirement for these types set to
diff --git a/net/gamenetworkingsockets/files/patch-src_CMakeLists.txt b/net/gamenetworkingsockets/files/patch-src_CMakeLists.txt
new file mode 100644
index 000000000000..eedb44326f3d
--- /dev/null
+++ b/net/gamenetworkingsockets/files/patch-src_CMakeLists.txt
@@ -0,0 +1,10 @@
+--- src/CMakeLists.txt.orig	2021-05-29 00:43:16 UTC
++++ src/CMakeLists.txt
+@@ -285,6 +285,7 @@ endmacro()
+ add_library(GameNetworkingSockets SHARED "")
+ add_library(GameNetworkingSockets::GameNetworkingSockets ALIAS GameNetworkingSockets)
+ add_library(GameNetworkingSockets::shared ALIAS GameNetworkingSockets)
++set_target_properties(GameNetworkingSockets PROPERTIES VERSION 1 SOVERSION 1.3.0)
+ gamenetworkingsockets_common(GameNetworkingSockets)
+ 
+ add_library(GameNetworkingSockets_s STATIC "")
diff --git a/net/gamenetworkingsockets/pkg-descr b/net/gamenetworkingsockets/pkg-descr
new file mode 100644
index 000000000000..9c0487cd113e
--- /dev/null
+++ b/net/gamenetworkingsockets/pkg-descr
@@ -0,0 +1,27 @@
+GameNetworkingSockets is a basic transport layer for games. The features are:
+
+- Connection-oriented API (like TCP)
+
+- ... but message-oriented (like UDP), not stream-oriented.
+
+- Supports both reliable and unreliable message types
+
+- Messages can be larger than underlying MTU. The protocol performs
+  fragmentation, reassembly, and retransmission for reliable messages.
+
+- A reliability layer significantly more sophisticated than a basic
+  TCP-style sliding window. It is based on the "ack vector" model
+  from DCCP (RFC 4340, section 11.4) and Google QUIC and discussed
+  in the context of games by Glenn Fiedler. The basic idea is for the
+  receiver to efficiently communicate to the sender the status of
+  every packet number (whether or not a packet was received with that
+  number). By remembering which segments were sent in each packet,
+  the sender can deduce which segments need to be retransmitted.
+
+- Encryption. AES-GCM-256 per packet, Curve25519 for key exchange
+  and cert signatures. The details for shared key derivation and
+  per-packet IV are based on the design used by Google's QUIC
+  protocol.  Tools for simulating packet latency/loss, and detailed
+  stats measurement IPv6 support Peer-to-peer networking:
+
+WWW: https://github.com/ValveSoftware/GameNetworkingSockets
diff --git a/net/gamenetworkingsockets/pkg-plist b/net/gamenetworkingsockets/pkg-plist
new file mode 100644
index 000000000000..d108d3899b4b
--- /dev/null
+++ b/net/gamenetworkingsockets/pkg-plist
@@ -0,0 +1,19 @@
+include/GameNetworkingSockets/steam/isteamnetworkingmessages.h
+include/GameNetworkingSockets/steam/isteamnetworkingsockets.h
+include/GameNetworkingSockets/steam/isteamnetworkingutils.h
+include/GameNetworkingSockets/steam/steam_api_common.h
+include/GameNetworkingSockets/steam/steamclientpublic.h
+include/GameNetworkingSockets/steam/steamclientpublic.h.orig
+include/GameNetworkingSockets/steam/steamnetworkingcustomsignaling.h
+include/GameNetworkingSockets/steam/steamnetworkingsockets.h
+include/GameNetworkingSockets/steam/steamnetworkingsockets_flat.h
+include/GameNetworkingSockets/steam/steamnetworkingtypes.h
+include/GameNetworkingSockets/steam/steamtypes.h
+include/GameNetworkingSockets/steam/steamuniverse.h
+lib/cmake/GameNetworkingSockets/GameNetworkingSockets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/GameNetworkingSockets/GameNetworkingSockets.cmake
+lib/cmake/GameNetworkingSockets/GameNetworkingSocketsConfig.cmake
+lib/libGameNetworkingSockets.so
+lib/libGameNetworkingSockets.so.1
+lib/libGameNetworkingSockets.so.1.3.0
+lib/libGameNetworkingSockets_s.a



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202106011506.151F6QGX018273>