Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Apr 2026 10:14:17 +0000
From:      Dave Cottlehuber <dch@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 2cc531514db9 - main - misc/py-aider-chat: Remove port
Message-ID:  <69ef36f9.4643c.5adc0765@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by dch:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2cc531514db964d09614204ad13f007003f97a54

commit 2cc531514db964d09614204ad13f007003f97a54
Author:     Dave Cottlehuber <dch@FreeBSD.org>
AuthorDate: 2026-04-27 10:12:45 +0000
Commit:     Dave Cottlehuber <dch@FreeBSD.org>
CommitDate: 2026-04-27 10:13:29 +0000

    misc/py-aider-chat: Remove port
    
    aider-chat upstream has stopped doing releases, and its dependencies have
    drifted too much to be practically maintained within the ports tree.
---
 MOVED                                            |  2 +
 misc/py-aider-chat/Makefile                      | 85 ------------------------
 misc/py-aider-chat/distinfo                      |  3 -
 misc/py-aider-chat/files/patch-aider_commands.py | 32 ---------
 misc/py-aider-chat/files/patch-aider_scrape.py   | 82 -----------------------
 misc/py-aider-chat/files/patch-pyproject.toml    | 11 ---
 misc/py-aider-chat/pkg-descr                     |  7 --
 7 files changed, 2 insertions(+), 220 deletions(-)

diff --git a/MOVED b/MOVED
index 2d35d1af2139..c39762331e1e 100644
--- a/MOVED
+++ b/MOVED
@@ -5253,3 +5253,5 @@ www/py-requests-cache0|www/py-requests-cache|2026-04-18|Remove obsoleted port. U
 sysutils/py-azure-cli-base||2026-04-21|Remove obsoleted port
 games/coronapoker||2026-04-25|Remove for security concerns: downloads closed source binary modules, should not be restored unless https://github.com/tonikelope/coronapoker/issues/7 is addressed
 sysutils/py-ioztat|filesystems/py-ioztat|2026-04-27|Move to more appropriate category
