k2hash 1.1.34 → 2.0.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.
@@ -0,0 +1,359 @@
1
+ #!/bin/sh
2
+ #
3
+ # K2HASH
4
+ #
5
+ # Copyright 2015 Yahoo Japan Corporation.
6
+ #
7
+ # K2HASH is key-valuew store base libraries.
8
+ # K2HASH is made for the purpose of the construction of
9
+ # original KVS system and the offer of the library.
10
+ # The characteristic is this KVS library which Key can
11
+ # layer. And can support multi-processing and multi-thread,
12
+ # and is provided safely as available KVS.
13
+ #
14
+ # For the full copyright and license information, please view
15
+ # the license file that was distributed with this source code.
16
+ #
17
+ # AUTHOR: Takeshi Nakatani
18
+ # CREATE: Wed 19 Nov 2025
19
+ # REVISION:
20
+ #
21
+
22
+ #---------------------------------------------------------------
23
+ # About this script
24
+ #---------------------------------------------------------------
25
+ # This script outputs parameters for the prebuild command according
26
+ # to the environment.
27
+ # The script will output the result corresponding to the specified
28
+ # option to stdout. If a value does not exist, an empty string
29
+ # will be returned. If an option is not specified, an error will
30
+ # be output to stderr.
31
+ #
32
+ # This script is used as follows:
33
+ # CPU_ARCH_NAME=$(make_node_variables.sh --architecture-name)
34
+ # PREBUILD_PARAMTERS=$(make_node_variables.sh -rp)
35
+ #
36
+ #---------------------------------------------------------------
37
+
38
+ #---------------------------------------------------------------
39
+ # Common Variables
40
+ #---------------------------------------------------------------
41
+ PRGNAME=$(basename "$0")
42
+ SCRIPTDIR=$(dirname "$0")
43
+ SCRIPTDIR=$(cd "${SCRIPTDIR}" || exit 1; pwd)
44
+ SRCTOP=$(cd "${SCRIPTDIR}/.." || exit 1; pwd)
45
+
46
+ OS_RELEASE_FILE="/etc/os-release"
47
+ PACKAGE_JSON_FILE="package.json"
48
+ OUTPUT_BASE_DIR="prebuilds"
49
+
50
+ #---------------------------------------------------------------
51
+ # Package name and Package version, Github repository (for asset url)
52
+ #---------------------------------------------------------------
53
+ PKG_NAME=""
54
+ PKG_VERSION=""
55
+ GITHUB_DOMAIN_NAME=""
56
+ GITHUB_API_DOMAIN_NAME=""
57
+ GITHUB_OWNER_NAME=""
58
+ GITHUB_REPO_NAME=""
59
+ if [ ! -f "${SRCTOP}/${PACKAGE_JSON_FILE}" ]; then
60
+ echo "Not found ${PACKAGE_JSON_FILE} file" 1>&2
61
+ exit 1
62
+ else
63
+ PKG_NAME=$(grep -i '"name"' "${SRCTOP}/${PACKAGE_JSON_FILE}" | sed -e 's|[,"]||g' | awk '{print $2}')
64
+ PKG_VERSION=$(grep -i '"version"' "${SRCTOP}/${PACKAGE_JSON_FILE}" | sed -e 's|[,"]||g' | awk '{print $2}')
65
+
66
+ _TMP_REPO_URL=$(tr -d '\n' < "${SRCTOP}/${PACKAGE_JSON_FILE}" 2>/dev/null | sed -e 's#^.*\"repository\"[[:space:]]*:##g' -e 's#}.*$##g' -e 's#.*\"url\"[[:space:]]*:[[:space:]]*##g' -e 's#"##g' -e 's#^[[:space:]]*##g' -e 's#[[:space:]]*$##g')
67
+ GITHUB_DOMAIN_NAME=$(printf '%s' "${_TMP_REPO_URL}" | sed -e 's#git@##g' -e 's#http.*://##g' -e 's#:.*$##g' -e 's#/.*$##g')
68
+ GITHUB_API_DOMAIN_NAME="api.${GITHUB_DOMAIN_NAME}"
69
+ GITHUB_OWNER_NAME=$(printf '%s' "${_TMP_REPO_URL}" | awk -F'[/.:]' '{print $(NF-2)}')
70
+ GITHUB_REPO_NAME=$(printf '%s' "${_TMP_REPO_URL}" | awk -F'[/.:]' '{print $(NF-1)}')
71
+ fi
72
+
73
+ #---------------------------------------------------------------
74
+ # Libc type
75
+ #---------------------------------------------------------------
76
+ LIBC_TYPE=""
77
+ if [ ! -f "${OS_RELEASE_FILE}" ]; then
78
+ LIBC_TYPE=""
79
+ PREBUILD_LIBC_PARAM=""
80
+ FILE_LIBC_PARAM=""
81
+ elif grep -q -i '^ID=[[:space:]]*alpine[[:space:]]*$' "${OS_RELEASE_FILE}"; then
82
+ LIBC_TYPE="musl"
83
+ PREBUILD_LIBC_PARAM="--libc ${LIBC_TYPE}"
84
+ FILE_LIBC_PARAM="-${LIBC_TYPE}"
85
+ else
86
+ LIBC_TYPE="glibc"
87
+ PREBUILD_LIBC_PARAM="--libc ${LIBC_TYPE}"
88
+ FILE_LIBC_PARAM="-${LIBC_TYPE}"
89
+ fi
90
+
91
+ #---------------------------------------------------------------
92
+ # Platform name
93
+ #---------------------------------------------------------------
94
+ PLATFORM_NAME=""
95
+ if command -v uname >/dev/null 2>&1; then
96
+ PLATFORM_NAME=$(uname -s 2>/dev/null | tr '[:upper:]' '[:lower:]' 2>/dev/null)
97
+ fi
98
+ if [ -z "${PLATFORM_NAME}" ]; then
99
+ PLATFORM_NAME="unknown"
100
+ PREBUILD_PLATFORM_PARAM=""
101
+ FILE_PLATFORM_PARAM="-${PLATFORM_NAME}"
102
+ else
103
+ PREBUILD_PLATFORM_PARAM="--platform ${PLATFORM_NAME}"
104
+ FILE_PLATFORM_PARAM="-${PLATFORM_NAME}"
105
+ fi
106
+
107
+ #---------------------------------------------------------------
108
+ # Distribution
109
+ #---------------------------------------------------------------
110
+ #
111
+ # Distribution name
112
+ #
113
+ DISTRO_NAME=""
114
+ if [ -f "${OS_RELEASE_FILE}" ]; then
115
+ DISTRO_NAME=$(grep -i '^ID=[[:space:]]*.*$' "${OS_RELEASE_FILE}" 2>/dev/null | sed -e 's#^ID=[[:space:]]*##g' -e 's#"##g' -e 's#^[[:space:]]*##g' -e 's#[[:space:]]*$##g' | tr -d '\n' 2>/dev/null)
116
+ fi
117
+
118
+ #
119
+ # Distribution Version
120
+ #
121
+ DISTRO_VERSION=""
122
+ DISTRO_MAJOR_VERSION=""
123
+ if [ -n "${DISTRO_NAME}" ]; then
124
+ DISTRO_VERSION=$(grep -i '^VERSION_ID=[[:space:]]*.*$' "${OS_RELEASE_FILE}" 2>/dev/null | sed -e 's#^VERSION_ID=[[:space:]]*##g' -e 's#"##g' -e 's#^[[:space:]]*##g' -e 's#[[:space:]]*$##g' | tr -d '\n' 2>/dev/null)
125
+
126
+ # [NOTE]
127
+ # For ALPINE, we must assign not only the major number but also the minor number.
128
+ #
129
+ if echo "${DISTRO_NAME}" | grep -q -i 'alpine'; then
130
+ DISTRO_MAJOR_VERSION=$(printf '%s' "${DISTRO_VERSION}" 2>/dev/null | sed -e 's#^\([0-9]\+\)\.\?\([0-9]\+\)\?\.\?.*#\1.\2#g' -e 's#\.$##g' 2>/dev/null)
131
+ else
132
+ DISTRO_MAJOR_VERSION=$(printf '%s' "${DISTRO_VERSION}" 2>/dev/null | sed -e 's#[\.].*##g' | tr -d '\n' 2>/dev/null)
133
+ fi
134
+ fi
135
+
136
+ #---------------------------------------------------------------
137
+ # CPU Architecture
138
+ #---------------------------------------------------------------
139
+ CPU_ARCH_NAME=""
140
+ if command -v uname >/dev/null 2>&1; then
141
+ CPU_ARCH_NAME=$(uname -m 2>/dev/null)
142
+ fi
143
+ if [ -z "${CPU_ARCH_NAME}" ]; then
144
+ CPU_ARCH_NAME=""
145
+ PREBUILD_ARCH_PARAM=""
146
+ FILE_ARCH_PARAM=""
147
+ elif echo "${CPU_ARCH_NAME}" | grep -q -i "^x86[_]*64$"; then
148
+ CPU_ARCH_NAME="x86_64"
149
+ PREBUILD_ARCH_PARAM="--arch ${CPU_ARCH_NAME}"
150
+ FILE_ARCH_PARAM="-${CPU_ARCH_NAME}"
151
+ else
152
+ CPU_ARCH_NAME=""
153
+ PREBUILD_ARCH_PARAM=""
154
+ FILE_ARCH_PARAM=""
155
+ fi
156
+
157
+ #---------------------------------------------------------------
158
+ # Node version and Node ABI version and N-API version
159
+ #---------------------------------------------------------------
160
+ NODE_VER_FULL=""
161
+ NODE_VER_MAJOR=""
162
+ NODE_ABI_VER=""
163
+ NAPI_VER=""
164
+ if command -v node >/dev/null 2>&1; then
165
+ NODE_VER_FULL=$(node -v 2>/dev/null | sed 's/^v//' 2>/dev/null)
166
+ NODE_VER_MAJOR=$(printf '%s' "${NODE_VER_FULL}" 2>/dev/null | cut -d. -f1 2>/dev/null)
167
+ NODE_ABI_VER=$(node -e "console.log(require('node-abi').getAbi('${NODE_VER_FULL}', 'node'))" 2>/dev/null)
168
+ NAPI_VER=$(node -p "process.versions.napi" 2>/dev/null)
169
+ fi
170
+ if [ -z "${NODE_VER_FULL}" ] || [ -z "${NODE_VER_MAJOR}" ] || [ -z "${NODE_ABI_VER}" ]; then
171
+ NODE_VER_FULL=0
172
+ NODE_VER_MAJOR=0.0.0
173
+ NODE_ABI_VER=0
174
+ PREBUILD_TARGET_PARAM=""
175
+ FILE_TARGET_PARAM=""
176
+ FILE_ABI_PARAM=""
177
+ else
178
+ PREBUILD_TARGET_PARAM="--target ${NODE_VER_FULL}"
179
+ FILE_TARGET_PARAM="-node${NODE_VER_MAJOR}"
180
+ FILE_ABI_PARAM="-node-v${NODE_ABI_VER}"
181
+ fi
182
+ if [ -z "${NAPI_VER}" ]; then
183
+ NAPI_VER=0
184
+ FILE_NAPI_PARAM=""
185
+ else
186
+ FILE_NAPI_PARAM="-napi${NAPI_VER}"
187
+ fi
188
+ if [ -z "${DISTRO_NAME}" ] || [ -z "${DISTRO_VERSION}" ] || [ -z "${DISTRO_MAJOR_VERSION}" ]; then
189
+ FILE_DISTRO_PARAM=""
190
+ else
191
+ FILE_DISTRO_PARAM="-${DISTRO_NAME}${DISTRO_MAJOR_VERSION}"
192
+ fi
193
+
194
+ #---------------------------------------------------------------
195
+ # Create a variables
196
+ #---------------------------------------------------------------
197
+ # Output directory:
198
+ # prebuilds
199
+ # prebuilds/<scope> : when package name has scope
200
+ #
201
+ # Output filename(created by prebuild):
202
+ # <pkgname(no scope)>-v<pkg version>-node-v<ABI version>-<platform name><libc type>-<arch name>.tar.gz
203
+ # pkgname-v1.0.0-node-v137-linuxglibc-x86_64.tar.gz
204
+ #
205
+ # Final filename(rename from output filename)
206
+ # <pkgname(no scope)>-v<pkg version>-node-v<ABI version>-node<node major version>-napi<N-API version>-<platform name>-<distro name><distro major version>-<arch name>-<libc type>.tar.gz
207
+ # pkgname-v1.0.0-node-v137-node22-napi10-linux-ubuntu24-x86_64-glibc.tar.gz
208
+ #
209
+ # Prebuild command parameters:
210
+ # --strip --napi --platform <platform name> --arch <arch name> --target <node full version> --libc <libc type>
211
+ # --strip --napi --platform linux --arch x86_64 --target 24.11.1 --libc glibc
212
+ #
213
+ if echo "${PKG_NAME}" | grep -q '/'; then
214
+ PKG_SCOPE_NAME=$(echo "${PKG_NAME}" | sed 's:/[^/]*$::')
215
+ PKG_NOSCOPE_NAME=$(echo "${PKG_NAME}" | sed 's:.*/::')
216
+ OUTPUT_SUBDIR="/${PKG_SCOPE_NAME}"
217
+ else
218
+ PKG_SCOPE_NAME=""
219
+ PKG_NOSCOPE_NAME="${PKG_NAME}"
220
+ OUTPUT_SUBDIR=""
221
+ fi
222
+
223
+ SHAR256_FILE_SUFFIX=".sha256"
224
+ OUTDIR_PATH="${OUTPUT_BASE_DIR}${OUTPUT_SUBDIR}"
225
+ PREBUILD_OUTPUT_TGZ="${PKG_NOSCOPE_NAME}-v${PKG_VERSION}${FILE_ABI_PARAM}${FILE_PLATFORM_PARAM}${LIBC_TYPE}${FILE_ARCH_PARAM}.tar.gz"
226
+ RENAME_PKG_TGZ="${PKG_NOSCOPE_NAME}-v${PKG_VERSION}${FILE_ABI_PARAM}${FILE_TARGET_PARAM}${FILE_NAPI_PARAM}${FILE_PLATFORM_PARAM}${FILE_DISTRO_PARAM}${FILE_ARCH_PARAM}${FILE_LIBC_PARAM}.tar.gz"
227
+ RENAME_PKG_SHA256="${RENAME_PKG_TGZ}${SHAR256_FILE_SUFFIX}"
228
+ PREBUILD_PARAMTERS="--strip --napi ${PREBUILD_PLATFORM_PARAM} ${PREBUILD_ARCH_PARAM} ${PREBUILD_TARGET_PARAM} ${PREBUILD_LIBC_PARAM}"
229
+
230
+ #---------------------------------------------------------------
231
+ # Github asset urls
232
+ #---------------------------------------------------------------
233
+ # URL:
234
+ # https://github.com/<owner>/<repo>/releases/download/v<version>/<tgz file name>
235
+ # https://github.com/<owner>/<repo>/releases/download/v<version>/<sha256 file name>
236
+ #
237
+ GITHUB_ASSET_TGZ_URL="https://${GITHUB_DOMAIN_NAME}/${GITHUB_OWNER_NAME}/${GITHUB_REPO_NAME}/releases/download/v${PKG_VERSION}/${RENAME_PKG_TGZ}"
238
+ GITHUB_ASSET_SHA256_URL="https://${GITHUB_DOMAIN_NAME}/${GITHUB_OWNER_NAME}/${GITHUB_REPO_NAME}/releases/download/v${PKG_VERSION}/${RENAME_PKG_SHA256}"
239
+
240
+ #---------------------------------------------------------------
241
+ # Main process
242
+ #---------------------------------------------------------------
243
+ if [ $# -ne 1 ]; then
244
+ echo "No parameters specified.(see --help option)" 1>&2
245
+ exit 1
246
+
247
+ elif echo "$1" | grep -q -i -e "^--help$" -e "^-h$"; then
248
+ echo ""
249
+ echo "${PRGNAME}"
250
+ echo " This is a helper script that returns the current environment variables required when running the prebuild command to create a Nodejs addon package."
251
+ echo ""
252
+ echo "Usage: ${PRGNAME} [options]"
253
+ echo ""
254
+ echo "Option:"
255
+ echo " --package-name(-pk) : Get package name from package.json(ex. pkgname)"
256
+ echo " --package-version(-pv) : Get package version from package.json(ex. 1.0.0)"
257
+ echo " --libc-type(-lt) : Get LIBC type(ex. glibc or musl)"
258
+ echo " --platform-name(-pn) : Get platform name(ex. linux, etc)"
259
+ echo " --distro-name(-dn) : Get OS distribution name(ex. ubuntu, etc)"
260
+ echo " --distro-version(-dv) : Get OS distribution version(ex. 24.04, etc)"
261
+ echo " --distro-major-version(-dm) : Get OS distribution major version(ex. 24, etc)"
262
+ echo " --architecture-name(-an) : Get CPU architecture(ex. x86_64, etc)"
263
+ echo " --node-version(-nv) : Get node full version(ex, 24.0.0)"
264
+ echo " --node-major-version(-nm) : Get node mahor version(ex, 24)"
265
+ echo " --node-abi-version(-av) : Get node ABI version(ex, 137)"
266
+ echo " --napi-version(-na) : Get N-API library version(ex, 10)"
267
+ echo " --output-dirname(-od) : Get directory name for prebuild output(ex, prebuilds or prebuilds/<scope>)"
268
+ echo " --prebuild-parameters(-pp) : Get all prebuild command parameters(ex, --strip --napi --platform linux --arch x86_64 --target 24.11.1 --libc glibc)"
269
+ echo " --prebuild-filename(-pf) : Get output filename created by prebuild under output directory(ex, <pkgname>-v1.0.0-node-v137-linuxglibc-x86_64.tar.gz)"
270
+ echo " --tgz-filename(-tf) : Get the filename to rename the file created by prebuild(e.g. pkgname-v1.0.0-node-v137-node22-napi10-linux-x86_64-glibc.tar.gz)"
271
+ echo " --sha256-filename(-tf) : Get the filename to sha256 file for renamed tgz file(e.g. pkgname-v1.0.0-node-v137-node22-napi10-linux-x86_64-glibc.tar.gz.sha256)"
272
+ echo " --tgz-download-url(-td) : Get download URL for tgz asset file(e.g. https://github.com/<owner>/<repo>/releases/download/v<version>/<tgz file name>)"
273
+ echo " --sha256-download-url(-sd) : Get download URL for sha256 asset file(e.g. https://github.com/<owner>/<repo>/releases/download/v<version>/<sha256 file name>)"
274
+ echo " --github-domain(-gd) : Get github domain name(ex, github.com)"
275
+ echo " --github-api-domain(-ad) : Get github api domain name(ex, api.github.com)"
276
+ echo " --package-owner(-po) : Get github owner(organaization) name(ex, antpickax)"
277
+ echo " --package-repogitry(-pr) : Get github repository name(ex, myrepository)"
278
+ echo ""
279
+
280
+ elif echo "$1" | grep -q -i -e "^--package-name$" -e "^-pk$"; then
281
+ printf '%s' "${PKG_NAME}" 2>/dev/null
282
+
283
+ elif echo "$1" | grep -q -i -e "^--package-version$" -e "^-pv$"; then
284
+ printf '%s' "${PKG_VERSION}" 2>/dev/null
285
+
286
+ elif echo "$1" | grep -q -i -e "^--libc-type$" -e "^-lt$"; then
287
+ printf '%s' "${LIBC_TYPE}" 2>/dev/null
288
+
289
+ elif echo "$1" | grep -q -i -e "^--platform-name$" -e "^-pn$"; then
290
+ printf '%s' "${PLATFORM_NAME}" 2>/dev/null
291
+
292
+ elif echo "$1" | grep -q -i -e "^--distro-name$" -e "^--distribution-name$" -e "^-dn$"; then
293
+ printf '%s' "${DISTRO_NAME}" 2>/dev/null
294
+
295
+ elif echo "$1" | grep -q -i -e "^--distro-version$" -e "^--distribution-version$" -e "^-dv$"; then
296
+ printf '%s' "${DISTRO_VERSION}" 2>/dev/null
297
+
298
+ elif echo "$1" | grep -q -i -e "^--distro-major-version$" -e "^--distribution-major-version$" -e "^-dm$"; then
299
+ printf '%s' "${DISTRO_MAJOR_VERSION}" 2>/dev/null
300
+
301
+ elif echo "$1" | grep -q -i -e "^--architecture-name$" -e "^-an$"; then
302
+ printf '%s' "${CPU_ARCH_NAME}" 2>/dev/null
303
+
304
+ elif echo "$1" | grep -q -i -e "^--node-version$" -e "^-nv$"; then
305
+ printf '%s' "${NODE_VER_FULL}" 2>/dev/null
306
+
307
+ elif echo "$1" | grep -q -i -e "^--node-major-version$" -e "^-nm$"; then
308
+ printf '%s' "${NODE_VER_MAJOR}" 2>/dev/null
309
+
310
+ elif echo "$1" | grep -q -i -e "^--node-abi-version$" -e "^-av$"; then
311
+ printf '%s' "${NODE_ABI_VER}" 2>/dev/null
312
+
313
+ elif echo "$1" | grep -q -i -e "^--napi-version$" -e "^-na$"; then
314
+ printf '%s' "${NAPI_VER}" 2>/dev/null
315
+
316
+ elif echo "$1" | grep -q -i -e "^--output-dirname$" -e "^-od$"; then
317
+ printf '%s' "${OUTDIR_PATH}" 2>/dev/null
318
+
319
+ elif echo "$1" | grep -q -i -e "^--prebuild-parameters$" -e "^-pp$"; then
320
+ printf '%s' "${PREBUILD_PARAMTERS}" 2>/dev/null
321
+
322
+ elif echo "$1" | grep -q -i -e "^--prebuild-filename$" -e "^-pf$"; then
323
+ printf '%s' "${PREBUILD_OUTPUT_TGZ}" 2>/dev/null
324
+
325
+ elif echo "$1" | grep -q -i -e "^--tgz-filename$" -e "^-rf$"; then
326
+ printf '%s' "${RENAME_PKG_TGZ}" 2>/dev/null
327
+
328
+ elif echo "$1" | grep -q -i -e "^--sha256-filename$" -e "^-sf$"; then
329
+ printf '%s' "${RENAME_PKG_SHA256}" 2>/dev/null
330
+
331
+ elif echo "$1" | grep -q -i -e "^--tgz-download-url$" -e "^-td$"; then
332
+ printf '%s' "${GITHUB_ASSET_TGZ_URL}" 2>/dev/null
333
+
334
+ elif echo "$1" | grep -q -i -e "^--sha256-download-url$" -e "^-sd$"; then
335
+ printf '%s' "${GITHUB_ASSET_SHA256_URL}" 2>/dev/null
336
+
337
+ elif echo "$1" | grep -q -i -e "^--github-domain$" -e "^-gd$"; then
338
+ printf '%s' "${GITHUB_DOMAIN_NAME}" 2>/dev/null
339
+
340
+ elif echo "$1" | grep -q -i -e "^--github-api-domain$" -e "^-ad$"; then
341
+ printf '%s' "${GITHUB_API_DOMAIN_NAME}" 2>/dev/null
342
+
343
+ elif echo "$1" | grep -q -i -e "^--package-owner$" -e "^-po$"; then
344
+ printf '%s' "${GITHUB_OWNER_NAME}" 2>/dev/null
345
+
346
+ elif echo "$1" | grep -q -i -e "^--package-repogitry$" -e "^-pr$"; then
347
+ printf '%s' "${GITHUB_REPO_NAME}" 2>/dev/null
348
+ fi
349
+
350
+ exit 0
351
+
352
+ #
353
+ # Local variables:
354
+ # tab-width: 4
355
+ # c-basic-offset: 4
356
+ # End:
357
+ # vim600: noexpandtab sw=4 ts=4 fdm=marker
358
+ # vim<600: noexpandtab sw=4 ts=4
359
+ #