uringmachine 0.24.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitmodules +0 -3
  4. data/CHANGELOG.md +13 -0
  5. data/Gemfile +11 -0
  6. data/README.md +266 -112
  7. data/Rakefile +8 -0
  8. data/TODO.md +14 -21
  9. data/benchmark/common.rb +2 -0
  10. data/benchmark/openssl.rb +77 -0
  11. data/benchmark/openssl_socketpair.rb +112 -0
  12. data/benchmark/sqlite.rb +1 -1
  13. data/docs/design/buffer_pool.md +1 -1
  14. data/docs/wroclove.rb.md +52 -0
  15. data/ext/um/extconf.rb +15 -0
  16. data/ext/um/um.c +392 -358
  17. data/ext/um/um.h +48 -23
  18. data/ext/um/um_async_op.c +9 -8
  19. data/ext/um/um_async_op_class.c +34 -3
  20. data/ext/um/um_class.c +705 -19
  21. data/ext/um/um_const.c +31 -0
  22. data/ext/um/um_mutex_class.c +12 -0
  23. data/ext/um/um_op.c +15 -1
  24. data/ext/um/um_queue_class.c +16 -0
  25. data/ext/um/um_ssl.c +109 -0
  26. data/ext/um/um_stream.c +9 -8
  27. data/ext/um/um_sync.c +18 -11
  28. data/ext/um/um_utils.c +17 -8
  29. data/grant-2025/interim-report.md +1 -1
  30. data/grant-2025/journal.md +4 -4
  31. data/grant-2025/tasks.md +6 -4
  32. data/lib/uringmachine/dns_resolver.rb +38 -0
  33. data/lib/uringmachine/fiber_scheduler.rb +7 -5
  34. data/lib/uringmachine/version.rb +1 -1
  35. data/lib/uringmachine.rb +106 -6
  36. data/test/helper.rb +15 -0
  37. data/test/test_async_op.rb +3 -2
  38. data/test/test_fiber_scheduler.rb +41 -1
  39. data/test/test_ssl.rb +85 -0
  40. data/test/test_stream.rb +11 -0
  41. data/test/test_um.rb +445 -11
  42. data/uringmachine.gemspec +1 -7
  43. data/vendor/liburing/examples/send-zerocopy.c +43 -31
  44. data/vendor/liburing/examples/zcrx.c +260 -69
  45. data/vendor/liburing/liburing.spec +1 -1
  46. data/vendor/liburing/src/include/liburing/io_uring.h +12 -0
  47. data/vendor/liburing/src/include/liburing.h +3 -2
  48. data/vendor/liburing/src/liburing-ffi.map +4 -0
  49. data/vendor/liburing/src/liburing.map +4 -0
  50. data/vendor/liburing/src/queue.c +12 -0
  51. data/vendor/liburing/src/register.c +1 -0
  52. data/vendor/liburing/src/setup.c +15 -7
  53. data/vendor/liburing/test/Makefile +8 -4
  54. data/vendor/liburing/test/conn-unreach.c +1 -1
  55. data/vendor/liburing/test/epwait.c +32 -6
  56. data/vendor/liburing/test/io-wq-exit.c +131 -0
  57. data/vendor/liburing/test/iowait.c +1 -1
  58. data/vendor/liburing/test/min-timeout.c +3 -1
  59. data/vendor/liburing/test/open-close.c +39 -0
  60. data/vendor/liburing/test/poll-update-trigger.c +85 -0
  61. data/vendor/liburing/test/recvsend_bundle.c +14 -11
  62. data/vendor/liburing/test/sendzc-bug.c +146 -0
  63. data/vendor/liburing/test/sqe-mixed-nop.c +151 -7
  64. data/vendor/liburing/test/test.h +2 -0
  65. data/vendor/liburing/test/timestamp-bug.c +135 -0
  66. data/vendor/liburing/test/timestamp.c +5 -0
  67. data/vendor/liburing/test/vec-regbuf.c +136 -1
  68. metadata +38 -283
  69. data/vendor/libressl/.github/scripts/changelog.sh +0 -74
  70. data/vendor/libressl/.github/workflows/android.yml +0 -35
  71. data/vendor/libressl/.github/workflows/cifuzz.yml +0 -33
  72. data/vendor/libressl/.github/workflows/cmake-config.yml +0 -98
  73. data/vendor/libressl/.github/workflows/coverity.yml +0 -69
  74. data/vendor/libressl/.github/workflows/emscripten.yml +0 -71
  75. data/vendor/libressl/.github/workflows/fedora-rawhide.yml +0 -39
  76. data/vendor/libressl/.github/workflows/freebsd.yml +0 -71
  77. data/vendor/libressl/.github/workflows/linux.yml +0 -71
  78. data/vendor/libressl/.github/workflows/macos.yml +0 -37
  79. data/vendor/libressl/.github/workflows/release.yml +0 -81
  80. data/vendor/libressl/.github/workflows/rust-openssl.yml +0 -47
  81. data/vendor/libressl/.github/workflows/solaris.yml +0 -37
  82. data/vendor/libressl/.github/workflows/windows.yml +0 -70
  83. data/vendor/libressl/.gitignore +0 -333
  84. data/vendor/libressl/CMakeLists.txt +0 -581
  85. data/vendor/libressl/COPYING +0 -133
  86. data/vendor/libressl/ChangeLog +0 -3280
  87. data/vendor/libressl/FindLibreSSL.cmake +0 -232
  88. data/vendor/libressl/LibreSSLConfig.cmake.in +0 -36
  89. data/vendor/libressl/Makefile.am +0 -60
  90. data/vendor/libressl/Makefile.am.common +0 -20
  91. data/vendor/libressl/OPENBSD_BRANCH +0 -1
  92. data/vendor/libressl/README.md +0 -238
  93. data/vendor/libressl/README.mingw.md +0 -43
  94. data/vendor/libressl/apps/CMakeLists.txt +0 -18
  95. data/vendor/libressl/apps/Makefile.am +0 -5
  96. data/vendor/libressl/apps/nc/CMakeLists.txt +0 -67
  97. data/vendor/libressl/apps/nc/Makefile.am +0 -64
  98. data/vendor/libressl/apps/nc/compat/accept4.c +0 -17
  99. data/vendor/libressl/apps/nc/compat/readpassphrase.c +0 -205
  100. data/vendor/libressl/apps/nc/compat/socket.c +0 -29
  101. data/vendor/libressl/apps/nc/compat/sys/socket.h +0 -30
  102. data/vendor/libressl/apps/ocspcheck/CMakeLists.txt +0 -44
  103. data/vendor/libressl/apps/ocspcheck/Makefile.am +0 -45
  104. data/vendor/libressl/apps/ocspcheck/compat/.gitignore +0 -0
  105. data/vendor/libressl/apps/openssl/CMakeLists.txt +0 -97
  106. data/vendor/libressl/apps/openssl/Makefile.am +0 -108
  107. data/vendor/libressl/apps/openssl/apps_win.c +0 -138
  108. data/vendor/libressl/apps/openssl/certhash_win.c +0 -13
  109. data/vendor/libressl/apps/openssl/compat/clock_gettime_osx.c +0 -26
  110. data/vendor/libressl/apps/openssl/compat/poll_win.c +0 -329
  111. data/vendor/libressl/appveyor.yml +0 -53
  112. data/vendor/libressl/autogen.sh +0 -15
  113. data/vendor/libressl/check-release.sh +0 -86
  114. data/vendor/libressl/cmake_export_symbol.cmake +0 -71
  115. data/vendor/libressl/cmake_uninstall.cmake.in +0 -36
  116. data/vendor/libressl/config +0 -17
  117. data/vendor/libressl/configure.ac +0 -165
  118. data/vendor/libressl/crypto/CMakeLists.txt +0 -863
  119. data/vendor/libressl/crypto/Makefile.am +0 -962
  120. data/vendor/libressl/crypto/Makefile.am.arc4random +0 -46
  121. data/vendor/libressl/crypto/Makefile.am.elf-mips +0 -14
  122. data/vendor/libressl/crypto/Makefile.am.elf-mips64 +0 -14
  123. data/vendor/libressl/crypto/Makefile.am.elf-x86_64 +0 -35
  124. data/vendor/libressl/crypto/Makefile.am.macosx-x86_64 +0 -35
  125. data/vendor/libressl/crypto/Makefile.am.masm-x86_64 +0 -22
  126. data/vendor/libressl/crypto/Makefile.am.mingw64-x86_64 +0 -23
  127. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_darwin.c +0 -60
  128. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_linux.c +0 -62
  129. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_none.c +0 -26
  130. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_windows.c +0 -36
  131. data/vendor/libressl/crypto/arch/loongarch64/crypto_arch.h +0 -21
  132. data/vendor/libressl/crypto/arch/mips/crypto_arch.h +0 -21
  133. data/vendor/libressl/crypto/bn/arch/loongarch64/bn_arch.h +0 -23
  134. data/vendor/libressl/crypto/bn/arch/mips/bn_arch.h +0 -24
  135. data/vendor/libressl/crypto/compat/.gitignore +0 -31
  136. data/vendor/libressl/crypto/compat/arc4random.h +0 -41
  137. data/vendor/libressl/crypto/compat/b_win.c +0 -55
  138. data/vendor/libressl/crypto/compat/bsd-asprintf.c +0 -96
  139. data/vendor/libressl/crypto/compat/crypto_lock_win.c +0 -56
  140. data/vendor/libressl/crypto/compat/explicit_bzero_win.c +0 -13
  141. data/vendor/libressl/crypto/compat/freezero.c +0 -32
  142. data/vendor/libressl/crypto/compat/getdelim.c +0 -78
  143. data/vendor/libressl/crypto/compat/getline.c +0 -40
  144. data/vendor/libressl/crypto/compat/getopt_long.c +0 -528
  145. data/vendor/libressl/crypto/compat/getpagesize.c +0 -18
  146. data/vendor/libressl/crypto/compat/getprogname_linux.c +0 -23
  147. data/vendor/libressl/crypto/compat/getprogname_unimpl.c +0 -7
  148. data/vendor/libressl/crypto/compat/getprogname_windows.c +0 -13
  149. data/vendor/libressl/crypto/compat/posix_win.c +0 -296
  150. data/vendor/libressl/crypto/compat/syslog_r.c +0 -19
  151. data/vendor/libressl/crypto/compat/ui_openssl_win.c +0 -334
  152. data/vendor/libressl/dist.sh +0 -22
  153. data/vendor/libressl/gen-coverage-report.sh +0 -58
  154. data/vendor/libressl/gen-openbsd-tags.sh +0 -20
  155. data/vendor/libressl/include/CMakeLists.txt +0 -61
  156. data/vendor/libressl/include/Makefile.am +0 -79
  157. data/vendor/libressl/include/arch/loongarch64/opensslconf.h +0 -150
  158. data/vendor/libressl/include/arch/mips/opensslconf.h +0 -150
  159. data/vendor/libressl/include/compat/arpa/inet.h +0 -15
  160. data/vendor/libressl/include/compat/arpa/nameser.h +0 -25
  161. data/vendor/libressl/include/compat/cet.h +0 -19
  162. data/vendor/libressl/include/compat/dirent.h +0 -17
  163. data/vendor/libressl/include/compat/dirent_msvc.h +0 -611
  164. data/vendor/libressl/include/compat/endian.h +0 -161
  165. data/vendor/libressl/include/compat/err.h +0 -95
  166. data/vendor/libressl/include/compat/fcntl.h +0 -32
  167. data/vendor/libressl/include/compat/getopt.h +0 -50
  168. data/vendor/libressl/include/compat/limits.h +0 -25
  169. data/vendor/libressl/include/compat/netdb.h +0 -10
  170. data/vendor/libressl/include/compat/netinet/in.h +0 -19
  171. data/vendor/libressl/include/compat/netinet/ip.h +0 -49
  172. data/vendor/libressl/include/compat/netinet/tcp.h +0 -10
  173. data/vendor/libressl/include/compat/poll.h +0 -63
  174. data/vendor/libressl/include/compat/pthread.h +0 -122
  175. data/vendor/libressl/include/compat/readpassphrase.h +0 -44
  176. data/vendor/libressl/include/compat/resolv.h +0 -24
  177. data/vendor/libressl/include/compat/stdint.h +0 -31
  178. data/vendor/libressl/include/compat/stdio.h +0 -65
  179. data/vendor/libressl/include/compat/stdlib.h +0 -57
  180. data/vendor/libressl/include/compat/string.h +0 -98
  181. data/vendor/libressl/include/compat/sys/_null.h +0 -18
  182. data/vendor/libressl/include/compat/sys/ioctl.h +0 -11
  183. data/vendor/libressl/include/compat/sys/mman.h +0 -19
  184. data/vendor/libressl/include/compat/sys/param.h +0 -15
  185. data/vendor/libressl/include/compat/sys/queue.h +0 -536
  186. data/vendor/libressl/include/compat/sys/select.h +0 -10
  187. data/vendor/libressl/include/compat/sys/socket.h +0 -18
  188. data/vendor/libressl/include/compat/sys/stat.h +0 -129
  189. data/vendor/libressl/include/compat/sys/time.h +0 -37
  190. data/vendor/libressl/include/compat/sys/tree.h +0 -1006
  191. data/vendor/libressl/include/compat/sys/types.h +0 -69
  192. data/vendor/libressl/include/compat/sys/uio.h +0 -17
  193. data/vendor/libressl/include/compat/syslog.h +0 -38
  194. data/vendor/libressl/include/compat/time.h +0 -59
  195. data/vendor/libressl/include/compat/unistd.h +0 -83
  196. data/vendor/libressl/include/compat/win32netcompat.h +0 -57
  197. data/vendor/libressl/include/openssl/Makefile.am.tpl +0 -45
  198. data/vendor/libressl/libcrypto.pc.in +0 -28
  199. data/vendor/libressl/libressl.pub +0 -2
  200. data/vendor/libressl/libssl.pc.in +0 -28
  201. data/vendor/libressl/libtls.pc.in +0 -28
  202. data/vendor/libressl/m4/ax_add_fortify_source.m4 +0 -80
  203. data/vendor/libressl/m4/ax_check_compile_flag.m4 +0 -53
  204. data/vendor/libressl/m4/check-hardening-options.m4 +0 -110
  205. data/vendor/libressl/m4/check-libc.m4 +0 -189
  206. data/vendor/libressl/m4/check-os-options.m4 +0 -181
  207. data/vendor/libressl/m4/disable-compiler-warnings.m4 +0 -44
  208. data/vendor/libressl/man/CMakeLists.txt +0 -26
  209. data/vendor/libressl/man/links +0 -2780
  210. data/vendor/libressl/man/update_links.sh +0 -25
  211. data/vendor/libressl/openssl.pc.in +0 -11
  212. data/vendor/libressl/patches/bn_shift.patch +0 -34
  213. data/vendor/libressl/patches/crypto_arch.h.patch +0 -34
  214. data/vendor/libressl/patches/crypto_namespace.h.patch +0 -22
  215. data/vendor/libressl/patches/netcat.c.patch +0 -178
  216. data/vendor/libressl/patches/openssl.c.patch +0 -12
  217. data/vendor/libressl/patches/opensslfeatures.h.patch +0 -49
  218. data/vendor/libressl/patches/patch-amd64-crypto-cpu-caps.c.patch +0 -20
  219. data/vendor/libressl/patches/patch-i386-crypto-cpu-caps.c.patch +0 -20
  220. data/vendor/libressl/patches/speed.c.patch +0 -114
  221. data/vendor/libressl/patches/ssl_namespace.h.patch +0 -21
  222. data/vendor/libressl/patches/tls.h.patch +0 -16
  223. data/vendor/libressl/patches/tls_config.c.patch +0 -15
  224. data/vendor/libressl/patches/win32_amd64_bn_arch.h.patch +0 -28
  225. data/vendor/libressl/patches/windows_headers.patch +0 -80
  226. data/vendor/libressl/scripts/config.guess +0 -1774
  227. data/vendor/libressl/scripts/config.sub +0 -1907
  228. data/vendor/libressl/scripts/i686-w64-mingw32.cmake +0 -9
  229. data/vendor/libressl/scripts/test +0 -210
  230. data/vendor/libressl/scripts/wrap-compiler-for-flag-check +0 -31
  231. data/vendor/libressl/scripts/x86_64-w64-mingw32.cmake +0 -9
  232. data/vendor/libressl/ssl/CMakeLists.txt +0 -183
  233. data/vendor/libressl/ssl/Makefile.am +0 -187
  234. data/vendor/libressl/tests/CMakeLists.txt +0 -970
  235. data/vendor/libressl/tests/Makefile.am +0 -944
  236. data/vendor/libressl/tests/aeadtest.sh +0 -30
  237. data/vendor/libressl/tests/arc4randomforktest.sh +0 -21
  238. data/vendor/libressl/tests/asn1time_small.test +0 -10
  239. data/vendor/libressl/tests/cmake/CMakeLists.txt +0 -52
  240. data/vendor/libressl/tests/cmake/crypto.c +0 -7
  241. data/vendor/libressl/tests/cmake/ssl.c +0 -6
  242. data/vendor/libressl/tests/cmake/tls.c +0 -6
  243. data/vendor/libressl/tests/compat/pipe2.c +0 -186
  244. data/vendor/libressl/tests/dtlstest.sh +0 -28
  245. data/vendor/libressl/tests/evptest.sh +0 -22
  246. data/vendor/libressl/tests/keypairtest.sh +0 -27
  247. data/vendor/libressl/tests/mlkem_tests.sh +0 -39
  248. data/vendor/libressl/tests/ocsptest.bat +0 -25
  249. data/vendor/libressl/tests/ocsptest.sh +0 -23
  250. data/vendor/libressl/tests/openssl.cnf +0 -29
  251. data/vendor/libressl/tests/optionstest.c +0 -381
  252. data/vendor/libressl/tests/pidwraptest.c +0 -85
  253. data/vendor/libressl/tests/pidwraptest.sh +0 -26
  254. data/vendor/libressl/tests/quictest.bat +0 -27
  255. data/vendor/libressl/tests/quictest.sh +0 -30
  256. data/vendor/libressl/tests/renegotiation_test.bat +0 -27
  257. data/vendor/libressl/tests/renegotiation_test.sh +0 -30
  258. data/vendor/libressl/tests/rfc5280time_small.test +0 -10
  259. data/vendor/libressl/tests/servertest.bat +0 -27
  260. data/vendor/libressl/tests/servertest.sh +0 -30
  261. data/vendor/libressl/tests/shutdowntest.bat +0 -27
  262. data/vendor/libressl/tests/shutdowntest.sh +0 -30
  263. data/vendor/libressl/tests/ssltest.bat +0 -32
  264. data/vendor/libressl/tests/ssltest.sh +0 -48
  265. data/vendor/libressl/tests/testdsa.bat +0 -47
  266. data/vendor/libressl/tests/testdsa.sh +0 -57
  267. data/vendor/libressl/tests/testenc.bat +0 -85
  268. data/vendor/libressl/tests/testenc.sh +0 -93
  269. data/vendor/libressl/tests/testrsa.bat +0 -47
  270. data/vendor/libressl/tests/testrsa.sh +0 -57
  271. data/vendor/libressl/tests/testssl.bat +0 -171
  272. data/vendor/libressl/tests/tlstest.bat +0 -27
  273. data/vendor/libressl/tests/tlstest.sh +0 -28
  274. data/vendor/libressl/tls/CMakeLists.txt +0 -125
  275. data/vendor/libressl/tls/Makefile.am +0 -76
  276. data/vendor/libressl/tls/compat/ftruncate.c +0 -17
  277. data/vendor/libressl/tls/compat/pread.c +0 -29
  278. data/vendor/libressl/tls/compat/pwrite.c +0 -29
  279. data/vendor/libressl/update.sh +0 -460
