mercurial/cffi/mpatchbuild.py
author Pulkit Goyal <7895pulkit@gmail.com>
Wed, 10 Mar 2021 13:14:32 +0530
changeset 46811 5a0b930cfb3e
parent 43668 53607fd3ec6c
child 48875 6000f5b25c9b
permissions -rw-r--r--
commit: get info from mergestate whether a file was merged or not While commiting a merge, the commit code does not know whether a file was merged during `hg merge` or not. This leads the commit code to look for filelog ancestor to choose parents of new filelog created on merge commit. This leads to wrong results in some cases as demonstrated by previous patch. From this patch, we start storing information about merged files in mergestate in stateextras and then use that on commit to detect whether we need to set two parents or not. Differential Revision: https://phab.mercurial-scm.org/D10149
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29871
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     1
from __future__ import absolute_import
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     2
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     3
import cffi
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     4
import os
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     5
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     6
ffi = cffi.FFI()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
     7
mpatch_c = os.path.join(
43668
53607fd3ec6c cffi: fix build on Python 3
Manuel Jacob <me@manueljacob.de>
parents: 43077
diff changeset
     8
    os.path.join(os.path.dirname(__file__), '..', 'mpatch.c')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
     9
)
36948
0585337ea787 cleanup: fix some latent open(path).read() et al calls we previously missed
Augie Fackler <augie@google.com>
parents: 32506
diff changeset
    10
with open(mpatch_c) as f:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    11
    ffi.set_source(
43668
53607fd3ec6c cffi: fix build on Python 3
Manuel Jacob <me@manueljacob.de>
parents: 43077
diff changeset
    12
        "mercurial.cffi._mpatch", f.read(), include_dirs=["mercurial"]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    13
    )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    14
ffi.cdef(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    15
    """
29871
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    16
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    17
struct mpatch_frag {
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    18
       int start, end, len;
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    19
       const char *data;
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    20
};
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    21
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    22
struct mpatch_flist {
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    23
       struct mpatch_frag *base, *head, *tail;
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    24
};
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    25
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    26
extern "Python" struct mpatch_flist* cffi_get_next_item(void*, ssize_t);
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    27
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    28
int mpatch_decode(const char *bin, ssize_t len, struct mpatch_flist** res);
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    29
ssize_t mpatch_calcsize(size_t len, struct mpatch_flist *l);
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    30
void mpatch_lfree(struct mpatch_flist *a);
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    31
static int mpatch_apply(char *buf, const char *orig, size_t len,
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    32
                        struct mpatch_flist *l);
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    33
struct mpatch_flist *mpatch_fold(void *bins,
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    34
                       struct mpatch_flist* (*get_next_item)(void*, ssize_t),
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    35
                       ssize_t start, ssize_t end);
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    36
"""
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    37
)
29871
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    38
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    39
if __name__ == '__main__':
90af59b40d8a mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    40
    ffi.compile()