File code.spec of Package code
#
# spec file for package code
#
# Copyright (c) 2022 Bruno Pitrus.
# Based on the Arch Linux PKGBUILD (c) Filipe Laíns, Michael Hansen, Francisco Magalhães
#
%global flavor @BUILD_FLAVOR@%{nil}
# Do not check for npm requires or provides in app.asar
%if "%{flavor}" == ""
%global __provides_exclude ^npm(.*)|^nodejs(.*)
%global __requires_exclude ^npm(.*)|^nodejs(.*)|^/usr/lib
%endif
%if "%{flavor}" == "languageservers"
%global __requires_exclude ^npm(.*)
%endif
%global onig_req_version 1.7.0
%global tree_sitter_req_version 0.1.3
%if "%{flavor}" == ""
Name: code
License: Apache-2.0 and (Apache-2.0 or MPL-2.0) and BSD-3-Clause and CC-BY-4.0 and ISC and MIT and MPL-2.0 and Unicode-DFS-2016 and W3C-20150513
Summary: Visual Studio Code. Code editing. Redefined.
Group: Development/Tools/IDE
%endif
%if "%{flavor}" == "languageservers"
Name: vscode-languageservers
License: MIT
Summary: Language servers for CSS and JSON
Group: Development/Tools/Other
%endif
Version: 1.98.2
Release: 0
URL: https://github.com/microsoft/vscode
%if "%{flavor}" == ""
#x86 electron requires SSE2
%ifarch %ix86
ExclusiveArch: i586 i686
BuildArch: i686
%{expand:%%global optflags %(echo "%optflags") -march=pentium4 -mtune=generic}
%endif
%endif
%if "%{flavor}" == "languageservers"
BuildArch: noarch
%endif
#Needed for devtools jsmaps to work
Source0: https://github.com/microsoft/vscode/archive/refs/tags/%{version}.tar.gz
#created by prepare-vendor.sh
Source1: vendor.tar.zst
Source3: code-oss.mjs
# openSUSE-specific fixes
Patch1: product_json.patch
Patch3: remove-git.patch
Patch4: remove-marketplace-extensions.patch
Patch5: do-not-download-electron.patch
Patch6: no-asar.patch
Patch7: install-font-systemwide.patch
Patch13: product.json-reproducible-date.patch
%ifarch %ix86 %arm
Patch15: do-not-gulp-all-memory.patch
%else
Source15: do-not-gulp-all-memory.patch
%endif
#Remove prebuild-install which is incorrectly specified as runtime dependency and brings a lot of garbage
#see https://github.com/microsoft/vscode/issues/143395
Patch17: Remove-build-time-dependencies.patch
Patch18: vscode-l10n-dev-use-tree-sitter.patch
Patch20: no-comments-or-sourcemaps.patch
Patch21: webpack-no-source-maps.patch
Patch22: code.sh.patch
Patch23: spdlog-no-version-check.patch
Patch24: test-electron-path.patch
Patch25: id.test-skip.patch
Patch27: terminalProfiles.test-skip.patch
Patch28: test-node-timeout.patch
Patch29: textSearch.integrationTest-ripgrep-skip.patch
Patch30: test-extensions-skip.patch
Patch31: test-integration-electron-node-path.patch
Patch33: node-pty-unixTerminal.test-flaky.patch
Patch34: node-pty-no-compile-commands.patch
Patch35: kerberos-link.patch
# patches to use system libs
Patch1005: ripgrep.patch
Patch1006: Use-system-spdlog.patch
Patch1007: sqlite-remove-gcc-symbol-versions.patch
Patch1008: system-esbuild.patch
# patches fixing interaction with third-party software
Patch2000: Fix-restart-opening-electron-default-app.patch
Patch2009: fix-exe-path.patch
Patch2012: webpack-openssl-3-0.patch
Patch2013: tree-sitter-cxx20.patch
# patches that should be submitted upstream verbatim or near-verbatim
Patch3004: e31-nan-CopyablePersistentTraits.patch
Patch3005: e33-nan-SetAccessor.patch
Patch3006: e33-nan-IdleNotificationDeadline.patch
Patch3007: e33-nan-ScriptOrigin.patch
# openSUSE added features that upstream does not want
Patch4010: https://raw.githubusercontent.com/VSCodium/vscodium/b9975ba5d2b68560bc98328d9a2e0609c6a06050/patches/merge-user-product.patch
# patches to remove upstream hostility (DRM etc.)
Patch5000: esbuild_version.patch
Patch5001: extensions-esbuild_version.patch
Patch5014: allow-proposed-extension-apis.patch
Patch5015: https://raw.githubusercontent.com/VSCodium/vscodium/7fab58adba1c7872ceb05ce8d42f0c6b5a8abded/patches/remove-mangle.patch
Patch5016: extensions-disable-mangler.patch
#tools we use explicitly
%if "%{flavor}" == ""
BuildRequires: git-core
BuildRequires: increase-file-max
%if 0%{?fedora_version}
BuildRequires: yarnpkg
%define _ttfontsdir %{_datadir}/fonts/truetype
%else
BuildRequires: yarn
%endif
BuildRequires: fontpackages-devel ImageMagick jq sed
BuildRequires: nodejs-electron-devel >= 27
#Tools used by yarn
BuildRequires: pkgconfig(libsecret-1) pkgconfig(sqlite3) pkgconfig(x11) pkgconfig(xkbfile) spdlog-devel
BuildRequires: pkgconfig(krb5)
# there are breaking API changes between esbuild 0.16 and 0.17
BuildRequires: esbuild >= 0.17
# for tree sitter
BuildRequires: nodejs-devel
BuildRequires: nodejs-vscode-oniguruma-devel = %onig_req_version
Requires: nodejs-vscode-oniguruma = %onig_req_version
BuildRequires: nodejs-vscode-tree-sitter-wasm-devel = %tree_sitter_req_version
Requires: nodejs-vscode-tree-sitter-wasm = %tree_sitter_req_version
Requires: nodejs-electron%{_isa} >= 27
Requires: /usr/bin/rg
Requires: /usr/bin/xdg-open
#Needed by @vscode/proxy-agent
%if 0%{?fedora_version}
BuildRequires: ca-certificates
Requires: ca-certificates
%else
%ifnarch riscv64 %ix86
BuildRequires: ca-certificates-mozilla
%endif
Requires: ca-certificates-mozilla
%endif
#for tests
%ifnarch riscv64 %ix86
%if 0%{?fedora}
BuildRequires: Xvfb
%else
BuildRequires: xvfb-run
BuildRequires: fonts-config
%endif
BuildRequires: font(sourcecodepro)
BuildRequires: ripgrep
%endif
#node-pty test
BuildRequires: procps
# native-is-elevated test
BuildRequires: fakeroot
%endif
%if "%{flavor}" == "languageservers"
Enhances: kate-plugins
%endif
BuildRequires: fdupes
BuildRequires: nodejs-packaging
%if 0%{?fedora} >= 37
BuildRequires: nodejs-npm
%else
BuildRequires: npm
%endif
BuildRequires: zstd
%if 0%{?suse_version} > 1500 || 0%{?fedora_version}
BuildRequires: gcc >= 11
BuildRequires: gcc-c++ >= 11
%else
BuildRequires: gcc14-PIE
BuildRequires: gcc14-c++
%endif
%if "%{flavor}" == ""
%description
Visual Studio Code is an IDE developed by Microsoft that combines the simplicity of a code editor with what developers need for the core edit-build-debug cycle.
This is an open-source release of Code built from the official code-oss repository.
%endif
%if "%{flavor}" == "languageservers"
%description
These are the standalone versions of the language servers included in Visual Studio Code.
They are usable in any editor implementing the LSP client protocol, such as Kate.
This package includes the CSS and JSON servers.
%package -n vscode-html-languageserver
Summary: Language server for HTML
Group: Development/Tools/Other
Requires: npm(typescript)
Enhances: kate-plugins
%description -n vscode-html-languageserver
This is a standalone version of the HTML language server included in Visual Studio Code.
It is usable in any editor implementing the LSP client protocol, such as Kate.
%endif
%prep
ulimit -Ha
%autosetup -p1 -n vscode-%{version} -a 1
rm -v node_modules/@vscode/ripgrep/lib/{download,postinstall}.js
#It should use system xdg-open, see index.js in the package
rm -v node_modules/open/xdg-open
# see remove-build-time-dependencies.patch and ripgrep.patch
rm -rvf node_modules/@vscode/sqlite3/node_modules/{tar,minipass}
rm -rvf node_modules/@vscode/ripgrep/node_modules/{agent-base,https-proxy-agent,debug,yauzl}
rm -rvf node_modules/@vscode/windows-mutex/{LICENSE,node_modules/bindings}
#fails to build, only used in @vscode/proxy-ageng and guarded by `process.platform === 'win32'`
rm -rvf {,remote/}node_modules/@vscode/windows-ca-certs
%if "%{flavor}" == ""
#Sanity check that we've declared the correct version in header
test $(jq -cj '.version' node_modules/vscode-oniguruma/package.json) = %{onig_req_version}
test $(jq -cj '.version' node_modules/@vscode/tree-sitter-wasm/package.json) = %{tree_sitter_req_version}
find -name vscode-oniguruma -exec sh -c 'rm -rf {} && ln -sv %{nodejs_sitelib}/vscode-oniguruma {}' \; ||true
find -name tree-sitter-wasm -exec sh -c 'rm -rf {} && ln -sv %{nodejs_sitelib}/@vscode/tree-sitter-wasm {}' \; ||true
%endif
sed -i 's#XXXLIBEXECDIRXXX#%{_libexecdir}#g' src/vs/platform/lifecycle/electron-main/lifecycleMainService.ts src/vs/code/node/cli.ts
sed -i 's#XXXLIBDIRXXX#%{_libdir}#g' resources/linux/bin/code.sh
%if "%{flavor}" == ""
#Remove postinstall script
jq -cj 'del(.scripts.postinstall)' package.json > tmp
mv -v tmp package.json
%endif
# Install font systemwide
mv -v src/vs/base/browser/ui/codicons/codicon/codicon.ttf %{_builddir}/
mv -v extensions/theme-seti/icons/seti.woff %{_builddir}/
rm -v extensions/simple-browser/node_modules/@vscode/codicons/dist/codicon.ttf
%if "%{flavor}" == ""
mkdir %{_builddir}/path
#some scripts have #1/usr/bin/env python
ln -sv %{_bindir}/python3 %{_builddir}/path/python
%endif
%build
#work around bsc#1216691
export SOURCE_DATE_EPOCH="$(stat --printf=%Y LICENSE.txt)"
export CFLAGS="%{optflags} -fpic -fno-semantic-interposition -fvisibility=hidden"
export CXXFLAGS="%{optflags} -fpic -fno-semantic-interposition -fvisibility=hidden"
export LDFLAGS="%{?build_ldflags}"
export MAKEFLAGS="%{_smp_mflags}"
export AR=gcc-ar
export NM=gcc-nm
export RANLIB=gcc-ranlib
%if 0%{?suse_version} && 0%{?suse_version} <= 1500
export CC=gcc-14
export CXX=g++-14
export AR=gcc-ar-14
export NM=gcc-nm-14
export RANLIB=gcc-ranlib-14
#/suse_version <= 1500
%endif
%if "%{flavor}" == ""
export YARN_CACHE_FOLDER=%{_builddir}/Yarn
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
export ESBUILD_BINARY_PATH=/usr/bin/esbuild
#see build/lib/getVersion.js
export BUILD_SOURCEVERSION=$(zcat %SOURCE0 | git get-tar-commit-id)
export VSCODE_BUILD_VERBOSE=1
cd %{_builddir}/vscode-%{version}
# Build native deps using electron instead of node because the system node may be too new
find -name node_modules -print0 > modules_list
<modules_list sed -z '/node_modules\/.*\/node_modules/d' | sed -z 's/node_modules$//' | PATH="%{_builddir}/path:$PATH" xargs -0 -I{} -n1 -t -- sh -c ' cd {} && %electron_rebuild --sqlite=/usr || exit 255'
#spurious makefiles remaining, should not get published
rm -rvf node_modules/node-pty/node-addon-api
#This module is windows only, an empty DLL is produced which fails ‰check
rm -rvf node_modules/@vscode/deviceid/build
# see vscode-l10n-dev-use-tree-sitter.patch
cp -prvT {build/,}node_modules/tree-sitter
cp -prvT {build/,}node_modules/tree-sitter-typescript
cp -prvT {build/,}node_modules/nan
# Rebuild this for node, this module does not work in electron so we cannot run gulp in electron
pushd node_modules/tree-sitter
rm -rf build
%if 0%{?suse_version}
NODEJS_DEFAULT_VER=$(echo %nodejs_version|sed 's/\..*//')
%else
NODEJS_DEFAULT_VER=
%endif
CFLAGS="${CFLAGS} -I%{_includedir}/node${NODEJS_DEFAULT_VER}" \
CXXFLAGS="${CXXFLAGS} -I%{_includedir}/node${NODEJS_DEFAULT_VER}" \
npm rebuild --verbose --foreground-scripts \
--nodedir=%{_includedir}/node${NODEJS_DEFAULT_VER}
popd
pushd node_modules/tree-sitter-typescript
rm -rf build
CFLAGS="${CFLAGS} -I%{_includedir}/node${NODEJS_DEFAULT_VER}" \
CXXFLAGS="${CXXFLAGS} -I%{_includedir}/node${NODEJS_DEFAULT_VER}" \
npm rebuild --verbose --foreground-scripts \
--nodedir=%{_includedir}/node${NODEJS_DEFAULT_VER}
popd
#Despite the task name, this is actually arch independent.
yarn gulp vscode-linux-x64-min
yarn gulp vscode-linux-x64-prepare-rpm
pushd .build/linux/rpm/x86_64/rpmbuild/BUILD%{_datadir}/code
# Properly filter out garbage node_modules (mostly leftover from prebuild-install).
# `npm ls` which is now used by the build process filters out only devDependencies
# but prints things unreferenced by anything as `EXTRANEOUS`
# It needs to be called in a loop because extraneous nodules' transitive deps
# aren't marked themselves as extraneous.
while : ; do
extraneous_nodules=$(npm ls --all --omit=dev --parseable --long | grep ':EXTRANEOUS$' | sed 's/:.*//')
if [[ -z "$extraneous_nodules" ]]; then
break
fi
rm -rf $extraneous_nodules
done
popd
#Prepare multiple size icons
cd resources/win32
[ $(identify code.ico | wc -l) = 4 ] #Sanity check
convert code.ico -strip extracted.png
identify extracted-0.png | grep -F 16x16
identify extracted-1.png | grep -F 32x32
identify extracted-2.png | grep -F 128x128
identify extracted-3.png | grep -F 256x256
identify code_70x70.png | grep -F 70x70
identify code_150x150.png | grep -F 150x150
cd ../linux
identify code.png | grep -F 1024x1024
%endif
%if "%{flavor}" == "languageservers"
for i in 'css' 'html' 'json'; do
pushd extensions/$i-language-features/server
npm rebuild --verbose --foreground-scripts
popd
done
for i in 'css' 'html' 'json'; do
pushd extensions/$i-language-features/server
#ignore errors
PATH="%{_builddir}/vscode-%{version}/node_modules/.bin:$PATH" tsc || true
popd
done
%endif
%install
%if "%{flavor}" == ""
cp -ar -t %{buildroot} .build/linux/rpm/x86_64/rpmbuild/BUILD/usr
#Native code does not go in /usr/share
mkdir -pv %{buildroot}%{_libdir}
mv -v %{buildroot}%{_datadir}/code %{buildroot}%{_libdir}
sed -i 's[/usr/share/code/code[code[g' %{buildroot}%{_datadir}/applications/*.desktop
chmod 644 %{buildroot}%{_datadir}/applications/*.desktop
install -pvDm644 %{_builddir}/codicon.ttf -t%{buildroot}%{_ttfontsdir}
install -pvDm644 %{_builddir}/seti.woff -t%{buildroot}%{_ttfontsdir}
install -pvDm755 .build/linux/rpm/x86_64/rpmbuild/BUILD/usr/share/code/bin/code -t %{buildroot}%{_bindir}
install -pvDm755 %{_sourcedir}/code-oss.mjs -t %{buildroot}%{_libexecdir}
sed -i 's[XXXLIBDIRXXX[%{_libdir}[g' %{buildroot}%{_bindir}/code %{buildroot}%{_libexecdir}/code-oss.mjs
cd %{buildroot}%{_libdir}/code
rm -rvf bin
rm -rvf resources/completions
#Remove development garbage
find -name '*~' -type f -delete
find -name 'obj.target' -print0 |xargs -r0 -- rm -rvf
find -name '*.yml' -type f -print -delete
find -name '*.map' -type f -print -delete
find -name '*.mts' -type f -print -delete
find -name '*.flow' -type f -print -delete
find -name '*.mk' -type f -print -delete
find -name '*.Makefile' -type f -print -delete
find -name PoliCheckExclusions.xml -type f -print -delete
find -name jsconfig.json -type f -print -delete
find -name obj.target -print0 |xargs -r0 -- rm -rvf
rm -rvf 'node_modules/@vscode/ripgrep/bin'
rm -rvf 'node_modules/@vscode/sqlite3/tools'
find . -type d -empty -print -delete
#link wasm module which is compiled elsewhere
rm -rvf 'node_modules/vscode-oniguruma'
ln -sv %{nodejs_sitelib}/vscode-oniguruma -t node_modules/
rm -rvf 'node_modules/@vscode/tree-sitter-wasm'
ln -sv %{nodejs_sitelib}/@vscode/tree-sitter-wasm -t node_modules/@vscode/
#Fix file mode
chmod -v 644 out/vs/workbench/contrib/terminal/common/scripts/*.sh #They are snippets, not programs, and don't have a shebang
chmod -R og-w .
cd node_modules
find . -type f -exec chmod 644 {} \;
find . -name '*.node' -exec chmod -v 755 {} \; #for RPM dependency resolution
%fdupes %{buildroot}%{_libdir}
#Install icons
rm -frv %{buildroot}%{_datadir}/pixmaps
mkdir -pv %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps
mv -v %{buildroot}%{_libdir}/code/resources/linux/code.png %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps/code-oss.png
ln -srvf %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps/code-oss.png %{buildroot}%{_libdir}/code/resources/linux/code.png
cd %{_builddir}/vscode-%{version}/resources/win32
install -pvDm644 code_70x70.png %{buildroot}%{_datadir}/icons/hicolor/70x70/apps/code-oss.png
install -pvDm644 code_150x150.png %{buildroot}%{_datadir}/icons/hicolor/150x150/apps/code-oss.png
install -pvDm644 extracted-0.png %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/code-oss.png
install -pvDm644 extracted-1.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/code-oss.png
install -pvDm644 extracted-2.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/code-oss.png
install -pvDm644 extracted-3.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/code-oss.png
%if 0%{?suse_version}
%reconfigure_fonts_scriptlets
%endif
%check
%electron_check_native
cp -pv %{_sourcedir}/code-oss.mjs -t %{_builddir}/
sed -i '1 s[XXXLIBDIRXXX/electron[%{_bindir}[; s[XXXLIBDIRXXX/code[%{_builddir}/VSCode-linux-x64[' %{_builddir}/code-oss.mjs
chmod -v +x %{_builddir}/code-oss.mjs
export INTEGRATION_TEST_ELECTRON_PATH=%{_builddir}/code-oss.mjs
export CI=1 #Skips test that upstream judges to be too flaky to run in a batch environment
#Sandbox works on OBS but not when doing a local build
export XDG_CONFIG_HOME=$(mktemp -d)
echo --no-sandbox >> $XDG_CONFIG_HOME/electron-flags.conf
%ifnarch riscv64 %ix86
PATH="%{_libexecdir}/electron-node:$PATH" xvfb-run -a ./scripts/test.sh --build
%endif
%ifnarch %ix86
PATH="%{_libexecdir}/electron-node:$PATH" npm run test-node -- --build
%endif
pushd node_modules/node-pty
#fix missing file for test
mkdir -pv fixtures
echo -n æ > fixtures/utf8-character.txt
PATH="%{_libexecdir}/electron-node:$PATH" NODE_ENV=test npx mocha -- --timeout 10000 --exit lib/\*.test.js --exclude lib/windowsTerminal.test.js
popd
%ifnarch %ix86
pushd node_modules/@vscode/spdlog
PATH="%{_libexecdir}/electron-node:$PATH" npm run test
popd
%endif
pushd node_modules/native-is-elevated
PATH="%{_libexecdir}/electron-node:$PATH" node tst/normal.js
PATH="%{_libexecdir}/electron-node:$PATH" fakeroot node tst/elevated.js
popd
#Running this one last because it requires compiling some additional things
%ifnarch riscv64 %ix86
#Parsing github actions files with sed, yay!
$(sed '0,/parameters.VSCODE_RUN_INTEGRATION_TESTS/d; 0,/set -e/d; s[\\$[[; /displayName: Build integration tests/Q' build/azure-pipelines/linux/product-build-linux-test.yml)
PATH="%{_libexecdir}/electron-node:$PATH" xvfb-run -a ./scripts/test-integration.sh --build
%endif
#there is also test-smoke. Haven't managed that one to run, either.
%endif
%if "%{flavor}" == "languageservers"
mkdir -pv %{buildroot}%{_bindir}
for i in 'css' 'html' 'json'; do
printf '%%s\n' '#!/usr/bin/node' "require('%{nodejs_sitelib}/vscode-${i}-languageserver')" >%{buildroot}%{_bindir}/vscode-${i}-languageserver
pushd extensions/$i-language-features/server
rm -rf node_modules/@types
mkdir -pv %{buildroot}%{nodejs_sitelib}/vscode-${i}-languageserver
cp -alrv node_modules out package.json -t %{buildroot}%{nodejs_sitelib}/vscode-${i}-languageserver
popd
done
mkdir -pv "%buildroot/%_docdir/%name"
pushd extensions/json-language-features/server
cp -lvT README.md "%buildroot/%_docdir/%name"/json-README.md
popd
for i in 'css' 'html' 'json'; do
sed -i '1s/env //' %{buildroot}%{nodejs_sitelib}/vscode-${i}-languageserver/node_modules/vscode-languageserver/bin/installServerIntoExtension
done
chmod -v 755 %{buildroot}%{_bindir}/*
pushd %{buildroot}%{nodejs_sitelib}
find -name '*.md' -type f -print -delete
find -name '*.map' -type f -print -delete
find -name '*.ts' -type f -print -delete
find -name tsconfig.json -type f -print -delete
find -name '.yarn*' -type f -print -delete
find -name .github -print0 |xargs -r0 -- rm -rvf --
find -name '.lsifrc*' -type f -print -delete
find -name .editorconfig -type f -print -delete
find -name '.eslint*' -type f -print -delete
find -name '.prettier*' -type f -print -delete
find -name .package-lock.json -type f -print -delete
find -name tsdoc-metadata.json -type f -print -delete
find -name '*.gdnsuppress' -type f -print -delete
find -name test -print0 |xargs -r0 -- rm -rvf --
for i in 'css' 'html' 'json'; do
pushd vscode-${i}-languageserver/
while : ; do
extraneous_nodules=$(npm ls --all --omit=dev --parseable --long | grep ':EXTRANEOUS$' | sed 's/:.*//')
if [[ -z "$extraneous_nodules" ]]; then
break
fi
rm -rf $extraneous_nodules
done
popd
done
find . -type d -empty -print -delete
popd
mkdir -pv %{buildroot}%{nodejs_sitelib}/vscode-html-languageserver/lib
cp -lv extensions/html-language-features/server/lib/*.d.ts -t %{buildroot}%{nodejs_sitelib}/vscode-html-languageserver/lib
%fdupes %{buildroot}%{nodejs_sitelib}
%check
for i in 'css' 'html' ; do
pushd extensions/$i-language-features/server
node test/index.js
popd
done
%endif
%files
%defattr(-,root,root)
%if "%{flavor}" == ""
%{_bindir}/code
%{_libdir}/code
%{_libexecdir}/code-oss.mjs
%{_datadir}/applications/code.desktop
%{_datadir}/applications/code-url-handler.desktop
%{_datadir}/bash-completion
%{_ttfontsdir}
%{_datadir}/appdata/code.appdata.xml
%{_datadir}/icons/hicolor/16x16/apps/code-oss.png
%{_datadir}/icons/hicolor/32x32/apps/code-oss.png
%{_datadir}/icons/hicolor/70x70
%{_datadir}/icons/hicolor/128x128/apps/code-oss.png
%{_datadir}/icons/hicolor/150x150
%{_datadir}/icons/hicolor/256x256/apps/code-oss.png
%{_datadir}/icons/hicolor/1024x1024
%{_datadir}/mime/packages/code-workspace.xml
%{_datadir}/zsh
%endif
%if "%{flavor}" == "languageservers"
%{_bindir}/vscode-css-languageserver
%{_bindir}/vscode-json-languageserver
%dir %{nodejs_sitelib}
%{nodejs_sitelib}/vscode-css-languageserver
%{nodejs_sitelib}/vscode-json-languageserver
%_docdir/%name
%files -n vscode-html-languageserver
%{_bindir}/vscode-html-languageserver
%dir %{nodejs_sitelib}
%{nodejs_sitelib}/vscode-html-languageserver
%endif
%changelog