Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

vscode-utils: Set the sourceRoot attribute on vscode extensions #289721

Merged
merged 1 commit into from
Apr 11, 2024

Conversation

FraGag
Copy link
Contributor

@FraGag FraGag commented Feb 18, 2024

Some extensions for VSCode contain directories other than extension (e.g., package, if the extension has a digital signature). The unpacker phase fails if a .vsix file contains more than one directory at the archive's root and the sourceRoot attribute is unset.

I've recently encountered this issue with ms-vscode.cmake-tools, which, since 1.17.15, is digitally signed. Others have encountered this issue as well:

In particular, nix-community/nix-vscode-extensions#31 suggests setting sourceRoot using overrideAttrs. However, since VSCode extensions have a well-defined structure, setting the sourceRoot for all extensions is valid. nix-vscode-extensions uses the functions in vscode-utils so it will inherit the fix (which I've verified locally).

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 馃憤 reaction to pull requests you find important.

Some extensions contain directories other than `extension` (e.g.,
`package`, if the extension has a digital signature). The unpacker phase
fails if a .vsix file contains more than one directory at the archive's
root and the `sourceRoot` attribute is unset.
@bitestring
Copy link

It would be very helpful, if this PR is merged. It is breaking my nixos-rebuild due to having lot of VSCode extenstions in my configuration. Thanks for all hard work of the contributors.

@JohnRTitor
Copy link
Contributor

Result of nixpkgs-review pr 289721 run on x86_64-linux 1

