Accepting request 866954 from home:avindra:devel:languages:javascript

+deno

OBS-URL: https://build.opensuse.org/request/show/866954
OBS-URL: https://build.opensuse.org/package/show/devel:languages:javascript/deno?expand=0&rev=1
This commit is contained in:
Avindra Goolcharan 2021-01-26 16:32:04 +00:00 committed by Git OBS Bridge
commit 93a36a1724
9 changed files with 497 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

28
_constraints Normal file
View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Trying constraint per:
https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/G4HX77LQANTQTZMARIU4XQI4JT3RCEQ7/#G3N7PCAUIIVPO63V5QYKY6QMZK4TEP2Q
-->
<constraints>
<hardware>
<disk>
<size unit="G">4</size>
</disk>
<physicalmemory>
<size unit="G">9</size>
</physicalmemory>
<memoryperjob>
<size unit="G">1</size>
</memoryperjob>
</hardware>
<overwrite>
<conditions>
<arch>aarch64</arch>
</conditions>
<hardware>
<physicalmemory>
<size unit="G">15</size>
</physicalmemory>
</hardware>
</overwrite>
</constraints>

144
_service Normal file
View File

@ -0,0 +1,144 @@
<!--
# vim: set syntax=xml
-->
<services>
<!--
Build Deno and rusty_v8 as completely from
scratch as we can. We pull in all the sources
through git.
TODO: migrate to obs_scm as soon as "exclude"
works there.
-->
<service name="tar_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://github.com/denoland/deno</param>
<param name="revision">ffb4b32e9246dec2d452f81d530e8738e19e5a4e</param>
<param name="version">1.7.0</param>
<!-- remove large docs -->
<param name="exclude">docs</param>
<param name="exclude">Releases.md</param>
<param name="exclude">CODE*.md</param>
<param name="exclude">*/README.md</param>
<param name="exclude">**/*/*.md</param>
<!-- remove things not required for build -->
<param name="exclude">.editorconfig</param>
<param name="exclude">.github</param>
<param name="exclude">.gitattributes</param>
<param name="exclude">tools</param>
<param name="exclude">third_party</param>
<param name="exclude">cli/tests</param>
<param name="exclude">test_util/wpt</param>
<param name="exclude">std/wasi/testdata</param>
<param name="exclude">core/examples</param>
<param name="exclude">runtime/examples</param>
</service>
<service name="tar_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://github.com/denoland/rusty_v8</param>
<param name="revision">v0.16.0</param>
<param name="version">0.16.0</param>
<param name="exclude">.github</param>
<!--
mirror pruning of build tree expressed in Cargo.toml
except for LICENSE +README, which we ship
-->
<param name="exclude">*.settings</param>
<param name="exclude">*.txt</param>
<param name="exclude">AUTHORS</param>
<param name="exclude">build/android</param>
<param name="exclude">build/chromeos</param>
<param name="exclude">build/fuchsia</param>
<!-- todo: send upstream: deno doesnt run on 32-bit
<param name="exclude">v8/src/compiler/backend/ia32</param>
<param name="exclude">v8/src/codegen/ia32</param>
<param name="exclude">v8/src/builtins/ia32</param>
<param name="exclude">v8/src/execution/ia32</param>
<param name="exclude">v8/src/diagnostics/ia32</param>
<param name="exclude">v8/src/wasm/baseline/ia32</param>
<param name="exclude">v8/src/regexp/ia32</param>
-->
<!-- additional platforms that can be dropped todo: send relevant upstream
<param name="exclude">build/apple</param>
<param name="exclude">build/ios</param>
<param name="exclude">build/mac</param>
<param name="exclude">build/win</param>
<param name="exclude">build/toolchain/win</param>
<param name="exclude">build/toolchain/mac</param>
<param name="exclude">build/toolchain/apple</param>
<param name="exclude">build/toolchain/aix</param>
<param name="exclude">build/toolchain/android</param>
<param name="exclude">build/toolchain/fuchsia</param>
-->
<!-- todo: send this batch upstream:
<param name="exclude">build/config/android</param>
<param name="exclude">build/config/ios</param>
<param name="exclude">build/config/mac</param>
<param name="exclude">build/config/win</param>
<param name="exclude">build/config/fuchsia</param>
<param name="exclude">build/config/chromeos</param>
<param name="exclude">build/config/chromecast</param>
<param name="exclude">build/config/aix</param>
<param name="exclude">build/config/apple</param>
-->
<param name="exclude">buildtools/checkdeps</param>
<param name="exclude">buildtools/clang_format</param>
<param name="exclude">buildtools/third_party/libc++/trunk/benchmarks</param>
<param name="exclude">buildtools/third_party/libc++/trunk/docs</param>
<param name="exclude">buildtools/third_party/libc++/trunk/lib</param>
<param name="exclude">buildtools/third_party/libc++/trunk/test</param>
<param name="exclude">buildtools/third_party/libc++/trunk/utils</param>
<param name="exclude">buildtools/third_party/libc++/trunk/www</param>
<param name="exclude">buildtools/third_party/libc++abi/trunk/test</param>
<param name="exclude">v8/ChangeLog</param>
<param name="exclude">v8/benchmarks/</param>
<param name="exclude">v8/docs/</param>
<param name="exclude">v8/samples</param>
<!-- tests are bloated but there isnt a clear way to skip
<param name="exclude">v8/test/cctest</param>
<param name="exclude">v8/test/mjsunit</param>
<param name="exclude">v8/test/webkit</param>
<param name="exclude">v8/test/unittests</param>
<param name="exclude">v8/test/inspector</param>
<param name="exclude">v8/test/debugger</param>
<param name="exclude">v8/test/js-perf-test</param>
<param name="exclude">v8/test/intl</param>
<param name="exclude">v8/test/message</param>
-->
<param name="exclude">v8/tools/*.js</param>
<param name="exclude">v8/tools/*.mjs</param>
<param name="exclude">v8/tools/*.html</param>
<param name="exclude">v8/tools/turbolizer</param>
<param name="exclude">v8/tools/clusterfuzz</param>
<!--
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When trimming the build.... remember that the following files
are required to build and cannot be the subject of any
exclusion rules:
v8/test (most things)
v8/test/torque/test-torque.tq
v8/tools/gen-postmortem-metadata.py
v8/tools/js2c.py
v8/tools/run.py
v8/tools/snapshot/asm_to_inline_asm.py
v8/tools/testrunner/utils/dump_build_config.py
-->
</service>
<service name="tar" mode="manual"/>
<service name="recompress" mode="manual">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
</services>

3
deno-1.7.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:41f946875a6ee772ae6db55e1bde4be5382c8d24ea9e429a6487c5fa9cd05c4b
size 2100776

153
deno.changes Normal file
View File

@ -0,0 +1,153 @@
-------------------------------------------------------------------
Wed Jan 20 14:08:20 UTC 2021 - Avindra Goolcharan <avindra@opensuse.org>
- update to v1.7.0
* upgrade: rusty_v8 0.16.0, v8 8.9.255.3
* upgrade: tokio 1.0
* upgrade: Rust 1.49.0
* upgrade: deno_doc, deno_lint, dprint, swc_ecmascript, swc_bundler
* upgrade: deno_lint to 0.2.16
* upgrade: swc_bundler 0.19.2
* BREAKING(std/wasi): hide implementation details
* BREAKING(std/wasi): return exit code from start
* BREAKING(unstable): Use hosts for net allowlists
* BREAKING(unstable): remove CreateHttpClientOptions.caFile
* feat(std/wasi): allow stdio resources to be specified
* feat(unstable): add Deno.resolveDns API
* feat(unstable): runtime compiler APIs consolidated to Deno.emit()
* feat: Add WorkerOptions interface to type declarations
* feat: Add configurable permissions for Workers
* feat: Standalone lite binaries and cross compilation
* feat: add --location= and globalThis.location
* feat: add global tls session cache
* feat: add markdown support to deno fmt
* feat: add utf-16 and big5 to TextEncoder/TextDecoder
* feat: denort binary
* feat: stabilize Deno.shutdown() and Conn#closeWrite()
* feat: support data urls
* feat: support runtime flags for deno compile
* feat: upload release zips to dl.deno.land
* fix(cli): dispatch unload on exit
* fix(cli): print a newline after help and version
* fix(coverage): do not store source inline in raw reports
* fix(coverage): merge duplicate reports
* fix(coverage): report partial lines as uncovered
* fix(inspector): kill child process after test
* fix(install): fix cached-only flag
* fix(lsp): Add textDocument/implementation
* fix(lsp): Respect client capabilities for config and dynamic registration
* fix(lsp): support specifying a tsconfig file
* fix(op_crates/fetch): add back ReadableStream.getIterator and deprecate
* fix(op_crates/fetch): align streams to spec
* fix(op_crates/fetch): correct regexp for fetch header
* fix(op_crates/fetch): req streaming + 0-copy resp streaming
* fix(op_crates/web) let TextEncoder#encodeInto accept detached ArrayBuffers
* fix(op_crates/web): Use WorkerLocation for location in workers
* fix(op_crates/web): fix atob to throw spec aligned DOMException
* fix(op_crates/websocket): respond to ping with pong
* fix(std): Don't use JSDoc syntax for browser-compatibility headers
* fix(std/http): Use ES private fields in server
* fix(std/http): parsing of HTTP version header
* fix(std/node): resolve files in symlinked directories
* fix(watcher): keep working even when imported file has invalid syntax
* fix: Use "none" instead of false to sandbox Workers
* fix: Worker hangs when posting "undefined" as message
* fix: align DOMException API to the spec and add web platform testing of it.
* fix: don't error on version and help flag
* fix: don't swallow customInspect exceptions
* fix: enable WPT tests
* fix: full commit hash in canary compile download
* fix: ignore "use asm"
* fix: implement DOMException#code
* fix: incremental build for deno declaration files
* fix: panic during deno compile with no args
* fix: panic on invalid file:// module specifier
* fix: race condition in file watcher
* fix: redirect in --location relative fetch
* fix: stronger input checking for setTimeout; add function overload
* fix: use inline source maps when present in js
* fix: use tokio for async fs ops
* refactor(cli): remove 'js' module, simplify compiler snapshot
* refactor(op_crates/crypto): Prefix ops with "op_crypto_"
* refactor(op_crates/websocket): refactor event loop
* refactor: Print cause chain when downcasting AnyError fails
* refactor: make Process#kill() throw sensible errors on Windows
* refactor: move WebSocket API to an op_crate
- pass -s to link flags to strip debug symbols from binary
- revendor: apply mktemp fix from Matthias Eliasson (re: boo#1180782)
-------------------------------------------------------------------
Thu Dec 31 20:57:31 UTC 2020 - Avindra Goolcharan <avindra@opensuse.org>
- update to v1.6.3
* upgrade: rusty_v8 0.15.0, v8 8.8.294
* upgrade: dprint, swc_bundler, swc_common, swc_ecmascript
* feat(lsp): Add cache command
* feat(lsp): Implement textDocument/rename
* feat(std/node): adds fs.mkdtemp & fs.mkdtempSync
* feat(unstable): collect coverage from the run command
* fix(core): Fix incorrect index in Promise.all error reporting
* fix(lsp): handle ts debug errors better
* fix(lsp): provide diagnostics for unresolved modules
* fix(std/http): Don't expose ServerRequest::done as Deferred
* fix: fetch bad URL will not panic
* fix: info does not panic on missing modules
-------------------------------------------------------------------
Mon Dec 28 05:46:18 UTC 2020 - Avindra Goolcharan <avindra@opensuse.org>
- Build from the 2 source repos (deno and rusty_v8)
* No need to depend on published crate
- Add revendor_source.sh to carry the bucket for "cargo vendor"
- Remove ninja/gn env vars (fix upstreamed)
- Optimize exclusions (including removal of winapi binaries)
-------------------------------------------------------------------
Fri Dec 25 20:04:58 UTC 2020 - Avindra Goolcharan <avindra@opensuse.org>
- update to v1.6.2
* upgrade TypeScript to 4.1.3
* feat(lsp): support the unstable setting
* feat(std/node): Added os.type
* feat(unstable): record raw coverage into a directory
* feat(unstable): support in memory certificate data for Deno.createHttpClient
* fix: atomically write files to $DENO_DIR
* fix: implement ReadableStream fetch body handling
* fix: make DNS resolution async
* fix: make dynamic import errors catchable
* fix: respect enable flag for requests in lsp
* refactor: optimise static assets in lsp
* refactor: rename runtime/rt to runtime/js
* refactor: rewrite lsp to be async
* refactor: rewrite ops to use ResourceTable2
-------------------------------------------------------------------
Sun Dec 20 11:30:43 UTC 2020 - Avindra Goolcharan <avindra@opensuse.org>
- Build completely from source
- Dropped librusty_v8_release_x86_64-unknown-linux-gnu.a
-------------------------------------------------------------------
Sat Dec 19 08:57:04 UTC 2020 - Avindra Goolcharan <avindra@opensuse.org>
- update to v1.6.1
* upgrade: swc_ecmascript to 0.15.0
* feat(lsp): support import maps
* fix(compile): error when the output path already exists
* fix(lsp): only resolve sources with supported schemas
* fix(op_crates/fetch): support non-ascii response headers value
* fix(repl): recover from invalid input
* fix: show canary string in long version
* fix: zsh completions
* refactor: deno_runtime crate
- includes v1.6.0
* rusty_v8 updated to 0.14.0
* break: std/bytes changes
* break: isolatedModules non-configurable
- add _constraints to request memory for build
- cleanup description
-------------------------------------------------------------------
Fri Dec 4 02:20:19 UTC 2020 - Avindra Goolcharan <avindra@opensuse.org>
- init pkg at v1.5.4

79
deno.spec Normal file
View File

@ -0,0 +1,79 @@
#
# spec file for package deno
#
# Copyright (c) 2021 SUSE LLC
# Copyright (c) 2020-2021 Avindra Goolcharan <avindra@opensuse.org>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: deno
Version: 1.7.0
Release: 0
Summary: A secure JavaScript and TypeScript runtime
License: MIT
Group: Productivity/Other
URL: https://github.com/denoland/deno
Source0: %{name}-%{version}.tar.xz
Source1: vendor.tar.xz
Source99: revendor_source.sh
BuildRequires: clang
BuildRequires: gn
BuildRequires: lld
BuildRequires: llvm
BuildRequires: ninja
BuildRequires: pkgconfig
BuildRequires: python
BuildRequires: python2-setuptools
BuildRequires: rust-packaging
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gmodule-2.0)
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gthread-2.0)
# deno does not build on 32-bit archs
ExclusiveArch: x86_64 aarch64 ppc64 ppc64le s390x
%description
A JavaSript platform built on V8 with built-in TypeScript, with
secure, sandboxed defaults.
Supports and uses ES modules. Remote code is fetched and cached
on first execution, and only updated when deno run is called
with --reload.
%prep
%autosetup -a1 -p1
%define cargo_registry $(pwd)/vendor
%{cargo_prep}
%build
export V8_FROM_SOURCE=1
export CLANG_BASE_PATH=%{_prefix}
# https://www.chromium.org/developers/gn-build-configuration
export GN_ARGS="enable_nacl = false blink_symbol_level = 0"
# enable binary stripping
export RUSTFLAGS="%{__global_rustflags} -Clink-arg=-s"
%{cargo_build}
%install
# place deno cli manually (cannot cargo install)
mkdir -p %{buildroot}%{_bindir}
cp target/release/{deno,denort} %{buildroot}%{_bindir}
%files
%license LICENSE.md
%doc README.md
%{_bindir}/%{name}
%{_bindir}/%{name}rt
%changelog

63
revendor_source.sh Normal file
View File

@ -0,0 +1,63 @@
#!/bin/sh
set -euo pipefail
# packaging helper to workaround:
# https://github.com/rust-lang/cargo/issues/9054
# https://github.com/rust-lang/cargo/issues/7058#issuecomment-751589229
# This script merges rusty_v8 into place from source,
# and nukes superfluous source objects.
#
# output is a single, merged vendor tarball
wd="$(mktemp -d /tmp/revendor.XXXXX)"
# take what we need into the build
cp rusty_v8*xz $wd
cp vendor*xz $wd
cd $wd
echo -n "Extracting vendor..."
tar xf vendor*xz
echo "done"
echo -n "Extracting rusty_v8..."
tar xf rusty*xz \
--exclude="Cargo.toml" \
--exclude="Cargo.lock"
echo " done"
# take vendored Cargo toml and lock which
# can still be used
cp vendor/rusty_v8/{Cargo.*,.cargo*} .
# get rid of everything else
rm -fr vendor/rusty_v8
# drop version prefix
target=$(find . -name "rusty_v8-*" -type d)
mv $target rusty_v8
# insert proper files
mv Cargo.* .cargo* rusty_v8
echo "Check final rusty_v8 root:"
ls -la rusty_v8
mv rusty_v8 vendor
# extra: workaround winapi bloat
# by ejecting it from the build
#
# https://github.com/rust-lang/cargo/issues/7058
echo -n "Pruning winapi bloat... "
rm -fr vendor/winapi*gnu*/lib/*.a
echo "done"
# remake tarball
echo -n "Compressing archive... "
tar -cf - vendor/ | xz -6 -c - > vendor-merged.tar.xz
echo "done"
echo "Inspect the tarball and replace the"
echo "existing one if it's ok. Should be under 30MB."
ls -lh "$wd/vendor-merged.tar.xz"

3
vendor.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:49beaaae71fed5cdf69ac2daebad5ff2f82122ea8152be5891aedafc81b9ce41
size 34556068