1. 01 Oct, 2024 12 commits
    • Xavier Thompson's avatar
      [fix] zc.recipe.egg: Fix tests for Python >= 3.10 · 5806a711
      Xavier Thompson authored
      Fix output renormalisation when the Python version string contains more
      than one digit in the minor version number, i.e for Python >= 3.10.
      5806a711
    • Xavier Thompson's avatar
      [fix] zc.recipe.egg: Reinstall missing develop egg metadata · 12135bb5
      Xavier Thompson authored
      Let zc.recipe.egg:develop reinstall if .egg-info or .dist-info is
      missing from the folder referenced by .egg-link.
      12135bb5
    • Xavier Thompson's avatar
      [feat] Let recipe.update access installed paths · c478db33
      Xavier Thompson authored
      Store a part's installed paths in `self[part].installed_files` before
      calling `recipe.update()`, to allow the part's recipe to read them if
      needed by looking up `options.installed_files`.
      
      Delete this attribute just after the call to ensure this data remains
      private to the part.
      
      This will allow zc.recipe.egg:develop to remember in `update()` which
      .egg-link it installed in `install()`; inferring this would otherwise
      require essentially reinstalling the egg from the setup path, as that
      is all the recipe gets as input.
      
      Storing this under `__buildout_installed__` in the part's options was
      considered, but some recipes take all the recorded key/value pairs as
      input, so it would be a breaking change.
      c478db33
    • Xavier Thompson's avatar
      [feat] Enable build of pyproject.toml projects · 50f33af2
      Xavier Thompson authored
      Enable zc.buildout.easy_install.build, which builds a project manually
      from an unpacked sdist archive and is used by zc.recipe.egg:custom, to
      build a project which only has a pyproject.toml but no setup.py.
      50f33af2
    • Xavier Thompson's avatar
      [fix] Sign develop eggs with directory hash · 5b3a22be
      Xavier Thompson authored
      Mark .dist-info eggs installed by buildout as develop to distinguish
      them from .dist-info eggs from the system and decide how to sign the
      egg accordingly (with directory hash or with version).
      5b3a22be
    • Xavier Thompson's avatar
      [test] Fix tests after PEP 625 · 644c29e9
      Xavier Thompson authored
      Adapt tests to ignore warning generated by setuptools not finding
      zc.recipe.egg on first index lookup, because it's indexed as
      zc-recipe-egg, because since PEP 625 the sdist filename is
      zc_recipe_egg-xyz.tar.gz.
      644c29e9
    • Xavier Thompson's avatar
      [wkrd] Workaround package index after PEP 625 · 55db8537
      Xavier Thompson authored
      Since PEP 625, sdist filenames replace . and - in the project name by
      _, such as e.g. zc.buildout==3.0.1 yielding zc_buildout-3.0.1.tar.gz.
      
      However, when looking up available dists in a package index, when an
      sdist with such a normalized filename is found, setuptools interprets
      the filename by replacing _ with - and uses that as the dist's name;
      e.g. zc_buildout-3.0.1.tar.gz yields zc-buildout. This causes lookups
      for the name with . (e.g.: zc.buildout) to fail.
      
      Workaround by also looking up the name with . replaced by _, and then
      fixing the names of found dists back to expected name.
      55db8537
    • Xavier Thompson's avatar
      d64737e5
    • Xavier Thompson's avatar
      60a61ee6
    • Xavier Thompson's avatar
      [wkrd] Use pip install --editable --user · 4e97a2bc
      Xavier Thompson authored
      Prior to pip 21.1, pip install --editable --target fails because it
      results in wrong parameters being passed to setup.py develop by pip.
      
      Prior to setuptools 45.2.0, both pip install --editable --target and
      pip install --editable --prefix fail because the temporary install
      directory used internally by pip is not added to PYTHONPATH prior
      to pip calling setup.py develop. In later version setuptools emits a
      warning instead of an error.
      
      Temporarily override PYTHONUSERBASE to point to the target directory,
      so as to emulate --prefix=<dir> with PYTHONUSERBASE=<dir> and --user.
      
      Since pip's build isolation breaks python setup.py develop --user, as
      called by pip install --editable --user when the build backend of the
      project is setuptools, force --no-build-isolation in this case, even
      when allow-picked-versions is true.
      
      This is needed for Python2 because pip 21.1 and setuptools 45.2.0 are
      both Python3 only.
      4e97a2bc
    • Xavier Thompson's avatar
      [feat] Use pip install --editable in easy_install.develop · 64f61417
      Xavier Thompson authored
      Instead of running python setup.py develop directly. This will allow
      using zc.buildout.easy_install.develop on recent projects that have
      only a pyproject.toml. It also fixes develop leaving build artifacts
      in the source directory that caused later runs to do nothing, e.g.
      preventing develop-eggs to be rebuilt when a build dependency passed
      in setup-eggs option of zc.recipe.egg:develop changed.
      
      A verbosity parameter to tune verbosity of pip is added, with adjusted
      values for the case of buildout:develop and of zc.recipe.egg:develop,
      so as to remain close to the previous behavior with regards to logs.
      
      Technical details:
      
      For packages using PEP-660-style editable installs, supported by more
      recent versions of pip, pip will not delegate to `setup.py develop` -
      enabling editable installs for pure pyproject.toml projects - and will
      instead generate a .dist-info metadata folder but not a .egg-link.
      
      Since buildout currently requires a .egg-link, as it does not support
      PEP 660's mechanism that relies on having a sites-packages directory,
      we need to create this .egg-link after the fact. The tricky part is
      finding out where the .egg-link should point. For this we make use
      of importlib to extract info from the PEP-660-style install.
      
      Support namespace packages where `spec.submodule_search_locations` is
      a `_NamespacePath` object instead of a simple `list` and also support
      cases where the layout of the source project does not follow the same
      structure as the package tree - meaning some custom magic might be
      involved in making editable imports work as intended.
      
      Allow for entries in top_level.txt that are not actually packages,
      i.e. where importlib.util.find_spec().submodule_search_locations is
      None. A test is added for this case.
      64f61417
    • Xavier Thompson's avatar
      [tool] Gitignore *.dist-info · 7e9b8c93
      Xavier Thompson authored
      7e9b8c93
  2. 31 Jul, 2024 22 commits
  3. 03 Jun, 2024 2 commits
  4. 24 May, 2024 4 commits