@@ -1,460 +0,0 @@
1
- #!/bin/sh
2
- #
3
- # Copyright (c) 2014 Brent Cook
4
- #
5
- # Permission to use, copy, modify, and distribute this software for any
6
- # purpose with or without fee is hereby granted, provided that the above
7
- # copyright notice and this permission notice appear in all copies.
8
- #
9
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
-
17
- set -e
18
-
19
- openbsd_branch=`cat OPENBSD_BRANCH`
20
-
21
- # pull in latest upstream code
22
- echo "pulling upstream openbsd source"
23
- if [ ! -d openbsd ]; then
24
- LIBRESSL_GIT_OPTIONS="${LIBRESSL_GIT_OPTIONS:- --depth=8}"
25
- LIBRESSL_GIT="${LIBRESSL_GIT:- https://github.com/libressl}"
26
- git clone $LIBRESSL_GIT_OPTIONS $LIBRESSL_GIT/openbsd
27
- fi
28
-
29
- # pull either the latest or if on a tag, the matching tag
30
- set +e
31
- tag=`git describe --exact-match --tags HEAD 2>/dev/null`
32
- is_tag=$?
33
- # adjust for 9 hour time delta between trees
34
- release_ts=$((`git show -s --format=%ct $tag|tail -1` + 32400))
35
- commit=`git -C openbsd rev-list -n 1 --before=$release_ts $openbsd_branch`
36
- git -C openbsd fetch
37
- if [ $is_tag -eq 0 ]; then
38
- echo "This is tag $tag, trying OpenBSD tag libressl-$tag"
39
- if ! git -C openbsd checkout "libressl-$tag"; then
40
- echo "No matching OpenBSD tag found trying nearest commit $commit"
41
- git -C openbsd checkout -q $commit
42
- fi
43
- else
44
- echo "Not on a tag, grabbing latest (NOTE: this may be broken from time to time)"
45
- git -C openbsd checkout $openbsd_branch
46
- git -C openbsd pull
47
- fi
48
- set -e
49
-
50
- # setup source paths
51
- CWD=`pwd`
52
- OPENBSD_SRC=$CWD/openbsd/src
53
- libc_src=$OPENBSD_SRC/lib/libc
54
- libc_regress=$OPENBSD_SRC/regress/lib/libc
55
- libcrypto_src=$OPENBSD_SRC/lib/libcrypto
56
- libcrypto_regress=$OPENBSD_SRC/regress/lib/libcrypto
57
- libssl_src=$OPENBSD_SRC/lib/libssl
58
- libssl_regress=$OPENBSD_SRC/regress/lib/libssl
59
- libtls_src=$OPENBSD_SRC/lib/libtls
60
- libtls_regress=$OPENBSD_SRC/regress/lib/libtls
61
- bin_src=$OPENBSD_SRC/usr.bin
62
- sbin_src=$OPENBSD_SRC/usr.sbin
63
-
64
- # load library versions
65
- . "$libcrypto_src/shlib_version"
66
- libcrypto_version=$major:$minor:0
67
- echo "libcrypto version $libcrypto_version"
68
- echo $libcrypto_version > crypto/VERSION
69
-
70
- . "$libssl_src/shlib_version"
71
- libssl_version=$major:$minor:0
72
- echo "libssl version $libssl_version"
73
- echo $libssl_version > ssl/VERSION
74
-
75
- . "$libtls_src/shlib_version"
76
- libtls_version=$major:$minor:0
77
- echo "libtls version $libtls_version"
78
- echo $libtls_version > tls/VERSION
79
-
80
- do_mv() {
81
- if ! cmp -s "$1" "$2"
82
- then
83
- mv "$1" "$2"
84
- else
85
- rm -f "$1"
86
- fi
87
- }
88
- MV='do_mv'
89
-
90
- do_cp_libc() {
91
- sed "/DEF_WEAK/d" < "$1" > "$2"/`basename "$1"`
92
- }
93
- CP_LIBC='do_cp_libc'
94
-
95
- CP='cp -p'
96
- GREP='grep'
97
- if [ -x /opt/csw/bin/ggrep ]; then
98
- GREP='/opt/csw/bin/ggrep'
99
- fi
100
-
101
- $CP $libcrypto_src/opensslfeatures.h include/openssl
102
- $CP $libssl_src/pqueue.h include
103
-
104
- $CP $libtls_src/tls.h include
105
-
106
- for i in crypto/compat; do
107
- for j in $libc_src/crypt/arc4random.c \
108
- $libc_src/crypt/arc4random_uniform.c \
109
- $libc_src/crypt/chacha_private.h \
110
- $libc_src/stdlib/reallocarray.c \
111
- $libc_src/stdlib/recallocarray.c \
112
- $libc_src/stdlib/strtonum.c \
113
- $libc_src/string/explicit_bzero.c \
114
- $libc_src/string/strcasecmp.c \
115
- $libc_src/string/strlcpy.c \
116
- $libc_src/string/strlcat.c \
117
- $libc_src/string/strndup.c \
118
- $libc_src/string/strnlen.c \
119
- $libc_src/string/strsep.c \
120
- $libc_src/string/timingsafe_bcmp.c \
121
- $libc_src/string/timingsafe_memcmp.c \
122
- $libcrypto_src/arc4random/getentropy_*.c \
123
- $libcrypto_src/arc4random/arc4random_*.h; do
124
- $CP_LIBC $j $i
125
- done
126
- done
127
-
128
- (cd $libcrypto_src/objects/;
129
- perl objects.pl objects.txt obj_mac.num obj_mac.h;
130
- perl obj_dat.pl obj_mac.h obj_dat.h )
131
- mkdir -p include/openssl crypto/objects
132
- $MV $libcrypto_src/objects/obj_mac.h ./include/openssl/obj_mac.h
133
- $MV $libcrypto_src/objects/obj_dat.h ./crypto/objects/obj_dat.h
134
-
135
- copy_hdrs() {
136
- for file in $2; do
137
- $CP $1/$file include/openssl
138
- done
139
- }
140
-
141
- copy_hdrs $libcrypto_src "stack/stack.h lhash/lhash.h stack/safestack.h
142
- ossl_typ.h err/err.h crypto.h comp/comp.h x509/x509.h buffer/buffer.h
143
- objects/objects.h asn1/asn1.h asn1/posix_time.h bn/bn.h ec/ec.h ecdsa/ecdsa.h
144
- ecdh/ecdh.h rsa/rsa.h sha/sha.h x509/x509_vfy.h pkcs7/pkcs7.h pem/pem.h
145
- hkdf/hkdf.h hmac/hmac.h rand/rand.h md5/md5.h
146
- x509/x509v3.h conf/conf.h ocsp/ocsp.h
147
- aes/aes.h modes/modes.h asn1/asn1t.h bf/blowfish.h
148
- bio/bio.h cast/cast.h cmac/cmac.h cms/cms.h des/des.h dh/dh.h
149
- dsa/dsa.h engine/engine.h ui/ui.h pkcs12/pkcs12.h ts/ts.h
150
- md4/md4.h ripemd/ripemd.h idea/idea.h
151
- rc2/rc2.h rc4/rc4.h txt_db/txt_db.h
152
- sm3/sm3.h sm4/sm4.h chacha/chacha.h evp/evp.h poly1305/poly1305.h
153
- camellia/camellia.h curve25519/curve25519.h
154
- ct/ct.h kdf/kdf.h"
155
-
156
- copy_hdrs $libssl_src "srtp.h ssl.h ssl3.h tls1.h dtls1.h"
157
-
158
- # override upstream opensslv.h if a local version exists
159
- if [ -f patches/opensslv.h ]; then
160
- $CP patches/opensslv.h include/openssl
161
- else
162
- $CP $libcrypto_src/opensslv.h include/openssl
163
- fi
164
-
165
- awk '/LIBRESSL_VERSION_TEXT/ {print $4}' < include/openssl/opensslv.h | cut -d\" -f1 | head -n1 > VERSION
166
- echo "LibreSSL version `cat VERSION`"
167
-
168
- # copy libcrypto source
169
- echo copying libcrypto source
170
- rm -f crypto/*.c crypto/*.h
171
- touch crypto/empty.c
172
- for i in `awk '/SOURCES|HEADERS/ { print $3 }' crypto/Makefile.am` ; do
173
- dir=`dirname $i`
174
- mkdir -p crypto/$dir
175
- if [ $dir != "compat" ]; then
176
- if [ -e $libcrypto_src/$i ]; then
177
- $CP $libcrypto_src/$i crypto/$i
178
- fi
179
- fi
180
- done
181
-
182
- for i in $libcrypto_src/arch/*; do
183
- arch=`basename $i`
184
- mkdir -p include/arch/$arch
185
- $CP $libcrypto_src/arch/$arch/opensslconf.h include/arch/$arch/
186
- mkdir -p crypto/arch/$arch
187
- $CP $libcrypto_src/arch/$arch/crypto_arch.h crypto/arch/$arch/
188
- crypto_cpu_caps=$libcrypto_src/arch/$arch/crypto_cpu_caps.c
189
- if [ -f "$crypto_cpu_caps" ]; then
190
- $CP "$crypto_cpu_caps" crypto/arch/$arch/
191
- fi
192
- done
193
-
194
- for i in $libcrypto_src/bn/arch/*; do
195
- arch=`basename $i`
196
- mkdir -p crypto/bn/arch/$arch
197
- $CP $libcrypto_src/bn/arch/$arch/* crypto/bn/arch/$arch/
198
- done
199
-
200
- $CP crypto/compat/b_win.c crypto/bio
201
- $CP crypto/compat/ui_openssl_win.c crypto/ui
202
- # add the libcrypto symbol export list
203
- $GREP -v OPENSSL_ia32cap_P $libcrypto_src/Symbols.list | $GREP '^[A-Za-z0-9_]' > crypto/crypto.sym
204
-
205
- fixup_masm() {
206
- cpp -I./crypto -I./include/compat -D_MSC_VER -U__CET__ $1 \
207
- | sed -e 's/^#/;/' \
208
- | sed -e 's/|/OR/g' \
209
- | sed -e 's/~/NOT/g' \
210
- | sed -e 's/1 << \([0-9]*\)/1 SHL \1/g' \
211
- > $2
212
- }
213
-
214
- # generate assembly crypto algorithms
215
- asm_src=$libcrypto_src
216
-
217
- gen_asm_stdout() {
218
- CC=true perl $asm_src/$2 $1 > crypto/$3.tmp
219
- [ $1 = "elf" ] && cat <<-EOF >> crypto/$3.tmp
220
- #if defined(HAVE_GNU_STACK)
221
- .section .note.GNU-stack,"",%progbits
222
- #endif
223
- EOF
224
- if [ $1 = "masm" ]; then
225
- fixup_masm crypto/$3.tmp crypto/$3
226
- rm crypto/$3.tmp
227
- else
228
- $MV crypto/$3.tmp crypto/$3
229
- fi
230
- }
231
-
232
- gen_asm_mips() {
233
- abi=$1
234
- dir=$2
235
- src=$3
236
- dst=$4
237
- CC=true perl $asm_src/$dir/asm/$src.pl $abi $dst.S
238
- cat <<-EOF >> $dst.S
239
- #if defined(HAVE_GNU_STACK)
240
- .section .note.GNU-stack,"",%progbits
241
- #endif
242
- EOF
243
- mv $dst.S crypto/$dir/$dst.S
244
- }
245
-
246
- gen_asm() {
247
- CC=true perl $asm_src/$2 $1 crypto/$3.tmp
248
- [ $1 = "elf" ] && cat <<-EOF >> crypto/$3.tmp
249
- #if defined(HAVE_GNU_STACK)
250
- .section .note.GNU-stack,"",%progbits
251
- #endif
252
- EOF
253
- if [ $1 = "masm" ]; then
254
- fixup_masm crypto/$3.tmp crypto/$3
255
- rm crypto/$3.tmp
256
- else
257
- $MV crypto/$3.tmp crypto/$3
258
- fi
259
- }
260
-
261
- echo generating mips ASM source for elf
262
- gen_asm_mips o32 aes aes-mips aes-mips
263
- gen_asm_mips o32 bn mips bn-mips
264
- gen_asm_mips o32 bn mips-mont mont-mips
265
- gen_asm_mips o32 sha sha1-mips sha1-mips
266
- gen_asm_mips o32 sha sha512-mips sha256-mips
267
- gen_asm_mips o32 sha sha512-mips sha512-mips
268
-
269
- echo generating mips64 ASM source for elf
270
- gen_asm_mips 64 aes aes-mips aes-mips64
271
- gen_asm_mips 64 bn mips bn-mips64
272
- gen_asm_mips 64 bn mips-mont mont-mips64
273
- gen_asm_mips 64 sha sha1-mips sha1-mips64
274
- gen_asm_mips 64 sha sha512-mips sha256-mips64
275
- gen_asm_mips 64 sha sha512-mips sha512-mips64
276
-
277
- for abi in elf macosx masm mingw64; do
278
- echo generating x86_64 ASM source for $abi
279
-
280
- gen_asm_stdout $abi aes/asm/aes-x86_64.pl aes/aes-$abi-x86_64.S
281
- gen_asm_stdout $abi aes/asm/aesni-x86_64.pl aes/aesni-$abi-x86_64.S
282
- gen_asm_stdout $abi bn/asm/modexp512-x86_64.pl bn/modexp512-$abi-x86_64.S
283
- gen_asm_stdout $abi bn/asm/x86_64-mont.pl bn/mont-$abi-x86_64.S
284
- gen_asm_stdout $abi bn/asm/x86_64-mont5.pl bn/mont5-$abi-x86_64.S
285
- gen_asm_stdout $abi modes/asm/ghash-x86_64.pl modes/ghash-$abi-x86_64.S
286
- gen_asm_stdout $abi rc4/asm/rc4-x86_64.pl rc4/rc4-$abi-x86_64.S
287
- done
288
-
289
- # copy libtls source
290
- echo copying libtls source
291
- rm -f tls/*.c tls/*.h libtls/src/*.c libtls/src/*.h
292
- touch tls/empty.c
293
- for i in `awk '/SOURCES|HEADERS/ { print $3 }' tls/Makefile.am` ; do
294
- if [ -e $libtls_src/$i ]; then
295
- $CP $libtls_src/$i tls
296
- fi
297
- done
298
- # add the libtls symbol export list
299
- $GREP '^[A-Za-z0-9_]' < $libtls_src/Symbols.list > tls/tls.sym
300
-
301
- # copy nc(1) source
302
- echo "copying nc(1) source"
303
- $CP $bin_src/nc/nc.1 apps/nc
304
- rm -f apps/nc/*.c apps/nc/*.h
305
- $CP_LIBC $libc_src/net/base64.c apps/nc/compat
306
- for i in `awk '/SOURCES|HEADERS|MANS/ { print $3 }' apps/nc/Makefile.am` ; do
307
- if [ -e $bin_src/nc/$i ]; then
308
- $CP $bin_src/nc/$i apps/nc
309
- fi
310
- done
311
-
312
- # copy ocspcheck(1) source
313
- echo "copying ocspcheck(1) source"
314
- $CP $sbin_src/ocspcheck/ocspcheck.8 apps/ocspcheck
315
- rm -f apps/ocspcheck/*.c apps/ocspcheck/*.h
316
- $CP_LIBC $libc_src/string/memmem.c apps/ocspcheck/compat
317
- for i in `awk '/SOURCES|HEADERS|MANS/ { print $3 }' apps/ocspcheck/Makefile.am` ; do
318
- if [ -e $sbin_src/ocspcheck/$i ]; then
319
- $CP $sbin_src/ocspcheck/$i apps/ocspcheck
320
- fi
321
- done
322
-
323
- # copy openssl(1) source
324
- echo "copying openssl(1) source"
325
- $CP $bin_src/openssl/openssl.1 apps/openssl
326
- $CP $libcrypto_src/cert.pem .
327
- $CP $libcrypto_src/openssl.cnf .
328
- $CP $libcrypto_src/x509v3.cnf .
329
- for i in `awk '/SOURCES|HEADERS|MANS/ { print $3 }' apps/openssl/Makefile.am` ; do
330
- if [ -e $bin_src/openssl/$i ]; then
331
- $CP $bin_src/openssl/$i apps/openssl
332
- fi
333
- done
334
-
335
- # copy libssl source
336
- echo "copying libssl source"
337
- rm -f ssl/*.c ssl/*.h
338
- touch ssl/empty.c
339
- for i in `awk '/SOURCES|HEADERS/ { if ($3 !~ /.*crypto_arch.*/) print $3 }' ssl/Makefile.am` ; do
340
- dir=`dirname $i`
341
- mkdir -p ssl/$dir
342
- $CP $libssl_src/$i ssl/$i
343
- done
344
- # add the libssl symbol export list
345
- $GREP '^[A-Za-z0-9_]' < $libssl_src/Symbols.list > ssl/ssl.sym
346
-
347
- # copy libcrypto tests
348
- echo "copying tests"
349
- touch tests/empty.c
350
- for i in `find $libcrypto_regress -name '*.[ch]'`; do
351
- $CP "$i" tests
352
- done
353
- $CP $libcrypto_regress/evp/evptests.txt tests
354
- $CP $libcrypto_regress/aead/*.txt tests
355
- $CP $libcrypto_regress/ct/ctlog.conf tests
356
- $CP $libcrypto_regress/ct/*.crt tests
357
- $CP $libcrypto_regress/x509/policy/*.pem tests
358
- $CP $libcrypto_regress/mlkem/*.txt tests
359
-
360
- # generate libcrypto freenull.c
361
- awk -f $libcrypto_regress/free/freenull.awk \
362
- < $libcrypto_src/Symbols.list > tests/freenull.c.body
363
- cat $libcrypto_regress/free/freenull.c.head tests/freenull.c.body \
364
- $libcrypto_regress/free/freenull.c.tail > tests/freenull.c.tmp
365
- $MV tests/freenull.c.tmp tests/freenull.c
366
-
367
- # copy libc tests
368
- $CP $libc_regress/arc4random-fork/arc4random-fork.c tests/arc4randomforktest.c
369
- $CP $libc_regress/explicit_bzero/explicit_bzero.c tests
370
- $CP_LIBC $libc_src/string/memmem.c tests/compat
371
- $CP $libc_regress/timingsafe/timingsafe.c tests
372
-
373
- # copy libssl tests
374
- $CP $libssl_regress/ssl/testssl tests
375
- for i in `find $libssl_regress -name '*.c'`; do
376
- $CP "$i" tests
377
- done
378
- $CP $libssl_regress/unit/tests.h tests
379
- $CP $libssl_regress/certs/*.pem tests
380
- $CP $libssl_regress/certs/*.crl tests
381
-
382
- # copy libtls tests
383
- for i in `find $libtls_regress -name '*.c'`; do
384
- $CP "$i" tests
385
- done
386
-
387
- chmod 755 tests/testssl
388
-
389
- # add headers
390
- (cd include/openssl
391
- $CP Makefile.am.tpl Makefile.am
392
- for i in `ls -1 *.h|sort`; do
393
- echo "opensslinclude_HEADERS += $i" >> Makefile.am
394
- done
395
- echo endif >> Makefile.am
396
- )
397
-
398
- add_man_links() {
399
- filter=$1
400
- dest=$2
401
- echo "install-data-hook:" >> $dest
402
- for i in `$GREP $filter man/links`; do
403
- IFS=","; set $i; unset IFS
404
- if [ "$2" != "" ]; then
405
- echo " ln -sf \"$1\" \"\$(DESTDIR)\$(mandir)/man3/$2\"" >> $dest
406
- fi
407
- done
408
- echo "" >> $dest
409
- echo "uninstall-local:" >> $dest
410
- for i in `$GREP $filter man/links`; do
411
- IFS=","; set $i; unset IFS
412
- if [ "$2" != "" ]; then
413
- echo " -rm -f \"\$(DESTDIR)\$(mandir)/man3/$2\"" >> $dest
414
- fi
415
- done
416
- }
417
-
418
- # apply local patches
419
- PATCH=patch
420
- # Prefer gnu patch on AIX systems, if available
421
- if [ -x /opt/freeware/bin/patch ]; then
422
- PATCH=/opt/freeware/bin/patch
423
- fi
424
- for i in patches/*.patch; do
425
- $PATCH -p0 < $i
426
- done
427
-
428
- # copy manpages
429
- echo "copying manpages"
430
- echo EXTRA_DIST = CMakeLists.txt > man/Makefile.am
431
- echo "if !ENABLE_LIBTLS_ONLY" >> man/Makefile.am
432
- echo dist_man3_MANS = >> man/Makefile.am
433
- echo dist_man5_MANS = >> man/Makefile.am
434
- (cd man
435
- for i in `ls -1 $libssl_src/man/*.3 | sort`; do
436
- NAME=`basename "$i"`
437
- $CP $i .
438
- echo "dist_man3_MANS += $NAME" >> Makefile.am
439
- done
440
-
441
- for i in `ls -1 $libcrypto_src/man/*.3 | sort`; do
442
- NAME=`basename "$i"`
443
- $CP $i .
444
- echo "dist_man3_MANS += $NAME" >> Makefile.am
445
- done
446
-
447
- for i in `ls -1 $libtls_src/man/*.3 | sort`; do
448
- NAME=`basename "$i"`
449
- $CP $i .
450
- echo "dist_man3_MANS += $NAME" >> Makefile.am
451
- done
452
-
453
- for i in `ls -1 $libcrypto_src/man/*.5 | sort`; do
454
- NAME=`basename "$i"`
455
- $CP $i .
456
- echo "dist_man5_MANS += $NAME" >> Makefile.am
457
- done
458
- )
459
- add_man_links . man/Makefile.am
460
- echo endif >> man/Makefile.am