mercurial/cffi/bdiffbuild.py
author Raphaël Gomès <rgomes@octobus.net>
Thu, 24 Oct 2024 18:04:26 +0200
branchstable
changeset 52087 888e00b2c3ee
parent 48875 6000f5b25c9b
child 51863 f4733654f144
permissions -rw-r--r--
test-lfs-serve-access: vastly simplify the error output check The traceback differences between all supported Python versions is about to become insane to handle, so let's check what we're actually looking to check.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29833
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     1
import cffi
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     2
import os
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     3
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     4
ffi = cffi.FFI()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
     5
with open(
43668
53607fd3ec6c cffi: fix build on Python 3
Manuel Jacob <me@manueljacob.de>
parents: 43077
diff changeset
     6
    os.path.join(os.path.join(os.path.dirname(__file__), '..'), 'bdiff.c')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
     7
) as f:
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
     8
    ffi.set_source(
43668
53607fd3ec6c cffi: fix build on Python 3
Manuel Jacob <me@manueljacob.de>
parents: 43077
diff changeset
     9
        "mercurial.cffi._bdiff", f.read(), include_dirs=['mercurial']
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    10
    )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    11
ffi.cdef(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    12
    """
29833
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    13
struct bdiff_line {
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    14
    int hash, n, e;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    15
    ssize_t len;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    16
    const char *l;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    17
};
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    18
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    19
struct bdiff_hunk;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    20
struct bdiff_hunk {
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    21
    int a1, a2, b1, b2;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    22
    struct bdiff_hunk *next;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    23
};
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    24
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    25
int bdiff_splitlines(const char *a, ssize_t len, struct bdiff_line **lr);
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    26
int bdiff_diff(struct bdiff_line *a, int an, struct bdiff_line *b, int bn,
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    27
    struct bdiff_hunk *base);
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    28
void bdiff_freehunks(struct bdiff_hunk *l);
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    29
void free(void*);
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    30
"""
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36948
diff changeset
    31
)
29833
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    32
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    33
if __name__ == '__main__':
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    34
    ffi.compile()