Opened 2 years ago
Closed 2 years ago
#65331 closed defect (fixed)
sshuttle: destroot failure: git reporting unsafe repo caused by mismatching users
Reported by: | i0ntempest | Owned by: | i0ntempest |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.7.2 |
Keywords: | Cc: | herbygillot (Herby Gillot) | |
Port: | sshuttle |
Description
Build process of this port depends on git to get its version, and because MP executes build and destroot as different users (macports/root), git will error out complaining about repo is not owned by the current user. After adding destroot.env-append SETUPTOOLS_SCM_DEBUG=1
into portfile one may see:
:info:destroot finalize hook {'name': 'sshuttle', 'version': None, 'author': 'Brian May', 'author_email': 'brian@linuxpenguins.xyz', 'maintainer': None, 'maintainer_email': None, 'url': 'https://github.com/sshuttle/sshuttle', 'license': 'LGPL2.1+', 'description': 'Full-featured" VPN over an SSH tunnel', 'long_description': "sshuttle: where transparent proxy meets VPN meets ssh\n=====================================================\n\nAs far as I know, sshuttle is the only program that solves the following\ncommon case:\n\n- Your client machine (or router) is Linux, FreeBSD, or MacOS.\n\n- You have access to a remote network via ssh.\n\n- You don't necessarily have admin access on the remote network.\n\n- The remote network has no VPN, or only stupid/complex VPN\n protocols (IPsec, PPTP, etc). Or maybe you *are* the\n admin and you just got frustrated with the awful state of\n VPN tools.\n\n- You don't want to create an ssh port forward for every\n single host/port on the remote network.\n\n- You hate openssh's port forwarding because it's randomly\n slow and/or stupid.\n\n- You can't use openssh's PermitTunnel feature because\n it's disabled by default on openssh servers; plus it does\n TCP-over-TCP, which has `terrible performance`_.\n\n.. _terrible performance: https://sshuttle.readthedocs.io/en/stable/how-it-works.html\n\nObtaining sshuttle\n------------------\n\n- Ubuntu 16.04 or later::\n\n apt-get install sshuttle\n\n- Debian stretch or later::\n\n apt-get install sshuttle\n\n- Arch Linux::\n\n pacman -S sshuttle\n\n- Fedora::\n\n dnf install sshuttle\n\n- openSUSE::\n\n zypper in sshuttle\n\n- Gentoo::\n\n emerge -av net-proxy/sshuttle\n\n- NixOS::\n\n nix-env -iA nixos.sshuttle\n\n- From PyPI::\n\n sudo pip install sshuttle\n\n- Clone::\n\n git clone https://github.com/sshuttle/sshuttle.git\n cd sshuttle\n sudo ./setup.py install\n\n- FreeBSD::\n\n # ports\n cd /usr/ports/net/py-sshuttle && make install clean\n # pkg\n pkg install py36-sshuttle\n\n- macOS, via MacPorts::\n\n sudo port selfupdate\n sudo port install sshuttle\n\nIt is also possible to install into a virtualenv as a non-root user.\n\n- From PyPI::\n\n virtualenv -p python3 /tmp/sshuttle\n . /tmp/sshuttle/bin/activate\n pip install sshuttle\n\n- Clone::\n\n virtualenv -p python3 /tmp/sshuttle\n . /tmp/sshuttle/bin/activate\n git clone https://github.com/sshuttle/sshuttle.git\n cd sshuttle\n ./setup.py install\n\n- Homebrew::\n\n brew install sshuttle\n\n- Nix::\n\n nix-env -iA nixpkgs.sshuttle\n\n\nDocumentation\n-------------\nThe documentation for the stable version is available at:\nhttps://sshuttle.readthedocs.org/\n\nThe documentation for the latest development version is available at:\nhttps://sshuttle.readthedocs.org/en/latest/\n\n\nRunning as a service\n--------------------\nSshuttle can also be run as a service and configured using a config management system:\nhttps://medium.com/@mike.reider/using-sshuttle-as-a-service-bec2684a65fe\n", 'keywords': 'ssh vpn', 'platforms': None, 'classifiers': ['Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: End Users/Desktop', 'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)', 'Operating System :: OS Independent', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Topic :: System :: Networking'], 'download_url': None, 'provides': None, 'requires': None, 'obsoletes': None} :info:destroot version keyword {'name': 'sshuttle', 'version': None, 'author': 'Brian May', 'author_email': 'brian@linuxpenguins.xyz', 'maintainer': None, 'maintainer_email': None, 'url': 'https://github.com/sshuttle/sshuttle', 'license': 'LGPL2.1+', 'description': 'Full-featured" VPN over an SSH tunnel', 'long_description': "sshuttle: where transparent proxy meets VPN meets ssh\n=====================================================\n\nAs far as I know, sshuttle is the only program that solves the following\ncommon case:\n\n- Your client machine (or router) is Linux, FreeBSD, or MacOS.\n\n- You have access to a remote network via ssh.\n\n- You don't necessarily have admin access on the remote network.\n\n- The remote network has no VPN, or only stupid/complex VPN\n protocols (IPsec, PPTP, etc). Or maybe you *are* the\n admin and you just got frustrated with the awful state of\n VPN tools.\n\n- You don't want to create an ssh port forward for every\n single host/port on the remote network.\n\n- You hate openssh's port forwarding because it's randomly\n slow and/or stupid.\n\n- You can't use openssh's PermitTunnel feature because\n it's disabled by default on openssh servers; plus it does\n TCP-over-TCP, which has `terrible performance`_.\n\n.. _terrible performance: https://sshuttle.readthedocs.io/en/stable/how-it-works.html\n\nObtaining sshuttle\n------------------\n\n- Ubuntu 16.04 or later::\n\n apt-get install sshuttle\n\n- Debian stretch or later::\n\n apt-get install sshuttle\n\n- Arch Linux::\n\n pacman -S sshuttle\n\n- Fedora::\n\n dnf install sshuttle\n\n- openSUSE::\n\n zypper in sshuttle\n\n- Gentoo::\n\n emerge -av net-proxy/sshuttle\n\n- NixOS::\n\n nix-env -iA nixos.sshuttle\n\n- From PyPI::\n\n sudo pip install sshuttle\n\n- Clone::\n\n git clone https://github.com/sshuttle/sshuttle.git\n cd sshuttle\n sudo ./setup.py install\n\n- FreeBSD::\n\n # ports\n cd /usr/ports/net/py-sshuttle && make install clean\n # pkg\n pkg install py36-sshuttle\n\n- macOS, via MacPorts::\n\n sudo port selfupdate\n sudo port install sshuttle\n\nIt is also possible to install into a virtualenv as a non-root user.\n\n- From PyPI::\n\n virtualenv -p python3 /tmp/sshuttle\n . /tmp/sshuttle/bin/activate\n pip install sshuttle\n\n- Clone::\n\n virtualenv -p python3 /tmp/sshuttle\n . /tmp/sshuttle/bin/activate\n git clone https://github.com/sshuttle/sshuttle.git\n cd sshuttle\n ./setup.py install\n\n- Homebrew::\n\n brew install sshuttle\n\n- Nix::\n\n nix-env -iA nixpkgs.sshuttle\n\n\nDocumentation\n-------------\nThe documentation for the stable version is available at:\nhttps://sshuttle.readthedocs.org/\n\nThe documentation for the latest development version is available at:\nhttps://sshuttle.readthedocs.org/en/latest/\n\n\nRunning as a service\n--------------------\nSshuttle can also be run as a service and configured using a config management system:\nhttps://medium.com/@mike.reider/using-sshuttle-as-a-service-bec2684a65fe\n", 'keywords': 'ssh vpn', 'platforms': None, 'classifiers': ['Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: End Users/Desktop', 'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)', 'Operating System :: OS Independent', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Topic :: System :: Networking'], 'download_url': None, 'provides': None, 'requires': None, 'obsoletes': None} :info:destroot abs root {'root': '.', 'relative_to': None} :info:destroot root '/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0' :info:destroot relative_to None :info:destroot dist name: sshuttle :info:destroot version_from_ep setuptools_scm.parse_scm /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0 :info:destroot looking for ep setuptools_scm.parse_scm /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0 :info:destroot found ep EntryPoint(name='.git', value='setuptools_scm.git:parse', group='setuptools_scm.parse_scm') in /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0 :info:destroot cmd 'git rev-parse --show-prefix' :info:destroot in /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0 :info:destroot err b"fatal: unsafe repository ('/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0' is owned by someone else)\nTo add an exception for this directory, call:\n\n\tgit config --global --add safe.directory /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0\n" :info:destroot ret 128 :info:destroot EntryPoint(name='.git', value='setuptools_scm.git:parse', group='setuptools_scm.parse_scm') None :info:destroot version_from_ep setuptools_scm.parse_scm_fallback /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0 :info:destroot looking for ep setuptools_scm.parse_scm_fallback /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0 :info:destroot found ep EntryPoint(name='setup.py', value='setuptools_scm.hacks:fallback_version', group='setuptools_scm.parse_scm_fallback') in /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0 :info:destroot EntryPoint(name='setup.py', value='setuptools_scm.hacks:fallback_version', group='setuptools_scm.parse_scm_fallback') None :info:destroot Traceback (most recent call last): :info:destroot File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0/setup.py", line 29, in <module> :info:destroot setup( :info:destroot File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/setuptools/__init__.py", line 87, in setup :info:destroot return distutils.core.setup(**attrs) :info:destroot File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 109, in setup :info:destroot _setup_distribution = dist = klass(attrs) :info:destroot File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/setuptools/dist.py", line 477, in __init__ :info:destroot _Distribution.__init__( :info:destroot File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 293, in __init__ :info:destroot self.finalize_options() :info:destroot File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/setuptools/dist.py", line 901, in finalize_options :info:destroot ep(self) :info:destroot File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/setuptools/dist.py", line 922, in _finalize_setup_keywords :info:destroot ep.load()(self, ep.name, value) :info:destroot File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/setuptools_scm/integration.py", line 75, in version_keyword :info:destroot _assign_version(dist, config) :info:destroot File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/setuptools_scm/integration.py", line 51, in _assign_version :info:destroot _version_missing(config) :info:destroot File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/setuptools_scm/__init__.py", line 106, in _version_missing :info:destroot raise LookupError( :info:destroot LookupError: setuptools-scm was unable to detect version for /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_sshuttle/sshuttle/work/sshuttle-1.1.0. :info:destroot Make sure you're either building from a fully intact git repository or PyPI tarballs. Most other sources (such as GitHub's tarballs, a git checkout without the .git folder) don't contain the necessary metadata and will not work. :info:destroot For example, if you're using pip, instead of https://github.com/user/proj/archive/master.zip use git+https://github.com/user/proj.git#egg=proj
One workaround would be:
pre-destroot { system -W ${worksrcpath} "chown -R $env(USER) ." }
Attachments (1)
Change History (2)
Changed 2 years ago by i0ntempest
comment:1 Changed 2 years ago by i0ntempest
Owner: | set to i0ntempest |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Note: See
TracTickets for help on using
tickets.
In bfe0973638ad8a4c263fd6940ce6ce38e1a67c2d/macports-ports (master):