##// END OF EJS Templates
setup: drop legacy osx compiler tuning to enable universal builds...
setup: drop legacy osx compiler tuning to enable universal builds This was triggering deprecation warnings about migrating to `packaging.version` from `distutils` Version classes with `make local`. But rather than migrate that code, let's just get rid of some ~10-12 year old workarounds. As a bonus, the cext libraries that are built are now universal binaries containing x86_64 and arm64 images (at least when built on macOS 11.4 with Xcode 12.5 and the universal version of Python 3.9.13). Several things to note here: - Apple dropped support for 10.15 in Nov 2022, and OS X Lion that is referenced is 10.7 (unsupported since late 2014) - `xcode4` was basically always True because of the `>=` check (10.8 used Xcode 5, and I have Xcode 10.2 on 10.14) - `xcode51` was always False for modern-ish Xcode, because of the exact version string matching - Python 3.8 only supports OS X 10.9+; the Python 3.9.1+ universal installer is macOS 11+ only, and Python 3.10 drops the x86_64 installer to deliver only the universal installer. All of this is to say, the only thing lost by dropping this code on modern Xcode is that `os.environ['ARCHFLAGS'] = ''` is no longer set. But we probably shouldn't be setting that anymore, as shown by the universal libraries now being generated. I was able to `make local` and `python3 run-tests.py --local` with python 3.9.9, Xcode 10.2, and macOS 10.14.6, and didn't incur any more than the usual few test errors, so this should still work on some older versions of macOS.

File last commit:

r49949:9ab62e1f default
r50774:dd804d83 default
Show More
dirstate.py
210 lines | 6.0 KiB | text/x-python | PythonLexer
import contextlib
from . import util as interfaceutil
class idirstate(interfaceutil.Interface):
def __init__(
opener,
ui,
root,
validate,
sparsematchfn,
nodeconstants,
use_dirstate_v2,
):
"""Create a new dirstate object.
opener is an open()-like callable that can be used to open the
dirstate file; root is the root of the directory tracked by
the dirstate.
"""
# TODO: all these private methods and attributes should be made
# public or removed from the interface.
_ignore = interfaceutil.Attribute("""Matcher for ignored files.""")
def _ignorefiles():
"""Return a list of files containing patterns to ignore."""
def _ignorefileandline(f):
"""Given a file `f`, return the ignore file and line that ignores it."""
_checklink = interfaceutil.Attribute("""Callable for checking symlinks.""")
_checkexec = interfaceutil.Attribute("""Callable for checking exec bits.""")
@contextlib.contextmanager
def parentchange():
"""Context manager for handling dirstate parents.
If an exception occurs in the scope of the context manager,
the incoherent dirstate won't be written when wlock is
released.
"""
def pendingparentchange():
"""Returns true if the dirstate is in the middle of a set of changes
that modify the dirstate parent.
"""
def hasdir(d):
pass
def flagfunc(buildfallback):
pass
def getcwd():
"""Return the path from which a canonical path is calculated.
This path should be used to resolve file patterns or to convert
canonical paths back to file paths for display. It shouldn't be
used to get real file paths. Use vfs functions instead.
"""
def get_entry(path):
"""return a DirstateItem for the associated path"""
def pathto(f, cwd=None):
pass
def __contains__(key):
"""Check if bytestring `key` is known to the dirstate."""
def __iter__():
"""Iterate the dirstate's contained filenames as bytestrings."""
def items():
"""Iterate the dirstate's entries as (filename, DirstateItem.
As usual, filename is a bytestring.
"""
iteritems = items
def parents():
pass
def p1():
pass
def p2():
pass
def branch():
pass
def setparents(p1, p2=None):
"""Set dirstate parents to p1 and p2.
When moving from two parents to one, 'm' merged entries a
adjusted to normal and previous copy records discarded and
returned by the call.
See localrepo.setparents()
"""
def setbranch(branch):
pass
def invalidate():
"""Causes the next access to reread the dirstate.
This is different from localrepo.invalidatedirstate() because it always
rereads the dirstate. Use localrepo.invalidatedirstate() if you want to
check whether the dirstate has changed before rereading it."""
def copy(source, dest):
"""Mark dest as a copy of source. Unmark dest if source is None."""
def copied(file):
pass
def copies():
pass
def normalize(path, isknown=False, ignoremissing=False):
"""
normalize the case of a pathname when on a casefolding filesystem
isknown specifies whether the filename came from walking the
disk, to avoid extra filesystem access.
If ignoremissing is True, missing path are returned
unchanged. Otherwise, we try harder to normalize possibly
existing path components.
The normalized case is determined based on the following precedence:
- version of name already stored in the dirstate
- version of name stored on disk
- version provided via command arguments
"""
def clear():
pass
def rebuild(parent, allfiles, changedfiles=None):
pass
def identity():
"""Return identity of dirstate it to detect changing in storage
If identity of previous dirstate is equal to this, writing
changes based on the former dirstate out can keep consistency.
"""
def write(tr):
pass
def addparentchangecallback(category, callback):
"""add a callback to be called when the wd parents are changed
Callback will be called with the following arguments:
dirstate, (oldp1, oldp2), (newp1, newp2)
Category is a unique identifier to allow overwriting an old callback
with a newer callback.
"""
def walk(match, subrepos, unknown, ignored, full=True):
"""
Walk recursively through the directory tree, finding all files
matched by match.
If full is False, maybe skip some known-clean files.
Return a dict mapping filename to stat-like object (either
mercurial.osutil.stat instance or return value of os.stat()).
"""
def status(match, subrepos, ignored, clean, unknown):
"""Determine the status of the working copy relative to the
dirstate and return a pair of (unsure, status), where status is of type
scmutil.status and:
unsure:
files that might have been modified since the dirstate was
written, but need to be read to be sure (size is the same
but mtime differs)
status.modified:
files that have definitely been modified since the dirstate
was written (different size or mode)
status.clean:
files that have definitely not been modified since the
dirstate was written
"""
def matches(match):
"""
return files in the dirstate (in whatever state) filtered by match
"""
def savebackup(tr, backupname):
'''Save current dirstate into backup file'''
def restorebackup(tr, backupname):
'''Restore dirstate by backup file'''
def clearbackup(tr, backupname):
'''Clear backup file'''