commit:     436af4fc64f0989fce7e185187009f704f8ff921
Author:     Jay Faulkner <jayf <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 17 00:35:24 2025 +0000
Commit:     Jay Faulkner <jayf <AT> gentoo <DOT> org>
CommitDate: Sun Aug 17 01:01:40 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=436af4fc

dev-util/claude-code: Drop npm dependency

Instead of using npm, we install directly via extraction, which
is easy since there are no dependencies.

Additionally, upon user request (gentoo-zh overlay), I'm allowing
the removal of the vscode and jetbrains plugins -- the default
behavior now since these are distributed and autoupdated more
trivially with the ide extension manager directly.

Signed-off-by: Jay Faulkner <jayf <AT> gentoo.org>

 dev-util/claude-code/claude-code-1.0.83-r1.ebuild | 64 +++++++++++++++++++++++
 dev-util/claude-code/metadata.xml                 |  4 ++
 2 files changed, 68 insertions(+)

diff --git a/dev-util/claude-code/claude-code-1.0.83-r1.ebuild 
b/dev-util/claude-code/claude-code-1.0.83-r1.ebuild
new file mode 100644
index 000000000000..37d1cfb30252
--- /dev/null
+++ b/dev-util/claude-code/claude-code-1.0.83-r1.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Claude Code - an agentic coding tool by Anthropic"
+HOMEPAGE="https://www.anthropic.com/claude-code";
+SRC_URI="https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${PV}.tgz";
+S="${WORKDIR}/package"
+
+# NOTE(JayF): claude-code is only usable via paid subscription and has a
+#             clickthrough EULA-type license. Please see $HOMEPAGE for
+#             full details.
+LICENSE="all-rights-reserved"
+SLOT="0"
+KEYWORDS=""
+
+IUSE="jetbrains vscode"
+RESTRICT="strip"
+
+RDEPEND="
+       net-libs/nodejs
+       sys-apps/ripgrep
+"
+
+src_compile() {
+       # Skip, nothing to compile here.
+       :
+}
+
+src_install() {
+       dodoc README.md LICENSE.md
+
+       # We are using a strategy of "install everything that's left"
+       # so removing these here will prevent duplicates in /opt/claude-code
+       rm -f README.md LICENSE.md package.json || die
+       # remove vendored ripgrep
+       rm -rf vendor/ripgrep || die
+
+       # Install extentions these under /opt, and let users configure their
+       # IDEs appropriately if they have opted-into having them installed.
+       # Normally I wouldn't allow a few megs of data to be USE-flag-toggled,
+       # but removing these cuts the already-small package size in half, so
+       # it seems worth it.
+       use jetbrains || rm -r vendor/${PN}-jetbrains-plugin || die
+       use vscode || rm -r vendor/${PN}.vsix || die
+
+       insinto /opt/${PN}
+       doins -r ./*
+       fperms a+x opt/claude-code/cli.js
+
+       dodir /opt/bin
+       dosym -r /opt/${PN}/cli.js /opt/bin/claude
+
+       insinto /etc/${PN}
+       doins "${FILESDIR}/policies.json"
+
+       # nodejs defaults to disabling deprecation warnings when running code
+       # from any path containing a node_modules directory. Since we're 
installing
+       # outside of the realm of npm, explicitly pass an option to disable
+       # deprecation warnings so it behaves the same as it does if installed 
via
+       # npm. It's proprietary; not like Gentoo users can fix the warnings 
anyway.
+       sed -i 's/env node/env -S node --no-deprecation/' 
"${ED}/opt/claude-code/cli.js"
+}

diff --git a/dev-util/claude-code/metadata.xml 
b/dev-util/claude-code/metadata.xml
index 766d03b352d8..97d371f94876 100644
--- a/dev-util/claude-code/metadata.xml
+++ b/dev-util/claude-code/metadata.xml
@@ -9,6 +9,10 @@
   <longdescription>
   Claude Code is an agentic coding tool that lives in your terminal, 
understands your codebase, and helps you code faster through natural language 
commands.
   </longdescription>
+  <use>
+    <flag name="jetbrains">Install Jetbrains IDE extension to 
/opt/claude-code. Does not automatically load extension.</flag>
+    <flag name="vscode">Install VSCode IDE extension to /opt/claude-code. Does 
not automatically load extension.</flag>
+  </use>
   <upstream>
     <doc>https://docs.anthropic.com/en/docs/claude-code/overview</doc>
     <remote-id type="github">anthropics/claude-code</remote-id>

Reply via email to