+misc/py-aider-chat||2026-04-27|Upstream project has stopped active releases and doesn't match ports dependencies
+
diff --git a/misc/py-aider-chat/Makefile b/misc/py-aider-chat/Makefile
deleted file mode 100644
index 6ae1445f389e..000000000000
--- a/misc/py-aider-chat/Makefile
+++ /dev/null
@@ -1,85 +0,0 @@
-PORTNAME=	aider_chat
-DISTVERSION=	0.86.1
-PORTREVISION=	1
-CATEGORIES=	misc python
-MASTER_SITES=	PYPI
-PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
-DISTNAME=	aider_chat-${PORTVERSION}
-
-MAINTAINER=	dch@FreeBSD.org
-COMMENT=	AI pair programming in your terminal
-WWW=		https://aider.chat/
-
-LICENSE=	APACHE20
-LICENSE_FILE=	${WRKSRC}/LICENSE.txt
-
-BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools-scm>=8.0:devel/py-setuptools-scm@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}setuptools>=63:devel/py-setuptools@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}wheel>=0.44:devel/py-wheel@${PY_FLAVOR}
-RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}arrow>=1.3:devel/py-arrow@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}SoundFile>=0.12:audio/py-SoundFile@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}aiosqlite>0:databases/py-aiosqlite@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}backoff>=2.2:devel/py-backoff@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}beautifulsoup>=4.12:www/py-beautifulsoup@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}blinker>=1.8:devel/py-blinker@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}cachetools>=5.5:devel/py-cachetools@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}colorama>=0.4.6:devel/py-colorama@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}configargparse>=1.5:devel/py-configargparse@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}diff-match-patch>=0:textproc/py-diff-match-patch@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}diskcache>=5.6.0:devel/py-diskcache@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}flake8>=7.1.1:devel/py-flake8@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}gitpython>=3.1.30:devel/py-gitpython@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}greenlet>=3.0.3:devel/py-greenlet@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}grep-ast>=0.3.2:textproc/py-grep-ast@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}huggingface-hub>=0.24.6:misc/py-huggingface-hub@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}importlib-resources>=0:devel/py-importlib-resources@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}json5>=0.9.11:devel/py-json5@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}jsonschema>=4.23.0:devel/py-jsonschema@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}litellm>=1.44.7:misc/py-litellm@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}mixpanel>=4.10:misc/py-mixpanel@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}networkx>=3.3:math/py-networkx@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}numpy1<2.0:math/py-numpy1@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}openai>=1.43.1:misc/py-openai@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}oslex>=0.1.3:devel/py-oslex@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}packaging>=24.1:devel/py-packaging@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pathspec>=0.12.1:devel/py-pathspec@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pexpect>=4.9.0:misc/py-pexpect@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pillow>=10.4.0:graphics/py-pillow@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}posthog>=4.0.1:misc/py-posthog@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}prompt-toolkit>=3.0.47:devel/py-prompt-toolkit@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}psutil>=5.8.0:sysutils/py-psutil@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pydub>=0.25:audio/py-pydub@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pypandoc>=1.5:textproc/py-pypandoc@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pyperclip>=1.7.0:devel/py-pyperclip@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pyyaml-include>=1.2:devel/py-pyyaml-include@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}rich>=13.8:textproc/py-rich@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}scipy>=1.11,1:science/py-scipy@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}shtab>0:devel/py-shtab@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}socksio>=1<2:net/py-socksio@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}sounddevice>=0.5.0:audio/py-sounddevice@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}streamlit>=1.38:www/py-streamlit@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}tiktoken>=0.7.0:textproc/py-tiktoken@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}tokenizers>=0.20.0:textproc/py-tokenizers@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}tree-sitter>=0.20,<0.22.2:devel/py-tree-sitter@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}watchfiles>=0:devel/py-watchfiles@${PY_FLAVOR}
-# missing dependencies
-# playwright its a chromium browser automation library
-# watchdog is pulled in by streamlit
-# google-generativeai is not a popular aider dependency
-
-USES=		python shebangfix
-USE_PYTHON=	autoplist concurrent pep517
-SHEBANG_FILES=	aider/coders/base_coder.py aider/coders/search_replace.py
-
-NO_ARCH=	yes
-
-PORTDOCS=	README.md
-
-OPTIONS_DEFINE=	DOCS
-
-post-install-DOCS-on:
-	@${MKDIR} ${STAGEDIR}${DOCSDIR}
-	${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} \
-		${STAGEDIR}${DOCSDIR}
-
-.include <bsd.port.mk>
diff --git a/misc/py-aider-chat/distinfo b/misc/py-aider-chat/distinfo
deleted file mode 100644
index 19d993493826..000000000000
--- a/misc/py-aider-chat/distinfo
+++ /dev/null
@@ -1,3 +0,0 @@
-TIMESTAMP = 1756024923
-SHA256 (aider_chat-0.86.1.tar.gz) = 48e489d20a4dfdd90ac4acc781f0170f688aaa5c5f2017d035e2d947fb801bbb
-SIZE (aider_chat-0.86.1.tar.gz) = 1314126
diff --git a/misc/py-aider-chat/files/patch-aider_commands.py b/misc/py-aider-chat/files/patch-aider_commands.py
deleted file mode 100644
index cfa6e67a6b58..000000000000
--- a/misc/py-aider-chat/files/patch-aider_commands.py
+++ /dev/null
@@ -1,32 +0,0 @@
---- aider/commands.py.orig	2025-05-09 22:41:18 UTC
-+++ aider/commands.py
-@@ -21,7 +21,7 @@ from aider.run_cmd import run_cmd
- from aider.llm import litellm
- from aider.repo import ANY_GIT_ERROR
- from aider.run_cmd import run_cmd
--from aider.scrape import Scraper, install_playwright
-+from aider.scrape import Scraper
- from aider.utils import is_image_file
- 
- from .dump import dump  # noqa: F401
-@@ -220,20 +220,6 @@ class Commands:
-             return
- 
-         self.io.tool_output(f"Scraping {url}...")
--        if not self.scraper:
--            disable_playwright = getattr(self.args, "disable_playwright", False)
--            if disable_playwright:
--                res = False
--            else:
--                res = install_playwright(self.io)
--                if not res:
--                    self.io.tool_warning("Unable to initialize playwright.")
--
--            self.scraper = Scraper(
--                print_error=self.io.tool_error,
--                playwright_available=res,
--                verify_ssl=self.verify_ssl,
--            )
- 
-         content = self.scraper.scrape(url) or ""
-         content = f"Here is the content of {url}:\n\n" + content
diff --git a/misc/py-aider-chat/files/patch-aider_scrape.py b/misc/py-aider-chat/files/patch-aider_scrape.py
deleted file mode 100644
index ba103c6f725e..000000000000
--- a/misc/py-aider-chat/files/patch-aider_scrape.py
+++ /dev/null
@@ -1,82 +0,0 @@
---- aider/scrape.py.orig	2025-05-09 22:41:18 UTC
-+++ aider/scrape.py
-@@ -92,7 +92,7 @@ class Scraper:
-         else:
-             self.print_error = print
- 
--        self.playwright_available = playwright_available
-+        self.playwright_available = False
-         self.verify_ssl = verify_ssl
- 
-     def scrape(self, url):
-@@ -103,10 +103,7 @@ class Scraper:
-         `url` - the URL to scrape.
-         """
- 
--        if self.playwright_available:
--            content, mime_type = self.scrape_with_playwright(url)
--        else:
--            content, mime_type = self.scrape_with_httpx(url)
-+        content, mime_type = self.scrape_with_httpx(url)
- 
-         if not content:
-             self.print_error(f"Failed to retrieve content from {url}")
-@@ -138,58 +135,6 @@ class Scraper:
-             ]
-             return any(re.search(pattern, content, re.IGNORECASE) for pattern in html_patterns)
-         return False
--
--    # Internals...
--    def scrape_with_playwright(self, url):
--        import playwright  # noqa: F401
--        from playwright.sync_api import Error as PlaywrightError
--        from playwright.sync_api import TimeoutError as PlaywrightTimeoutError
--        from playwright.sync_api import sync_playwright
--
--        with sync_playwright() as p:
--            try:
--                browser = p.chromium.launch()
--            except Exception as e:
--                self.playwright_available = False
--                self.print_error(str(e))
--                return None, None
--
--            try:
--                context = browser.new_context(ignore_https_errors=not self.verify_ssl)
--                page = context.new_page()
--
--                user_agent = page.evaluate("navigator.userAgent")
--                user_agent = user_agent.replace("Headless", "")
--                user_agent = user_agent.replace("headless", "")
--                user_agent += " " + aider_user_agent
--
--                page.set_extra_http_headers({"User-Agent": user_agent})
--
--                response = None
--                try:
--                    response = page.goto(url, wait_until="networkidle", timeout=5000)
--                except PlaywrightTimeoutError:
--                    print(f"Page didn't quiesce, scraping content anyway: {url}")
--                    response = None
--                except PlaywrightError as e:
--                    self.print_error(f"Error navigating to {url}: {str(e)}")
--                    return None, None
--
--                try:
--                    content = page.content()
--                    mime_type = None
--                    if response:
--                        content_type = response.header_value("content-type")
--                        if content_type:
--                            mime_type = content_type.split(";")[0]
--                except PlaywrightError as e:
--                    self.print_error(f"Error retrieving page content: {str(e)}")
--                    content = None
--                    mime_type = None
--            finally:
--                browser.close()
--
--        return content, mime_type
- 
-     def scrape_with_httpx(self, url):
-         import httpx
diff --git a/misc/py-aider-chat/files/patch-pyproject.toml b/misc/py-aider-chat/files/patch-pyproject.toml
deleted file mode 100644
index c6b5ebe68b8c..000000000000
--- a/misc/py-aider-chat/files/patch-pyproject.toml
+++ /dev/null
@@ -1,11 +0,0 @@
---- pyproject.toml.orig	2025-04-14 23:24:32 UTC
-+++ pyproject.toml
-@@ -41,7 +41,7 @@ include = ["aider"]
- include = ["aider"]
- 
- [build-system]
--requires = ["setuptools>=68", "setuptools_scm[toml]>=8"]
-+requires = ["setuptools>=61", "setuptools_scm[toml]>=8"]
- build-backend = "setuptools.build_meta"
- 
- [tool.setuptools_scm]
diff --git a/misc/py-aider-chat/pkg-descr b/misc/py-aider-chat/pkg-descr
deleted file mode 100644
index 0c86531a716e..000000000000
--- a/misc/py-aider-chat/pkg-descr
+++ /dev/null
@@ -1,7 +0,0 @@
-Aider is a command line tool that lets you pair program with LLMs, to edit
-code stored in your local git repository. Aider will directly edit the
-code in your local source files, and git commit the changes with sensible
-commit messages. You can start a new project or work with an existing git
-repo. Aider is unique in that it lets you ask for changes to pre-existing,
-larger codebases. Aider works well with GPT-4o, Claude 3 Opus, GPT-3.5 and
-supports connecting to almost any LLM.


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69ef36f9.4643c.5adc0765>