303 packages built:
  • vscode-extensions.ExiaHuang.dictionary
  • vscode-extensions.RoweWilsonFrederiskHolme.wikitext
  • vscode-extensions.a5huynh.vscode-ron
  • vscode-extensions.aaron-bond.better-comments
  • vscode-extensions.adpyke.codesnap
  • vscode-extensions.alanz.vscode-hie-server
  • vscode-extensions.albymor.increment-selection
  • vscode-extensions.alefragnani.bookmarks
  • vscode-extensions.alefragnani.project-manager
  • vscode-extensions.alexdima.copy-relative-path
  • vscode-extensions.alexisvt.flutter-snippets
  • vscode-extensions.alygin.vscode-tlaplus
  • vscode-extensions.angular.ng-template
  • vscode-extensions.antfu.icons-carbon
  • vscode-extensions.antfu.slidev
  • vscode-extensions.antyos.openscad
  • vscode-extensions.apollographql.vscode-apollo
  • vscode-extensions.arcticicestudio.nord-visual-studio-code
  • vscode-extensions.arjun.swagger-viewer
  • vscode-extensions.arrterian.nix-env-selector
  • vscode-extensions.asciidoctor.asciidoctor-vscode
  • vscode-extensions.asdine.cue
  • vscode-extensions.astro-build.astro-vscode
  • vscode-extensions.asvetliakov.vscode-neovim
  • vscode-extensions.attilabuti.brainfuck-syntax
  • vscode-extensions.azdavis.millet
  • vscode-extensions.b4dm4n.vscode-nixpkgs-fmt
  • vscode-extensions.baccata.scaladex-search
  • vscode-extensions.badochov.ocaml-formatter
  • vscode-extensions.ban.spellright
  • vscode-extensions.batisteo.vscode-django
  • vscode-extensions.bazelbuild.vscode-bazel
  • vscode-extensions.bbenoist.nix
  • vscode-extensions.benfradet.vscode-unison
  • vscode-extensions.betterthantomorrow.calva
  • vscode-extensions.bierner.docs-view
  • vscode-extensions.bierner.emojisense
  • vscode-extensions.bierner.markdown-checkbox
  • vscode-extensions.bierner.markdown-emoji
  • vscode-extensions.bierner.markdown-mermaid
  • vscode-extensions.bmalehorn.vscode-fish
  • vscode-extensions.bmewburn.vscode-intelephense-client
  • vscode-extensions.bodil.file-browser
  • vscode-extensions.bradlc.vscode-tailwindcss
  • vscode-extensions.brandonkirbyson.solarized-palenight
  • vscode-extensions.brettm12345.nixfmt-vscode
  • vscode-extensions.bungcip.better-toml
  • vscode-extensions.carrie999.cyberpunk-2020
  • vscode-extensions.catppuccin.catppuccin-vsc
  • vscode-extensions.catppuccin.catppuccin-vsc-icons
  • vscode-extensions.charliermarsh.ruff
  • vscode-extensions.chenglou92.rescript-vscode
  • vscode-extensions.chris-hayes.chatgpt-reborn
  • vscode-extensions.christian-kohler.npm-intellisense
  • vscode-extensions.christian-kohler.path-intellisense
  • vscode-extensions.cmschuetz12.wal
  • vscode-extensions.coder.coder-remote
  • vscode-extensions.codezombiech.gitignore
  • vscode-extensions.colejcummins.llvm-syntax-highlighting
  • vscode-extensions.contextmapper.context-mapper-vscode-extension
  • vscode-extensions.coolbear.systemd-unit-file
  • vscode-extensions.cweijan.vscode-database-client2
  • vscode-extensions.daohong-emilio.yash
  • vscode-extensions.dart-code.dart-code
  • vscode-extensions.dart-code.flutter
  • vscode-extensions.davidanson.vscode-markdownlint
  • vscode-extensions.davidlday.languagetool-linter
  • vscode-extensions.dbaeumer.vscode-eslint
  • vscode-extensions.denoland.vscode-deno
  • vscode-extensions.devsense.composer-php-vscode
  • vscode-extensions.devsense.phptools-vscode
  • vscode-extensions.devsense.profiler-php-vscode
  • vscode-extensions.dhall.dhall-lang
  • vscode-extensions.dhall.vscode-dhall-lsp-server
  • vscode-extensions.dhedgecock.radical-vscode
  • vscode-extensions.disneystreaming.smithy
  • vscode-extensions.divyanshuagrawal.competitive-programming-helper
  • vscode-extensions.donjayamanne.githistory
  • vscode-extensions.dotenv.dotenv-vscode
  • vscode-extensions.dotjoshjohnson.xml
  • vscode-extensions.dracula-theme.theme-dracula
  • vscode-extensions.eamodio.gitlens
  • vscode-extensions.ecmel.vscode-html-css
  • vscode-extensions.editorconfig.editorconfig
  • vscode-extensions.edonet.vscode-command-runner
  • vscode-extensions.eg2.vscode-npm-script
  • vscode-extensions.elixir-lsp.vscode-elixir-ls
  • vscode-extensions.elmtooling.elm-ls-vscode
  • vscode-extensions.emmanuelbeziat.vscode-great-icons
  • vscode-extensions.emroussel.atomize-atom-one-dark-theme
  • vscode-extensions.enkia.tokyo-night
  • vscode-extensions.equinusocio.vsc-material-theme
  • vscode-extensions.esbenp.prettier-vscode
  • vscode-extensions.ethansk.restore-terminals
  • vscode-extensions.eugleo.magic-racket
  • vscode-extensions.file-icons.file-icons
  • vscode-extensions.firefox-devtools.vscode-firefox-debug
  • vscode-extensions.foam.foam-vscode
  • vscode-extensions.formulahendry.auto-close-tag
  • vscode-extensions.formulahendry.auto-rename-tag
  • vscode-extensions.formulahendry.code-runner
  • vscode-extensions.foxundermoon.shell-format
  • vscode-extensions.freebroccolo.reasonml
  • vscode-extensions.funkyremi.vscode-google-translate
  • vscode-extensions.gencer.html-slim-scss-css-class-completion
  • vscode-extensions.genieai.chatgpt-vscode
  • vscode-extensions.github.codespaces
  • vscode-extensions.github.copilot
  • vscode-extensions.github.copilot-chat
  • vscode-extensions.github.github-vscode-theme
  • vscode-extensions.github.vscode-github-actions
  • vscode-extensions.github.vscode-pull-request-github
  • vscode-extensions.gitlab.gitlab-workflow
  • vscode-extensions.gleam.gleam
  • vscode-extensions.golang.go
  • vscode-extensions.grapecity.gc-excelviewer
  • vscode-extensions.graphql.vscode-graphql
  • vscode-extensions.graphql.vscode-graphql-syntax
  • vscode-extensions.griimick.vhs
  • vscode-extensions.gruntfuggly.todo-tree
  • vscode-extensions.hashicorp.terraform
  • vscode-extensions.haskell.haskell
  • vscode-extensions.hookyqr.beautify
  • vscode-extensions.humao.rest-client
  • vscode-extensions.ibm.output-colorizer
  • vscode-extensions.iciclesoft.workspacesort
  • vscode-extensions.iliazeus.vscode-ansi
  • vscode-extensions.influxdata.flux
  • vscode-extensions.intellsmi.comment-translate
  • vscode-extensions.ionide.ionide-fsharp
  • vscode-extensions.irongeek.vscode-env
  • vscode-extensions.james-yu.latex-workshop
  • vscode-extensions.jamesyang999.vscode-emacs-minimum
  • vscode-extensions.janet-lang.vscode-janet
  • vscode-extensions.jdinhlife.gruvbox
  • vscode-extensions.jebbs.plantuml
  • vscode-extensions.jellyedwards.gitsweep
  • vscode-extensions.jkillian.custom-local-formatters
  • vscode-extensions.jnoortheen.nix-ide
  • vscode-extensions.jock.svg
  • vscode-extensions.johnpapa.vscode-peacock
  • vscode-extensions.justusadam.language-haskell
  • vscode-extensions.kahole.magit
  • vscode-extensions.kalebpace.balena-vscode
  • vscode-extensions.kamadorueda.alejandra
  • vscode-extensions.kamikillerto.vscode-colorize
  • vscode-extensions.kddejong.vscode-cfn-lint
  • vscode-extensions.kubukoz.nickel-syntax
  • vscode-extensions.llvm-vs-code-extensions.vscode-clangd
  • vscode-extensions.lokalise.i18n-ally
  • vscode-extensions.lucperkins.vrl-vscode
  • vscode-extensions.mads-hartmann.bash-ide-vscode
  • vscode-extensions.marp-team.marp-vscode
  • vscode-extensions.matangover.mypy
  • vscode-extensions.matthewpi.caddyfile-support
  • vscode-extensions.mattn.lisp
  • vscode-extensions.maximedenes.vscoq
  • vscode-extensions.mechatroner.rainbow-csv
  • vscode-extensions.mgt19937.typst-preview
  • vscode-extensions.mhutchie.git-graph
  • vscode-extensions.mikestead.dotenv
  • vscode-extensions.mishkinf.goto-next-previous-member
  • vscode-extensions.mkhl.direnv
  • vscode-extensions.ms-azuretools.vscode-docker
  • vscode-extensions.ms-ceintl.vscode-language-pack-cs
  • vscode-extensions.ms-ceintl.vscode-language-pack-de
  • vscode-extensions.ms-ceintl.vscode-language-pack-es
  • vscode-extensions.ms-ceintl.vscode-language-pack-fr
  • vscode-extensions.ms-ceintl.vscode-language-pack-it
  • vscode-extensions.ms-ceintl.vscode-language-pack-ja
  • vscode-extensions.ms-ceintl.vscode-language-pack-ko
  • vscode-extensions.ms-ceintl.vscode-language-pack-pt-br
  • vscode-extensions.ms-ceintl.vscode-language-pack-qps-ploc
  • vscode-extensions.ms-ceintl.vscode-language-pack-ru
  • vscode-extensions.ms-ceintl.vscode-language-pack-tr
  • vscode-extensions.ms-ceintl.vscode-language-pack-zh-hans
  • vscode-extensions.ms-ceintl.vscode-language-pack-zh-hant
  • vscode-extensions.ms-dotnettools.csharp
  • vscode-extensions.ms-kubernetes-tools.vscode-kubernetes-tools
  • vscode-extensions.ms-pyright.pyright
  • vscode-extensions.ms-python.black-formatter
  • vscode-extensions.ms-python.isort
  • vscode-extensions.ms-python.python
  • vscode-extensions.ms-python.vscode-pylance
  • vscode-extensions.ms-toolsai.jupyter
  • vscode-extensions.ms-toolsai.jupyter-keymap
  • vscode-extensions.ms-toolsai.jupyter-renderers
  • vscode-extensions.ms-toolsai.vscode-jupyter-cell-tags
  • vscode-extensions.ms-toolsai.vscode-jupyter-slideshow
  • vscode-extensions.ms-vscode-remote.remote-containers
  • vscode-extensions.ms-vscode-remote.remote-ssh
  • vscode-extensions.ms-vscode.anycode
  • vscode-extensions.ms-vscode.cmake-tools
  • vscode-extensions.ms-vscode.cpptools
  • vscode-extensions.ms-vscode.hexeditor
  • vscode-extensions.ms-vscode.live-server
  • vscode-extensions.ms-vscode.makefile-tools
  • vscode-extensions.ms-vscode.powershell
  • vscode-extensions.ms-vscode.theme-tomorrowkit
  • vscode-extensions.ms-vsliveshare.vsliveshare
  • vscode-extensions.mskelton.npm-outdated
  • vscode-extensions.mskelton.one-dark-theme
  • vscode-extensions.mvllow.rose-pine
  • vscode-extensions.naumovs.color-highlight
  • vscode-extensions.njpwerner.autodocstring
  • vscode-extensions.nonylene.dark-molokai-theme
  • vscode-extensions.nur.just-black
  • vscode-extensions.nvarner.typst-lsp
  • vscode-extensions.ocamllabs.ocaml-platform
  • vscode-extensions.octref.vetur
  • vscode-extensions.oderwat.indent-rainbow
  • vscode-extensions.phoenixframework.phoenix
  • vscode-extensions.piousdeer.adwaita-theme
  • vscode-extensions.pkief.material-icon-theme
  • vscode-extensions.pkief.material-product-icons
  • vscode-extensions.prisma.prisma
  • vscode-extensions.quicktype.quicktype
  • vscode-extensions.rebornix.ruby
  • vscode-extensions.redhat.java
  • vscode-extensions.redhat.vscode-xml
  • vscode-extensions.redhat.vscode-yaml
  • vscode-extensions.richie5um2.snake-trail
  • vscode-extensions.rioj7.commandonallfiles
  • vscode-extensions.ritwickdey.liveserver
  • vscode-extensions.roman.ayu-next
  • vscode-extensions.rubbersheep.gi
  • vscode-extensions.rubymaniac.vscode-paste-and-indent
  • vscode-extensions.rust-lang.rust-analyzer
  • vscode-extensions.ryu1kn.partial-diff
  • vscode-extensions.sanaajani.taskrunnercode
  • vscode-extensions.scala-lang.scala
  • vscode-extensions.scalameta.metals
  • vscode-extensions.seatonjiang.gitmoji-vscode
  • vscode-extensions.serayuzgur.crates
  • vscode-extensions.shardulm94.trailing-spaces
  • vscode-extensions.shd101wyy.markdown-preview-enhanced
  • vscode-extensions.shopify.ruby-lsp
  • vscode-extensions.shyykoserhiy.vscode-spotify
  • vscode-extensions.silofy.hackthebox
  • vscode-extensions.skellock.just
  • vscode-extensions.skyapps.fish-vscode
  • vscode-extensions.slevesque.vscode-multiclip
  • vscode-extensions.sonarsource.sonarlint-vscode
  • vscode-extensions.spywhere.guides
  • vscode-extensions.stefanjarina.vscode-eex-snippets
  • vscode-extensions.stephlin.vscode-tmux-keybinding
  • vscode-extensions.stkb.rewrap
  • vscode-extensions.streetsidesoftware.code-spell-checker
  • vscode-extensions.styled-components.vscode-styled-components
  • vscode-extensions.sumneko.lua
  • vscode-extensions.svelte.svelte-vscode
  • vscode-extensions.svsool.markdown-memo
  • vscode-extensions.tabnine.tabnine-vscode
  • vscode-extensions.tailscale.vscode-tailscale
  • vscode-extensions.takayama.vscode-qq
  • vscode-extensions.tamasfe.even-better-toml
  • vscode-extensions.techtheawesome.rust-yew
  • vscode-extensions.theangryepicbanana.language-pascal
  • vscode-extensions.thenuprojectcontributors.vscode-nushell-lang
  • vscode-extensions.thorerik.hacker-theme
  • vscode-extensions.tiehuis.zig
  • vscode-extensions.tim-koehler.helm-intellisense
  • vscode-extensions.timonwong.shellcheck
  • vscode-extensions.tobiasalthoff.atom-material-theme
  • vscode-extensions.tomoki1207.pdf
  • vscode-extensions.tsandall.opa
  • vscode-extensions.tuttieee.emacs-mcx
  • vscode-extensions.twpayne.vscode-testscript
  • vscode-extensions.twxs.cmake
  • vscode-extensions.tyriar.sort-lines
  • vscode-extensions.uiua-lang.uiua-vscode
  • vscode-extensions.unifiedjs.vscode-mdx
  • vscode-extensions.usernamehw.errorlens
  • vscode-extensions.valentjn.vscode-ltex
  • vscode-extensions.viktorqvarfordt.vscode-pitch-black-theme
  • vscode-extensions.vincaslt.highlight-matching-tag
  • vscode-extensions.vscjava.vscode-gradle
  • vscode-extensions.vscjava.vscode-java-debug
  • vscode-extensions.vscjava.vscode-java-dependency
  • vscode-extensions.vscjava.vscode-java-test
  • vscode-extensions.vscjava.vscode-maven
  • vscode-extensions.vscjava.vscode-spring-initializr
  • vscode-extensions.vscode-icons-team.vscode-icons
  • vscode-extensions.vscodevim.vim
  • vscode-extensions.vspacecode.vspacecode
  • vscode-extensions.vspacecode.whichkey
  • vscode-extensions.w88975.code-translate
  • vscode-extensions.waderyan.gitblame
  • vscode-extensions.wakatime.vscode-wakatime
  • vscode-extensions.wholroyd.jinja
  • vscode-extensions.wingrunr21.vscode-ruby
  • vscode-extensions.wix.vscode-import-cost
  • vscode-extensions.wmaurer.change-case
  • vscode-extensions.xadillax.viml
  • vscode-extensions.xaver.clang-format
  • vscode-extensions.xyz.local-history
  • vscode-extensions.yzhang.dictionary-completion
  • vscode-extensions.yzhang.markdown-all-in-one
  • vscode-extensions.zhuangtongfa.material-theme
  • vscode-extensions.zhwu95.riscv
  • vscode-extensions.ziglang.vscode-zig
  • vscode-extensions.zxh404.vscode-proto3
  • vscode-langservers-extracted

@DontEatOreo
Copy link
Member

Result of nixpkgs-review pr 289721 run on aarch64-darwin 1

1 package marked as broken and skipped:
  • vscode-extensions.devsense.phptools-vscode
4 packages built:
  • vscode-extensions.ms-dotnettools.csharp
  • vscode-extensions.ms-python.python
  • vscode-extensions.rust-lang.rust-analyzer
  • vscode-langservers-extracted

Copy link
Contributor

@superherointj superherointj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

303 packages built fine. (Can still go in master because it is a fast build.)
LGTM

@superherointj superherointj merged commit 004258b into NixOS:master Apr 11, 2024
22 checks passed
@DontEatOreo
Copy link
Member

DontEatOreo commented Apr 11, 2024

@superherointj Is it okay for this to be back ported to release-23.11?

Copy link
Contributor

Successfully created backport PR for release-23.11:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants