Skip to content

Commit

Permalink
Use V8's zlib
Browse files Browse the repository at this point in the history
  • Loading branch information
npaun committed Aug 13, 2024
1 parent ad2cb1c commit 00128a8
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 134 deletions.
44 changes: 19 additions & 25 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -280,34 +280,28 @@ http_archive(
# the build process. To update the dependency, update the reference commit in
# rust-deps/BUILD.bazel and run `bazel run //rust-deps:crates_vendor -- --repin`

# Based on https://github.com/bazelbuild/bazel/blob/master/third_party/zlib/BUILD.
_zlib_build = """
cc_library(
name = "zlib",
srcs = glob(["*.c"]),
hdrs = glob(["*.h"]),
includes = ["."],
# Workaround for zlib warnings and mac compilation. Some issues were resolved in v1.3, but there are still implicit function declarations.
copts = [
"-w",
"-Dverbose=-1",
] + select({
"@platforms//os:linux": [ "-Wno-implicit-function-declaration" ],
"@platforms//os:macos": [ "-Wno-implicit-function-declaration" ],
"//conditions:default": [],
}),
visibility = ["//visibility:public"],
)
"""
# rules_foreign_cc
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

# Rule repository, note that it's recommended to use a pinned commit to a released version of the rules
http_archive(
name = "rules_foreign_cc",
sha256 = "2a4d07cd64b0719b39a7c12218a3e507672b82a97b98c6a89d38565894cf7c51",
strip_prefix = "rules_foreign_cc-0.9.0",
url = "https://github.com/bazelbuild/rules_foreign_cc/archive/refs/tags/0.9.0.tar.gz",
)

load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")

# This sets up some common toolchains for building targets. For more details, please see
# https://github.com/bazelbuild/rules_foreign_cc/tree/main/docs#rules_foreign_cc_dependencies
rules_foreign_cc_dependencies()

git_repository(
name = "zlib",
build_file_content = _zlib_build,
sha256 = "38ef96b8dfe510d42707d9c781877914792541133e1870841463bfa73f883e32",
strip_prefix = "zlib-1.3.1",
# Using the .tar.xz artifact from the release page – for many other dependencies we use a
# snapshot based on the tag of a release instead.
urls = ["https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.xz"],
build_file = "//:build/BUILD.zlib",
commit = "71660e196bcfc74b2c657a46b512037cb49079a2",
remote = "https://chromium.googlesource.com/chromium/src/third_party/zlib.git",
)

http_file(
Expand Down
13 changes: 13 additions & 0 deletions build/BUILD.zlib
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")

filegroup(
name = "all_srcs",
srcs = glob(["**"]),
)

cmake(
name = "zlib",
lib_source = "@zlib//:all_srcs",
visibility = ["//visibility:public"],
lib_name = "libz",
)
218 changes: 109 additions & 109 deletions src/workerd/api/node/tests/zlib-nodejs-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -217,114 +217,114 @@ export const crc32Test = {

export const constantsTest = {
test() {
deepStrictEqual(Object.keys(constants).sort(), [
"BROTLI_DECODE",
"BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES",
"BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP",
"BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES",
"BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1",
"BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2",
"BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS",
"BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET",
"BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1",
"BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2",
"BROTLI_DECODER_ERROR_FORMAT_CL_SPACE",
"BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT",
"BROTLI_DECODER_ERROR_FORMAT_DICTIONARY",
"BROTLI_DECODER_ERROR_FORMAT_DISTANCE",
"BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE",
"BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE",
"BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE",
"BROTLI_DECODER_ERROR_FORMAT_PADDING_1",
"BROTLI_DECODER_ERROR_FORMAT_PADDING_2",
"BROTLI_DECODER_ERROR_FORMAT_RESERVED",
"BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET",
"BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME",
"BROTLI_DECODER_ERROR_FORMAT_TRANSFORM",
"BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS",
"BROTLI_DECODER_ERROR_INVALID_ARGUMENTS",
"BROTLI_DECODER_ERROR_UNREACHABLE",
"BROTLI_DECODER_NEEDS_MORE_INPUT",
"BROTLI_DECODER_NEEDS_MORE_OUTPUT",
"BROTLI_DECODER_NO_ERROR",
"BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION",
"BROTLI_DECODER_PARAM_LARGE_WINDOW",
"BROTLI_DECODER_RESULT_ERROR",
"BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT",
"BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT",
"BROTLI_DECODER_RESULT_SUCCESS",
"BROTLI_DECODER_SUCCESS",
"BROTLI_DEFAULT_MODE",
"BROTLI_DEFAULT_QUALITY",
"BROTLI_DEFAULT_WINDOW",
"BROTLI_ENCODE",
"BROTLI_LARGE_MAX_WINDOW_BITS",
"BROTLI_MAX_INPUT_BLOCK_BITS",
"BROTLI_MAX_QUALITY",
"BROTLI_MAX_WINDOW_BITS",
"BROTLI_MIN_INPUT_BLOCK_BITS",
"BROTLI_MIN_QUALITY",
"BROTLI_MIN_WINDOW_BITS",
"BROTLI_MODE_FONT",
"BROTLI_MODE_GENERIC",
"BROTLI_MODE_TEXT",
"BROTLI_OPERATION_EMIT_METADATA",
"BROTLI_OPERATION_FINISH",
"BROTLI_OPERATION_FLUSH",
"BROTLI_OPERATION_PROCESS",
"BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING",
"BROTLI_PARAM_LARGE_WINDOW",
"BROTLI_PARAM_LGBLOCK",
"BROTLI_PARAM_LGWIN",
"BROTLI_PARAM_MODE",
"BROTLI_PARAM_NDIRECT",
"BROTLI_PARAM_NPOSTFIX",
"BROTLI_PARAM_QUALITY",
"BROTLI_PARAM_SIZE_HINT",
"DEFLATE",
"DEFLATERAW",
"GUNZIP",
"GZIP",
"INFLATE",
"INFLATERAW",
"UNZIP",
"ZLIB_VERNUM",
"Z_BEST_COMPRESSION",
"Z_BEST_SPEED",
"Z_BLOCK",
"Z_BUF_ERROR",
"Z_DATA_ERROR",
"Z_DEFAULT_CHUNK",
"Z_DEFAULT_COMPRESSION",
"Z_DEFAULT_LEVEL",
"Z_DEFAULT_MEMLEVEL",
"Z_DEFAULT_STRATEGY",
"Z_DEFAULT_WINDOWBITS",
"Z_ERRNO",
"Z_FILTERED",
"Z_FINISH",
"Z_FIXED",
"Z_FULL_FLUSH",
"Z_HUFFMAN_ONLY",
"Z_MAX_CHUNK",
"Z_MAX_LEVEL",
"Z_MAX_MEMLEVEL",
"Z_MAX_WINDOWBITS",
"Z_MEM_ERROR",
"Z_MIN_CHUNK",
"Z_MIN_LEVEL",
"Z_MIN_MEMLEVEL",
"Z_MIN_WINDOWBITS",
"Z_NEED_DICT",
"Z_NO_COMPRESSION",
"Z_NO_FLUSH",
"Z_OK",
"Z_PARTIAL_FLUSH",
"Z_RLE",
"Z_STREAM_END",
"Z_STREAM_ERROR",
"Z_SYNC_FLUSH",
"Z_VERSION_ERROR"
]);
deepStrictEqual(constants, {
"Z_NO_FLUSH": 0,
"Z_PARTIAL_FLUSH": 1,
"Z_SYNC_FLUSH": 2,
"Z_FULL_FLUSH": 3,
"Z_FINISH": 4,
"Z_BLOCK": 5,
"Z_OK": 0,
"Z_STREAM_END": 1,
"Z_NEED_DICT": 2,
"Z_ERRNO": -1,
"Z_STREAM_ERROR": -2,
"Z_DATA_ERROR": -3,
"Z_MEM_ERROR": -4,
"Z_BUF_ERROR": -5,
"Z_VERSION_ERROR": -6,
"Z_NO_COMPRESSION": 0,
"Z_BEST_SPEED": 1,
"Z_BEST_COMPRESSION": 9,
"Z_DEFAULT_COMPRESSION": -1,
"Z_FILTERED": 1,
"Z_HUFFMAN_ONLY": 2,
"Z_RLE": 3,
"Z_FIXED": 4,
"Z_DEFAULT_STRATEGY": 0,
"ZLIB_VERNUM": 4865,
"DEFLATE": 1,
"INFLATE": 2,
"GZIP": 3,
"GUNZIP": 4,
"DEFLATERAW": 5,
"INFLATERAW": 6,
"UNZIP": 7,
"BROTLI_DECODE": 8,
"BROTLI_ENCODE": 9,
"Z_MIN_WINDOWBITS": 8,
"Z_MAX_WINDOWBITS": 15,
"Z_DEFAULT_WINDOWBITS": 15,
"Z_MIN_CHUNK": 64,
"Z_MAX_CHUNK": 131072,
"Z_DEFAULT_CHUNK": 16384,
"Z_MIN_MEMLEVEL": 1,
"Z_MAX_MEMLEVEL": 9,
"Z_DEFAULT_MEMLEVEL": 8,
"Z_MIN_LEVEL": -1,
"Z_MAX_LEVEL": 9,
"Z_DEFAULT_LEVEL": -1,
"BROTLI_OPERATION_PROCESS": 0,
"BROTLI_OPERATION_FLUSH": 1,
"BROTLI_OPERATION_FINISH": 2,
"BROTLI_OPERATION_EMIT_METADATA": 3,
"BROTLI_PARAM_MODE": 0,
"BROTLI_MODE_GENERIC": 0,
"BROTLI_MODE_TEXT": 1,
"BROTLI_MODE_FONT": 2,
"BROTLI_DEFAULT_MODE": 0,
"BROTLI_PARAM_QUALITY": 1,
"BROTLI_MIN_QUALITY": 0,
"BROTLI_MAX_QUALITY": 11,
"BROTLI_DEFAULT_QUALITY": 11,
"BROTLI_PARAM_LGWIN": 2,
"BROTLI_MIN_WINDOW_BITS": 10,
"BROTLI_MAX_WINDOW_BITS": 24,
"BROTLI_LARGE_MAX_WINDOW_BITS": 30,
"BROTLI_DEFAULT_WINDOW": 22,
"BROTLI_PARAM_LGBLOCK": 3,
"BROTLI_MIN_INPUT_BLOCK_BITS": 16,
"BROTLI_MAX_INPUT_BLOCK_BITS": 24,
"BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING": 4,
"BROTLI_PARAM_SIZE_HINT": 5,
"BROTLI_PARAM_LARGE_WINDOW": 6,
"BROTLI_PARAM_NPOSTFIX": 7,
"BROTLI_PARAM_NDIRECT": 8,
"BROTLI_DECODER_RESULT_ERROR": 0,
"BROTLI_DECODER_RESULT_SUCCESS": 1,
"BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT": 2,
"BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT": 3,
"BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION": 0,
"BROTLI_DECODER_PARAM_LARGE_WINDOW": 1,
"BROTLI_DECODER_NO_ERROR": 0,
"BROTLI_DECODER_SUCCESS": 1,
"BROTLI_DECODER_NEEDS_MORE_INPUT": 2,
"BROTLI_DECODER_NEEDS_MORE_OUTPUT": 3,
"BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE": -1,
"BROTLI_DECODER_ERROR_FORMAT_RESERVED": -2,
"BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE": -3,
"BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET": -4,
"BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME": -5,
"BROTLI_DECODER_ERROR_FORMAT_CL_SPACE": -6,
"BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE": -7,
"BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT": -8,
"BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1": -9,
"BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2": -10,
"BROTLI_DECODER_ERROR_FORMAT_TRANSFORM": -11,
"BROTLI_DECODER_ERROR_FORMAT_DICTIONARY": -12,
"BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS": -13,
"BROTLI_DECODER_ERROR_FORMAT_PADDING_1": -14,
"BROTLI_DECODER_ERROR_FORMAT_PADDING_2": -15,
"BROTLI_DECODER_ERROR_FORMAT_DISTANCE": -16,
"BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET": -19,
"BROTLI_DECODER_ERROR_INVALID_ARGUMENTS": -20,
"BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES": -21,
"BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS": -22,
"BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP": -25,
"BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1": -26,
"BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2": -27,
"BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES": -30,
"BROTLI_DECODER_ERROR_UNREACHABLE": -31
});
}
}

0 comments on commit 00128a8

Please sign in to comment.