# schema -- SWH DB schema upgrade -- from_version: 88 -- to_version: 89 -- description: indexer: Add content_ctags insert into dbversion(version, release, description) values(89, now(), 'Work In Progress'); -- ctags metadata create table content_ctags ( id sha1 primary key references content(sha1) not null, ctags jsonb ); comment on table content_ctags is 'Ctags information on a raw content'; comment on column content_ctags.ctags is 'Ctags information'; -- add tmp_content_ctags entries to content_ctags, overwriting -- duplicates if conflict_update is true, skipping duplicates otherwise. -- -- If filtering duplicates is in order, the call to -- swh_ctags_missing must take place before calling this function. -- -- -- operates in bulk: 0. swh_mktemp(content_ctags), 1. COPY to tmp_content_ctags, -- 2. call this function create or replace function swh_content_ctags_add(conflict_update boolean) returns void language plpgsql as $$ begin if conflict_update then insert into content_ctags (id, ctags) select id, ctags from tmp_content_ctags on conflict(id) do update set ctags = excluded.ctags; else insert into content_ctags (id, ctags) select id, ctags from tmp_content_ctags on conflict do nothing; end if; return; end $$; comment on function swh_content_ctags_add(boolean) IS 'Add new ctags symbols per content'; -- check which entries of tmp_bytea are missing from content_ctags -- -- operates in bulk: 0. swh_mktemp_bytea(), 1. COPY to tmp_bytea, -- 2. call this function create or replace function swh_content_ctags_missing() returns setof sha1 language plpgsql as $$ begin return query (select id::sha1 from tmp_bytea as tmp where not exists (select 1 from content_ctags as c where c.id = tmp.id)); return; end $$; comment on function swh_content_ctags_missing() IS 'Filter missing content ctags'; -- Retrieve list of content ctags from the temporary table. -- -- operates in bulk: 0. mktemp(tmp_bytea), 1. COPY to tmp_bytea, 2. call this function create or replace function swh_content_ctags_get() returns setof content_ctags language plpgsql as $$ begin return query select id::sha1, ctags from tmp_bytea t inner join content_ctags using(id); return; end $$; comment on function swh_content_ctags_get() IS 'List content ctags'; # sample output  tony  ⋯  repo  swh  swh-environment  TMP=$(mktemp -d); cd $TMP; pigz -dc /srv/swh/objects/e3464/e3464269ecc70c77699e5d6177806297e5310cd5 > e3464269ecc70c77699e5d6177806297e5310cd5    master   tony  /  tmp  tmp.FUGVIXvXH7  /usr/local/bin/ctags --fields=+lnz --sort=no --links=no --output-format=json --language-force=Make e3464269ecc70c77699e5d6177806297e5310cd5 {"_type": "tag", "name": "SHELL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 14, "kind": "macro"} {"_type": "tag", "name": "srcdir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 16, "kind": "macro"} {"_type": "tag", "name": "top_srcdir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 17, "kind": "macro"} {"_type": "tag", "name": "VPATH", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 18, "kind": "macro"} {"_type": "tag", "name": "prefix", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 19, "kind": "macro"} {"_type": "tag", "name": "exec_prefix", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 20, "kind": "macro"} {"_type": "tag", "name": "bindir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 22, "kind": "macro"} {"_type": "tag", "name": "sbindir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 23, "kind": "macro"} {"_type": "tag", "name": "libexecdir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 24, "kind": "macro"} {"_type": "tag", "name": "datadir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 25, "kind": "macro"} {"_type": "tag", "name": "sysconfdir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 26, "kind": "macro"} {"_type": "tag", "name": "sharedstatedir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 27, "kind": "macro"} {"_type": "tag", "name": "localstatedir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 28, "kind": "macro"} {"_type": "tag", "name": "libdir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 29, "kind": "macro"} {"_type": "tag", "name": "infodir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 30, "kind": "macro"} {"_type": "tag", "name": "mandir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 31, "kind": "macro"} {"_type": "tag", "name": "includedir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 32, "kind": "macro"} {"_type": "tag", "name": "oldincludedir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 33, "kind": "macro"} {"_type": "tag", "name": "DESTDIR", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 35, "kind": "macro"} {"_type": "tag", "name": "pkgdatadir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 37, "kind": "macro"} {"_type": "tag", "name": "pkglibdir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 38, "kind": "macro"} {"_type": "tag", "name": "pkgincludedir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 39, "kind": "macro"} {"_type": "tag", "name": "top_builddir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 41, "kind": "macro"} {"_type": "tag", "name": "ACLOCAL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 43, "kind": "macro"} {"_type": "tag", "name": "AUTOCONF", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 44, "kind": "macro"} {"_type": "tag", "name": "AUTOMAKE", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 45, "kind": "macro"} {"_type": "tag", "name": "AUTOHEADER", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 46, "kind": "macro"} {"_type": "tag", "name": "INSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 48, "kind": "macro"} {"_type": "tag", "name": "INSTALL_PROGRAM", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 49, "kind": "macro"} {"_type": "tag", "name": "INSTALL_DATA", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 50, "kind": "macro"} {"_type": "tag", "name": "INSTALL_SCRIPT", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 51, "kind": "macro"} {"_type": "tag", "name": "INSTALL_STRIP_FLAG", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 52, "kind": "macro"} {"_type": "tag", "name": "transform", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 53, "kind": "macro"} {"_type": "tag", "name": "NORMAL_INSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 55, "kind": "macro"} {"_type": "tag", "name": "NORMAL_INSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 55, "kind": "target"} {"_type": "tag", "name": "PRE_INSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 56, "kind": "macro"} {"_type": "tag", "name": "PRE_INSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 56, "kind": "target"} {"_type": "tag", "name": "POST_INSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 57, "kind": "macro"} {"_type": "tag", "name": "POST_INSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 57, "kind": "target"} {"_type": "tag", "name": "NORMAL_UNINSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 58, "kind": "macro"} {"_type": "tag", "name": "NORMAL_UNINSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 58, "kind": "target"} {"_type": "tag", "name": "PRE_UNINSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 59, "kind": "macro"} {"_type": "tag", "name": "PRE_UNINSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 59, "kind": "target"} {"_type": "tag", "name": "POST_UNINSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 60, "kind": "macro"} {"_type": "tag", "name": "POST_UNINSTALL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 60, "kind": "target"} {"_type": "tag", "name": "host_alias", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 61, "kind": "macro"} {"_type": "tag", "name": "host_triplet", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 62, "kind": "macro"} {"_type": "tag", "name": "APACHE", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 63, "kind": "macro"} {"_type": "tag", "name": "APACHE_MODULES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 64, "kind": "macro"} {"_type": "tag", "name": "AS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 65, "kind": "macro"} {"_type": "tag", "name": "CC", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 66, "kind": "macro"} {"_type": "tag", "name": "CXX", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 67, "kind": "macro"} {"_type": "tag", "name": "CXXCPP", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 68, "kind": "macro"} {"_type": "tag", "name": "DLLTOOL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 69, "kind": "macro"} {"_type": "tag", "name": "LD", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 70, "kind": "macro"} {"_type": "tag", "name": "LEX", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 71, "kind": "macro"} {"_type": "tag", "name": "LIBLTDL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 72, "kind": "macro"} {"_type": "tag", "name": "LIBTOOL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 73, "kind": "macro"} {"_type": "tag", "name": "LN_S", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 74, "kind": "macro"} {"_type": "tag", "name": "MAINT", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 75, "kind": "macro"} {"_type": "tag", "name": "MAKEINFO", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 76, "kind": "macro"} {"_type": "tag", "name": "MIFLUZ", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 77, "kind": "macro"} {"_type": "tag", "name": "MYSQL_HOME", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 78, "kind": "macro"} {"_type": "tag", "name": "NM", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 79, "kind": "macro"} {"_type": "tag", "name": "OBJDUMP", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 80, "kind": "macro"} {"_type": "tag", "name": "PACKAGE", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 81, "kind": "macro"} {"_type": "tag", "name": "PERL", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 82, "kind": "macro"} {"_type": "tag", "name": "RANLIB", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 83, "kind": "macro"} {"_type": "tag", "name": "TCONFIG", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 84, "kind": "macro"} {"_type": "tag", "name": "URI_HOME", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 85, "kind": "macro"} {"_type": "tag", "name": "USER", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 86, "kind": "macro"} {"_type": "tag", "name": "VERSION", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 87, "kind": "macro"} {"_type": "tag", "name": "WEBBASEDIRS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 88, "kind": "macro"} {"_type": "tag", "name": "WEBBASE_MAJOR_VERSION", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 89, "kind": "macro"} {"_type": "tag", "name": "WEBBASE_MICRO_VERSION", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 90, "kind": "macro"} {"_type": "tag", "name": "WEBBASE_MINOR_VERSION", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 91, "kind": "macro"} {"_type": "tag", "name": "INCLUDES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 93, "kind": "macro"} {"_type": "tag", "name": "THE_LIBS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 94, "kind": "macro"} {"_type": "tag", "name": "bin_PROGRAMS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 95, "kind": "macro"} {"_type": "tag", "name": "crawler_SOURCES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 97, "kind": "macro"} {"_type": "tag", "name": "crawler_LDFLAGS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 98, "kind": "macro"} {"_type": "tag", "name": "crawler_LDADD", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 99, "kind": "macro"} {"_type": "tag", "name": "crawler_DEPENDENCIES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 100, "kind": "macro"} {"_type": "tag", "name": "consistentc_SOURCES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 102, "kind": "macro"} {"_type": "tag", "name": "consistentc_LDFLAGS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 103, "kind": "macro"} {"_type": "tag", "name": "consistentc_LDADD", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 104, "kind": "macro"} {"_type": "tag", "name": "consistentc_DEPENDENCIES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 105, "kind": "macro"} {"_type": "tag", "name": "dumpdata_SOURCES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 107, "kind": "macro"} {"_type": "tag", "name": "dumpdata_LDFLAGS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 108, "kind": "macro"} {"_type": "tag", "name": "dumpdata_LDADD", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 109, "kind": "macro"} {"_type": "tag", "name": "dumpdata_DEPENDENCIES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 110, "kind": "macro"} {"_type": "tag", "name": "furi2md5_SOURCES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 112, "kind": "macro"} {"_type": "tag", "name": "furi2md5_LDFLAGS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 113, "kind": "macro"} {"_type": "tag", "name": "furi2md5_LDADD", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 114, "kind": "macro"} {"_type": "tag", "name": "furi2md5_DEPENDENCIES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 115, "kind": "macro"} {"_type": "tag", "name": "html2text_SOURCES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 117, "kind": "macro"} {"_type": "tag", "name": "html2text_LDFLAGS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 118, "kind": "macro"} {"_type": "tag", "name": "html2text_LDADD", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 119, "kind": "macro"} {"_type": "tag", "name": "html2text_DEPENDENCIES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 120, "kind": "macro"} {"_type": "tag", "name": "mkinstalldirs", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 121, "kind": "macro"} {"_type": "tag", "name": "CONFIG_HEADER", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 122, "kind": "macro"} {"_type": "tag", "name": "CONFIG_CLEAN_FILES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 123, "kind": "macro"} {"_type": "tag", "name": "PROGRAMS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 124, "kind": "macro"} {"_type": "tag", "name": "DEFS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 127, "kind": "macro"} {"_type": "tag", "name": "CPPFLAGS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 128, "kind": "macro"} {"_type": "tag", "name": "LDFLAGS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 129, "kind": "macro"} {"_type": "tag", "name": "LIBS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 130, "kind": "macro"} {"_type": "tag", "name": "crawler_OBJECTS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 131, "kind": "macro"} {"_type": "tag", "name": "consistentc_OBJECTS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 132, "kind": "macro"} {"_type": "tag", "name": "dumpdata_OBJECTS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 133, "kind": "macro"} {"_type": "tag", "name": "html2text_OBJECTS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 134, "kind": "macro"} {"_type": "tag", "name": "furi2md5_OBJECTS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 135, "kind": "macro"} {"_type": "tag", "name": "CFLAGS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 136, "kind": "macro"} {"_type": "tag", "name": "COMPILE", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 137, "kind": "macro"} {"_type": "tag", "name": "LTCOMPILE", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 138, "kind": "macro"} {"_type": "tag", "name": "CCLD", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 139, "kind": "macro"} {"_type": "tag", "name": "LINK", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 140, "kind": "macro"} {"_type": "tag", "name": "DIST_COMMON", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 141, "kind": "macro"} {"_type": "tag", "name": "DISTFILES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 144, "kind": "macro"} {"_type": "tag", "name": "TAR", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 146, "kind": "macro"} {"_type": "tag", "name": "GZIP_ENV", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 147, "kind": "macro"} {"_type": "tag", "name": "SOURCES", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 148, "kind": "macro"} {"_type": "tag", "name": "OBJECTS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 149, "kind": "macro"} {"_type": "tag", "name": "all", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 151, "kind": "target"} {"_type": "tag", "name": "$(srcdir)/Makefile.in", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 154, "kind": "target"} {"_type": "tag", "name": "Makefile", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 157, "kind": "target"} {"_type": "tag", "name": "mostlyclean-binPROGRAMS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 162, "kind": "target"} {"_type": "tag", "name": "clean-binPROGRAMS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 164, "kind": "target"} {"_type": "tag", "name": "distclean-binPROGRAMS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 167, "kind": "target"} {"_type": "tag", "name": "maintainer-clean-binPROGRAMS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 169, "kind": "target"} {"_type": "tag", "name": "install-binPROGRAMS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 171, "kind": "target"} {"_type": "tag", "name": "uninstall-binPROGRAMS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 181, "kind": "target"} {"_type": "tag", "name": ".c.o", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 187, "kind": "target"} {"_type": "tag", "name": ".s.o", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 190, "kind": "target"} {"_type": "tag", "name": ".S.o", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 193, "kind": "target"} {"_type": "tag", "name": "mostlyclean-compile", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 196, "kind": "target"} {"_type": "tag", "name": "clean-compile", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 199, "kind": "target"} {"_type": "tag", "name": "distclean-compile", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 201, "kind": "target"} {"_type": "tag", "name": "maintainer-clean-compile", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 204, "kind": "target"} {"_type": "tag", "name": ".c.lo", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 206, "kind": "target"} {"_type": "tag", "name": ".s.lo", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 209, "kind": "target"} {"_type": "tag", "name": ".S.lo", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 212, "kind": "target"} {"_type": "tag", "name": "mostlyclean-libtool", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 215, "kind": "target"} {"_type": "tag", "name": "clean-libtool", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 218, "kind": "target"} {"_type": "tag", "name": "distclean-libtool", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 221, "kind": "target"} {"_type": "tag", "name": "maintainer-clean-libtool", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 223, "kind": "target"} {"_type": "tag", "name": "crawler", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 225, "kind": "target"} {"_type": "tag", "name": "consistentc", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 229, "kind": "target"} {"_type": "tag", "name": "dumpdata", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 233, "kind": "target"} {"_type": "tag", "name": "html2text", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 237, "kind": "target"} {"_type": "tag", "name": "furi2md5", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 241, "kind": "target"} {"_type": "tag", "name": "tags", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 245, "kind": "target"} {"_type": "tag", "name": "ID", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 247, "kind": "target"} {"_type": "tag", "name": "TAGS", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 255, "kind": "target"} {"_type": "tag", "name": "mostlyclean-tags", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 265, "kind": "target"} {"_type": "tag", "name": "clean-tags", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 267, "kind": "target"} {"_type": "tag", "name": "distclean-tags", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 269, "kind": "target"} {"_type": "tag", "name": "maintainer-clean-tags", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 272, "kind": "target"} {"_type": "tag", "name": "distdir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 274, "kind": "macro"} {"_type": "tag", "name": "subdir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 276, "kind": "macro"} {"_type": "tag", "name": "distdir", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 278, "kind": "target"} {"_type": "tag", "name": "info-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 290, "kind": "target"} {"_type": "tag", "name": "info", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 291, "kind": "target"} {"_type": "tag", "name": "dvi-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 292, "kind": "target"} {"_type": "tag", "name": "dvi", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 293, "kind": "target"} {"_type": "tag", "name": "check-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 294, "kind": "target"} {"_type": "tag", "name": "check", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 295, "kind": "target"} {"_type": "tag", "name": "installcheck-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 296, "kind": "target"} {"_type": "tag", "name": "installcheck", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 297, "kind": "target"} {"_type": "tag", "name": "install-exec-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 298, "kind": "target"} {"_type": "tag", "name": "install-exec", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 299, "kind": "target"} {"_type": "tag", "name": "install-data-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 301, "kind": "target"} {"_type": "tag", "name": "install-data", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 302, "kind": "target"} {"_type": "tag", "name": "install-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 304, "kind": "target"} {"_type": "tag", "name": "install", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 306, "kind": "target"} {"_type": "tag", "name": "uninstall-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 307, "kind": "target"} {"_type": "tag", "name": "uninstall", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 308, "kind": "target"} {"_type": "tag", "name": "all-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 309, "kind": "target"} {"_type": "tag", "name": "all-redirect", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 310, "kind": "target"} {"_type": "tag", "name": "install-strip", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 311, "kind": "target"} {"_type": "tag", "name": "installdirs", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 313, "kind": "target"} {"_type": "tag", "name": "mostlyclean-generic", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 317, "kind": "target"} {"_type": "tag", "name": "clean-generic", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 319, "kind": "target"} {"_type": "tag", "name": "distclean-generic", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 321, "kind": "target"} {"_type": "tag", "name": "maintainer-clean-generic", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 325, "kind": "target"} {"_type": "tag", "name": "mostlyclean-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 326, "kind": "target"} {"_type": "tag", "name": "mostlyclean", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 330, "kind": "target"} {"_type": "tag", "name": "clean-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 332, "kind": "target"} {"_type": "tag", "name": "clean", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 335, "kind": "target"} {"_type": "tag", "name": "distclean-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 337, "kind": "target"} {"_type": "tag", "name": "distclean", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 341, "kind": "target"} {"_type": "tag", "name": "maintainer-clean-am", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 343, "kind": "target"} {"_type": "tag", "name": "maintainer-clean", "path": "e3464269ecc70c77699e5d6177806297e5310cd5", "pattern": "", "language": "Make", "line": 350, "kind": "target"} # ```  tony  ~  TMP=$(mktemp -d); cp -v Downloads/fo*py $TMP; cd $TMP 'Downloads/foo-iso8859-15.py' -> '/tmp/tmp.bziat4VBO9/foo-iso8859-15.py' 'Downloads/foo-utf8.py' -> '/tmp/tmp.bziat4VBO9/foo-utf8.py'  tony  /  tmp  tmp.bziat4VBO9  ls foo-iso8859-15.py foo-utf8.py  tony  /  tmp  tmp.bziat4VBO9  file --mime foo-iso8859-15.py foo-iso8859-15.py: text/x-python; charset=iso-8859-1  tony  /  tmp  tmp.bziat4VBO9  file --mime foo-utf8.py foo-utf8.py: text/x-python; charset=utf-8  tony  /  tmp  tmp.bziat4VBO9  /usr/local/bin/ctags --fields=+lnz --sort=no --links=no --output-format=json --language-force=Python foo-iso8859-15.py (null)  tony  /  tmp  tmp.bziat4VBO9  /usr/local/bin/ctags --fields=+lnz --sort=no --links=no --output-format=json --language-force=Python foo-utf8.py {"_type": "tag", "name": "üñîçóÐè", "path": "foo-utf8.py", "pattern": "/^üñîçóÐè = 'åèíôü'$/", "language": "Python", "line": 6, "kind": "variable"}  tony  /  tmp  tmp.bziat4VBO9  /usr/local/bin/ctags --fields=+lnz --sort=no --links=no foo-iso8859-15.py  tony  /  tmp  tmp.bziat4VBO9  /usr/bin/ctags --fields=+lnz --sort=no --links=no foo-iso8859-15.py  tony  /  tmp  tmp.bziat4VBO9   # recompiling universal-ctags with --enable-iconv to have --input-encoding flag  tony  /  tmp  tmp.bziat4VBO9  /usr/local/bin/ctags --fields=+lnz --sort=no --links=no --input-encoding=ISO8859-15 foo-iso8859-15.py tony  /  tmp  tmp.bziat4VBO9  ``` Note: - /usr/local/bin/ctags is universal-ctags - /usr/bin/ctags is exuberant-ctags