git: 8e1e5df81a6d - main - net/gamenetworkingsockets: add new ports.
Vanilla I. Shu
vanilla at FreeBSD.org
Tue Jun 1 15:06:27 UTC 2021
The branch main has been updated by vanilla:
URL: https://cgit.FreeBSD.org/ports/commit/?id=8e1e5df81a6deb4424f0e3f4f33bdc196dfd26ea
commit 8e1e5df81a6deb4424f0e3f4f33bdc196dfd26ea
Author: Vanilla I. Shu <vanilla at FreeBSD.org>
AuthorDate: 2021-06-01 15:03:55 +0000
Commit: Vanilla I. Shu <vanilla at 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 at disroot.org>
+
+PORTNAME= gamenetworkingsockets
+PORTVERSION= 1.3.0
+DISTVERSIONPREFIX= v
+CATEGORIES= net
+
+MAINTAINER= kpedersen at 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
More information about the dev-commits-ports-main
mailing list