uringmachine 0.23.1 → 0.25.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 (291) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/.gitignore +1 -0
  4. data/.gitmodules +0 -3
  5. data/CHANGELOG.md +17 -0
  6. data/Gemfile +12 -1
  7. data/README.md +266 -112
  8. data/Rakefile +8 -0
  9. data/TODO.md +40 -17
  10. data/benchmark/bm_io_pipe.rb +43 -1
  11. data/benchmark/bm_io_socketpair.rb +32 -2
  12. data/benchmark/bm_mutex_io.rb +47 -5
  13. data/benchmark/chart_bm_io_pipe_x.png +0 -0
  14. data/benchmark/common.rb +163 -17
  15. data/benchmark/http_parse.rb +9 -9
  16. data/benchmark/http_server_accept_queue.rb +104 -0
  17. data/benchmark/http_server_multi_accept.rb +93 -0
  18. data/benchmark/http_server_multi_ractor.rb +99 -0
  19. data/benchmark/http_server_single_thread.rb +80 -0
  20. data/benchmark/ips_io_pipe.rb +146 -0
  21. data/benchmark/openssl.rb +77 -0
  22. data/benchmark/openssl_socketpair.rb +112 -0
  23. data/benchmark/sqlite.rb +1 -1
  24. data/docs/design/buffer_pool.md +183 -0
  25. data/docs/um_api.md +91 -0
  26. data/examples/fiber_scheduler_file_io.rb +34 -0
  27. data/examples/fiber_scheduler_file_io_async.rb +33 -0
  28. data/ext/um/extconf.rb +15 -0
  29. data/ext/um/um.c +83 -50
  30. data/ext/um/um.h +18 -3
  31. data/ext/um/um_async_op_class.c +31 -0
  32. data/ext/um/um_class.c +759 -30
  33. data/ext/um/um_const.c +31 -0
  34. data/ext/um/um_mutex_class.c +12 -0
  35. data/ext/um/um_queue_class.c +16 -0
  36. data/ext/um/um_sidecar.c +106 -0
  37. data/ext/um/um_ssl.c +109 -0
  38. data/ext/um/um_stream.c +40 -8
  39. data/ext/um/um_stream_class.c +14 -0
  40. data/ext/um/um_utils.c +3 -4
  41. data/grant-2025/interim-report.md +130 -0
  42. data/grant-2025/journal.md +166 -2
  43. data/grant-2025/tasks.md +32 -20
  44. data/lib/uringmachine/dns_resolver.rb +38 -0
  45. data/lib/uringmachine/fiber_scheduler.rb +42 -32
  46. data/lib/uringmachine/version.rb +1 -1
  47. data/lib/uringmachine.rb +105 -7
  48. data/test/helper.rb +23 -3
  49. data/test/test_fiber.rb +16 -0
  50. data/test/test_fiber_scheduler.rb +221 -72
  51. data/test/test_ssl.rb +85 -0
  52. data/test/test_stream.rb +27 -0
  53. data/test/test_um.rb +250 -26
  54. data/uringmachine.gemspec +1 -7
  55. data/vendor/liburing/examples/send-zerocopy.c +43 -31
  56. data/vendor/liburing/examples/zcrx.c +260 -69
  57. data/vendor/liburing/liburing.spec +1 -1
  58. data/vendor/liburing/src/include/liburing/io_uring.h +12 -0
  59. data/vendor/liburing/src/include/liburing.h +3 -2
  60. data/vendor/liburing/src/liburing-ffi.map +4 -0
  61. data/vendor/liburing/src/liburing.map +4 -0
  62. data/vendor/liburing/src/queue.c +12 -0
  63. data/vendor/liburing/src/register.c +1 -0
  64. data/vendor/liburing/src/setup.c +15 -7
  65. data/vendor/liburing/test/Makefile +8 -4
  66. data/vendor/liburing/test/conn-unreach.c +1 -1
  67. data/vendor/liburing/test/epwait.c +32 -6
  68. data/vendor/liburing/test/io-wq-exit.c +131 -0
  69. data/vendor/liburing/test/iowait.c +1 -1
  70. data/vendor/liburing/test/min-timeout.c +3 -1
  71. data/vendor/liburing/test/open-close.c +39 -0
  72. data/vendor/liburing/test/poll-update-trigger.c +85 -0
  73. data/vendor/liburing/test/recvsend_bundle.c +14 -11
  74. data/vendor/liburing/test/sendzc-bug.c +146 -0
  75. data/vendor/liburing/test/sqe-mixed-nop.c +151 -7
  76. data/vendor/liburing/test/test.h +2 -0
  77. data/vendor/liburing/test/timestamp-bug.c +135 -0
  78. data/vendor/liburing/test/timestamp.c +5 -0
  79. data/vendor/liburing/test/vec-regbuf.c +136 -1
  80. metadata +50 -284
  81. data/vendor/libressl/.github/scripts/changelog.sh +0 -74
  82. data/vendor/libressl/.github/workflows/android.yml +0 -35
  83. data/vendor/libressl/.github/workflows/cifuzz.yml +0 -33
  84. data/vendor/libressl/.github/workflows/cmake-config.yml +0 -98
  85. data/vendor/libressl/.github/workflows/coverity.yml +0 -69
  86. data/vendor/libressl/.github/workflows/emscripten.yml +0 -71
  87. data/vendor/libressl/.github/workflows/fedora-rawhide.yml +0 -39
  88. data/vendor/libressl/.github/workflows/freebsd.yml +0 -71
  89. data/vendor/libressl/.github/workflows/linux.yml +0 -71
  90. data/vendor/libressl/.github/workflows/macos.yml +0 -37
  91. data/vendor/libressl/.github/workflows/release.yml +0 -81
  92. data/vendor/libressl/.github/workflows/rust-openssl.yml +0 -47
  93. data/vendor/libressl/.github/workflows/solaris.yml +0 -37
  94. data/vendor/libressl/.github/workflows/windows.yml +0 -70
  95. data/vendor/libressl/.gitignore +0 -333
  96. data/vendor/libressl/CMakeLists.txt +0 -581
  97. data/vendor/libressl/COPYING +0 -133
  98. data/vendor/libressl/ChangeLog +0 -3280
  99. data/vendor/libressl/FindLibreSSL.cmake +0 -232
  100. data/vendor/libressl/LibreSSLConfig.cmake.in +0 -36
  101. data/vendor/libressl/Makefile.am +0 -60
  102. data/vendor/libressl/Makefile.am.common +0 -20
  103. data/vendor/libressl/OPENBSD_BRANCH +0 -1
  104. data/vendor/libressl/README.md +0 -238
  105. data/vendor/libressl/README.mingw.md +0 -43
  106. data/vendor/libressl/apps/CMakeLists.txt +0 -18
  107. data/vendor/libressl/apps/Makefile.am +0 -5
  108. data/vendor/libressl/apps/nc/CMakeLists.txt +0 -67
  109. data/vendor/libressl/apps/nc/Makefile.am +0 -64
  110. data/vendor/libressl/apps/nc/compat/accept4.c +0 -17
  111. data/vendor/libressl/apps/nc/compat/readpassphrase.c +0 -205
  112. data/vendor/libressl/apps/nc/compat/socket.c +0 -29
  113. data/vendor/libressl/apps/nc/compat/sys/socket.h +0 -30
  114. data/vendor/libressl/apps/ocspcheck/CMakeLists.txt +0 -44
  115. data/vendor/libressl/apps/ocspcheck/Makefile.am +0 -45
  116. data/vendor/libressl/apps/ocspcheck/compat/.gitignore +0 -0
  117. data/vendor/libressl/apps/openssl/CMakeLists.txt +0 -97
  118. data/vendor/libressl/apps/openssl/Makefile.am +0 -108
  119. data/vendor/libressl/apps/openssl/apps_win.c +0 -138
  120. data/vendor/libressl/apps/openssl/certhash_win.c +0 -13
  121. data/vendor/libressl/apps/openssl/compat/clock_gettime_osx.c +0 -26
  122. data/vendor/libressl/apps/openssl/compat/poll_win.c +0 -329
  123. data/vendor/libressl/appveyor.yml +0 -53
  124. data/vendor/libressl/autogen.sh +0 -15
  125. data/vendor/libressl/check-release.sh +0 -86
  126. data/vendor/libressl/cmake_export_symbol.cmake +0 -71
  127. data/vendor/libressl/cmake_uninstall.cmake.in +0 -36
  128. data/vendor/libressl/config +0 -17
  129. data/vendor/libressl/configure.ac +0 -165
  130. data/vendor/libressl/crypto/CMakeLists.txt +0 -863
  131. data/vendor/libressl/crypto/Makefile.am +0 -962
  132. data/vendor/libressl/crypto/Makefile.am.arc4random +0 -46
  133. data/vendor/libressl/crypto/Makefile.am.elf-mips +0 -14
  134. data/vendor/libressl/crypto/Makefile.am.elf-mips64 +0 -14
  135. data/vendor/libressl/crypto/Makefile.am.elf-x86_64 +0 -35
  136. data/vendor/libressl/crypto/Makefile.am.macosx-x86_64 +0 -35
  137. data/vendor/libressl/crypto/Makefile.am.masm-x86_64 +0 -22
  138. data/vendor/libressl/crypto/Makefile.am.mingw64-x86_64 +0 -23
  139. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_darwin.c +0 -60
  140. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_linux.c +0 -62
  141. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_none.c +0 -26
  142. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_windows.c +0 -36
  143. data/vendor/libressl/crypto/arch/loongarch64/crypto_arch.h +0 -21
  144. data/vendor/libressl/crypto/arch/mips/crypto_arch.h +0 -21
  145. data/vendor/libressl/crypto/bn/arch/loongarch64/bn_arch.h +0 -23
  146. data/vendor/libressl/crypto/bn/arch/mips/bn_arch.h +0 -24
  147. data/vendor/libressl/crypto/compat/.gitignore +0 -31
  148. data/vendor/libressl/crypto/compat/arc4random.h +0 -41
  149. data/vendor/libressl/crypto/compat/b_win.c +0 -55
  150. data/vendor/libressl/crypto/compat/bsd-asprintf.c +0 -96
  151. data/vendor/libressl/crypto/compat/crypto_lock_win.c +0 -56
  152. data/vendor/libressl/crypto/compat/explicit_bzero_win.c +0 -13
  153. data/vendor/libressl/crypto/compat/freezero.c +0 -32
  154. data/vendor/libressl/crypto/compat/getdelim.c +0 -78
  155. data/vendor/libressl/crypto/compat/getline.c +0 -40
  156. data/vendor/libressl/crypto/compat/getopt_long.c +0 -528
  157. data/vendor/libressl/crypto/compat/getpagesize.c +0 -18
  158. data/vendor/libressl/crypto/compat/getprogname_linux.c +0 -23
  159. data/vendor/libressl/crypto/compat/getprogname_unimpl.c +0 -7
  160. data/vendor/libressl/crypto/compat/getprogname_windows.c +0 -13
  161. data/vendor/libressl/crypto/compat/posix_win.c +0 -296
  162. data/vendor/libressl/crypto/compat/syslog_r.c +0 -19
  163. data/vendor/libressl/crypto/compat/ui_openssl_win.c +0 -334
  164. data/vendor/libressl/dist.sh +0 -22
  165. data/vendor/libressl/gen-coverage-report.sh +0 -58
  166. data/vendor/libressl/gen-openbsd-tags.sh +0 -20
  167. data/vendor/libressl/include/CMakeLists.txt +0 -61
  168. data/vendor/libressl/include/Makefile.am +0 -79
  169. data/vendor/libressl/include/arch/loongarch64/opensslconf.h +0 -150
  170. data/vendor/libressl/include/arch/mips/opensslconf.h +0 -150
  171. data/vendor/libressl/include/compat/arpa/inet.h +0 -15
  172. data/vendor/libressl/include/compat/arpa/nameser.h +0 -25
  173. data/vendor/libressl/include/compat/cet.h +0 -19
  174. data/vendor/libressl/include/compat/dirent.h +0 -17
  175. data/vendor/libressl/include/compat/dirent_msvc.h +0 -611
  176. data/vendor/libressl/include/compat/endian.h +0 -161
  177. data/vendor/libressl/include/compat/err.h +0 -95
  178. data/vendor/libressl/include/compat/fcntl.h +0 -32
  179. data/vendor/libressl/include/compat/getopt.h +0 -50
  180. data/vendor/libressl/include/compat/limits.h +0 -25
  181. data/vendor/libressl/include/compat/netdb.h +0 -10
  182. data/vendor/libressl/include/compat/netinet/in.h +0 -19
  183. data/vendor/libressl/include/compat/netinet/ip.h +0 -49
  184. data/vendor/libressl/include/compat/netinet/tcp.h +0 -10
  185. data/vendor/libressl/include/compat/poll.h +0 -63
  186. data/vendor/libressl/include/compat/pthread.h +0 -122
  187. data/vendor/libressl/include/compat/readpassphrase.h +0 -44
  188. data/vendor/libressl/include/compat/resolv.h +0 -24
  189. data/vendor/libressl/include/compat/stdint.h +0 -31
  190. data/vendor/libressl/include/compat/stdio.h +0 -65
  191. data/vendor/libressl/include/compat/stdlib.h +0 -57
  192. data/vendor/libressl/include/compat/string.h +0 -98
  193. data/vendor/libressl/include/compat/sys/_null.h +0 -18
  194. data/vendor/libressl/include/compat/sys/ioctl.h +0 -11
  195. data/vendor/libressl/include/compat/sys/mman.h +0 -19
  196. data/vendor/libressl/include/compat/sys/param.h +0 -15
  197. data/vendor/libressl/include/compat/sys/queue.h +0 -536
  198. data/vendor/libressl/include/compat/sys/select.h +0 -10
  199. data/vendor/libressl/include/compat/sys/socket.h +0 -18
  200. data/vendor/libressl/include/compat/sys/stat.h +0 -129
  201. data/vendor/libressl/include/compat/sys/time.h +0 -37
  202. data/vendor/libressl/include/compat/sys/tree.h +0 -1006
  203. data/vendor/libressl/include/compat/sys/types.h +0 -69
  204. data/vendor/libressl/include/compat/sys/uio.h +0 -17
  205. data/vendor/libressl/include/compat/syslog.h +0 -38
  206. data/vendor/libressl/include/compat/time.h +0 -59
  207. data/vendor/libressl/include/compat/unistd.h +0 -83
  208. data/vendor/libressl/include/compat/win32netcompat.h +0 -57
  209. data/vendor/libressl/include/openssl/Makefile.am.tpl +0 -45
  210. data/vendor/libressl/libcrypto.pc.in +0 -28
  211. data/vendor/libressl/libressl.pub +0 -2
  212. data/vendor/libressl/libssl.pc.in +0 -28
  213. data/vendor/libressl/libtls.pc.in +0 -28
  214. data/vendor/libressl/m4/ax_add_fortify_source.m4 +0 -80
  215. data/vendor/libressl/m4/ax_check_compile_flag.m4 +0 -53
  216. data/vendor/libressl/m4/check-hardening-options.m4 +0 -110
  217. data/vendor/libressl/m4/check-libc.m4 +0 -189
  218. data/vendor/libressl/m4/check-os-options.m4 +0 -181
  219. data/vendor/libressl/m4/disable-compiler-warnings.m4 +0 -44
  220. data/vendor/libressl/man/CMakeLists.txt +0 -26
  221. data/vendor/libressl/man/links +0 -2780
  222. data/vendor/libressl/man/update_links.sh +0 -25
  223. data/vendor/libressl/openssl.pc.in +0 -11
  224. data/vendor/libressl/patches/bn_shift.patch +0 -34
  225. data/vendor/libressl/patches/crypto_arch.h.patch +0 -34
  226. data/vendor/libressl/patches/crypto_namespace.h.patch +0 -22
  227. data/vendor/libressl/patches/netcat.c.patch +0 -178
  228. data/vendor/libressl/patches/openssl.c.patch +0 -12
  229. data/vendor/libressl/patches/opensslfeatures.h.patch +0 -49
  230. data/vendor/libressl/patches/patch-amd64-crypto-cpu-caps.c.patch +0 -20
  231. data/vendor/libressl/patches/patch-i386-crypto-cpu-caps.c.patch +0 -20
  232. data/vendor/libressl/patches/speed.c.patch +0 -114
  233. data/vendor/libressl/patches/ssl_namespace.h.patch +0 -21
  234. data/vendor/libressl/patches/tls.h.patch +0 -16
  235. data/vendor/libressl/patches/tls_config.c.patch +0 -15
  236. data/vendor/libressl/patches/win32_amd64_bn_arch.h.patch +0 -28
  237. data/vendor/libressl/patches/windows_headers.patch +0 -80
  238. data/vendor/libressl/scripts/config.guess +0 -1774
  239. data/vendor/libressl/scripts/config.sub +0 -1907
  240. data/vendor/libressl/scripts/i686-w64-mingw32.cmake +0 -9
  241. data/vendor/libressl/scripts/test +0 -210
  242. data/vendor/libressl/scripts/wrap-compiler-for-flag-check +0 -31
  243. data/vendor/libressl/scripts/x86_64-w64-mingw32.cmake +0 -9
  244. data/vendor/libressl/ssl/CMakeLists.txt +0 -183
  245. data/vendor/libressl/ssl/Makefile.am +0 -187
  246. data/vendor/libressl/tests/CMakeLists.txt +0 -970
  247. data/vendor/libressl/tests/Makefile.am +0 -944
  248. data/vendor/libressl/tests/aeadtest.sh +0 -30
  249. data/vendor/libressl/tests/arc4randomforktest.sh +0 -21
  250. data/vendor/libressl/tests/asn1time_small.test +0 -10
  251. data/vendor/libressl/tests/cmake/CMakeLists.txt +0 -52
  252. data/vendor/libressl/tests/cmake/crypto.c +0 -7
  253. data/vendor/libressl/tests/cmake/ssl.c +0 -6
  254. data/vendor/libressl/tests/cmake/tls.c +0 -6
  255. data/vendor/libressl/tests/compat/pipe2.c +0 -186
  256. data/vendor/libressl/tests/dtlstest.sh +0 -28
  257. data/vendor/libressl/tests/evptest.sh +0 -22
  258. data/vendor/libressl/tests/keypairtest.sh +0 -27
  259. data/vendor/libressl/tests/mlkem_tests.sh +0 -39
  260. data/vendor/libressl/tests/ocsptest.bat +0 -25
  261. data/vendor/libressl/tests/ocsptest.sh +0 -23
  262. data/vendor/libressl/tests/openssl.cnf +0 -29
  263. data/vendor/libressl/tests/optionstest.c +0 -381
  264. data/vendor/libressl/tests/pidwraptest.c +0 -85
  265. data/vendor/libressl/tests/pidwraptest.sh +0 -26
  266. data/vendor/libressl/tests/quictest.bat +0 -27
  267. data/vendor/libressl/tests/quictest.sh +0 -30
  268. data/vendor/libressl/tests/renegotiation_test.bat +0 -27
  269. data/vendor/libressl/tests/renegotiation_test.sh +0 -30
  270. data/vendor/libressl/tests/rfc5280time_small.test +0 -10
  271. data/vendor/libressl/tests/servertest.bat +0 -27
  272. data/vendor/libressl/tests/servertest.sh +0 -30
  273. data/vendor/libressl/tests/shutdowntest.bat +0 -27
  274. data/vendor/libressl/tests/shutdowntest.sh +0 -30
  275. data/vendor/libressl/tests/ssltest.bat +0 -32
  276. data/vendor/libressl/tests/ssltest.sh +0 -48
  277. data/vendor/libressl/tests/testdsa.bat +0 -47
  278. data/vendor/libressl/tests/testdsa.sh +0 -57
  279. data/vendor/libressl/tests/testenc.bat +0 -85
  280. data/vendor/libressl/tests/testenc.sh +0 -93
  281. data/vendor/libressl/tests/testrsa.bat +0 -47
  282. data/vendor/libressl/tests/testrsa.sh +0 -57
  283. data/vendor/libressl/tests/testssl.bat +0 -171
  284. data/vendor/libressl/tests/tlstest.bat +0 -27
  285. data/vendor/libressl/tests/tlstest.sh +0 -28
  286. data/vendor/libressl/tls/CMakeLists.txt +0 -125
  287. data/vendor/libressl/tls/Makefile.am +0 -76
  288. data/vendor/libressl/tls/compat/ftruncate.c +0 -17
  289. data/vendor/libressl/tls/compat/pread.c +0 -29
  290. data/vendor/libressl/tls/compat/pwrite.c +0 -29
  291. 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