From: Hilmar Preusse Date: Sat, 15 Jun 2024 21:25:01 +0000 (+0200) Subject: Import luametatex_2.11.02+really2.11.01+ds-1.debian.tar.xz X-Git-Tag: archive/raspbian/2.11.02+really2.11.01+ds-1+rpi1^2~4^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2d118317fe63889dc4fde1e5b5c263654b2c7566;p=luametatex.git Import luametatex_2.11.02+really2.11.01+ds-1.debian.tar.xz [dgit import tarball luametatex 2.11.02+really2.11.01+ds-1 luametatex_2.11.02+really2.11.01+ds-1.debian.tar.xz] --- 2d118317fe63889dc4fde1e5b5c263654b2c7566 diff --git a/README.Debian b/README.Debian new file mode 100644 index 0000000..d97d70a --- /dev/null +++ b/README.Debian @@ -0,0 +1,9 @@ +luametatex for Debian +-------------------- + +I've patched upstreams CMakeLists.txt file to link dynamically with +libmimalloc in Debian. The libcerf and the potrace in the source package +is patched by the luametatex maintainers, hence I use that instead of the +Debian package. + + -- Hilmar Preusse Mon, 17 Apr 2023 09:33:47 +0200 diff --git a/README.source b/README.source new file mode 100644 index 0000000..d49827f --- /dev/null +++ b/README.source @@ -0,0 +1,24 @@ +luametatex for Debian +-------------------- + +The luametatex_2.11.01+really2.10.08+ds.orig.tar.gz is identical to +luametatex_2.10.08+ds.orig.tar.gz, hence not another commit in the +pristine-tar branch. Create a soft link to luametatex_2.10.08+ds.orig.tar.gz +named luametatex_2.11.01+really2.10.08+ds.orig.tar.gz you should be +able to create a source package. + +Command to build the source tree from git could be: + +gbp buildpackage --git-upstream-tag=upstream/2.10.08+ds --git-no-create-orig \ +--git-export-dir=/tmp --git-builder=/bin/true --git-no-pbuilder --git-no-purge + +Similar procedure for luametatex_2.11.01+really2.11.01+ds + +If everything fails scroll back to the upstream tag e.g.: + +git checkout 0edb7d5eac96e7f5be51194e82a79f932cc63023 + +Copy the directory to another one, scroll back "git checkout master" and copy +subdir "debian" to the new directory and build the source package. + + -- Hilmar Preusse Wed, 06 Mar 2024 23:19:06 +0100 diff --git a/changelog b/changelog new file mode 100644 index 0000000..32a732d --- /dev/null +++ b/changelog @@ -0,0 +1,75 @@ +luametatex (2.11.02+really2.11.01+ds-1) unstable; urgency=medium + + * The version/snapshot of ConTeXt in Debian does to fit to ltmx + 2.11.02, downgrade to 2.11.01 again (Closes: #1072682). + * Disable patches for mimalloc. + + -- Hilmar Preusse Sat, 15 Jun 2024 23:25:01 +0200 + +luametatex (2.11.02+ds-4) unstable; urgency=medium + + * Upload to unstable. + + -- Hilmar Preusse Wed, 05 Jun 2024 14:13:07 +0200 + +luametatex (2.11.02+ds-3) experimental; urgency=medium + + * Link dynamically with mimalloc. + * Patch handling: + - adding, fixing DEP-3 headers + - removing obsolete patch + + -- Hilmar Preusse Fri, 24 May 2024 22:35:07 +0200 + +luametatex (2.11.02+ds-2) experimental; urgency=medium + + * Add patches from upstream to fix build failures on arches, where + ‘__builtin_thread_pointer’ is not supported. + https://github.com/microsoft/mimalloc/issues/883 . + + -- Hilmar Preusse Thu, 16 May 2024 08:40:41 +0200 + +luametatex (2.11.02+ds-1) experimental; urgency=medium + + * New upstream version. + See https://github.com/contextgarden/luametatex/issues/12 + * Add Breaks statement for old context. + + -- Hilmar Preusse Wed, 15 May 2024 23:53:44 +0200 + +luametatex (2.11.01+really2.11.01+ds-1) experimental; urgency=medium + + * Reupload version 2.11.01 for TL 2024. + + -- Hilmar Preusse Sun, 21 Apr 2024 16:35:11 +0200 + +luametatex (2.11.01+really2.10.08+ds-1) unstable; urgency=medium + + * Downgrade to 2.10.08 (Closes: #1064402). + + -- Hilmar Preusse Wed, 06 Mar 2024 23:18:47 +0100 + +luametatex (2.11.01+ds-2) unstable; urgency=medium + + * armel needs linking with libatomic too. + + -- Hilmar Preusse Tue, 20 Feb 2024 23:26:24 +0100 + +luametatex (2.11.01+ds-1) unstable; urgency=medium + + * New upstream release, refresh patches. + - Should fix build failure on HURD. + - Contains a local copy of potrace -> extend d/copyright. + - Redo d/patches/no_strip.diff, stripping is configured in a + different file. + * Update d/gbp.conf. + * Link luametatex with libatomic on m68k, powerpc and sh4. Should fix + FTBFS on these arches. + + -- Hilmar Preusse Tue, 20 Feb 2024 08:23:29 +0000 + +luametatex (2.10.08+ds-1) unstable; urgency=medium + + * Initial release. (Closes: #1034501) + + -- Hilmar Preusse Tue, 18 Jul 2023 00:02:20 +0200 diff --git a/control b/control new file mode 100644 index 0000000..259e583 --- /dev/null +++ b/control @@ -0,0 +1,44 @@ +Source: luametatex +Section: tex +Priority: optional +Maintainer: Debian TeX Task Force +Uploaders: Hilmar Preusse +Rules-Requires-Root: no +Build-Depends: + debhelper-compat (= 13), + cmake, + libmimalloc-dev +Standards-Version: 4.6.2 +Homepage: https://github.com/contextgarden/luametatex +Vcs-Browser: https://github.com/debian-tex/luametatex +Vcs-Git: https://github.com/debian-tex/luametatex.git + +Package: luametatex +Architecture: any +Breaks: context (<< 2024) +Depends: + ${shlibs:Depends}, + ${misc:Depends}, +Description: Next generation ConTeXt processing engine + The LuaMetaTeX program is a light weight variant of LuaTeX. This + program finds its origin in parts of TeX (the original program, eTeX + (some extensions), pdfTeX (more extensions) Aleph (based on Omega, + directions) and of course LuaTeX (lots of things). + . + This is a follow up on the LuaTeX project. The source is considered + part of the ConTeXt distribution and managed by the ConTeXt development + team and the ConTeXt user group. That way it can be guaranteed that the + engine and this TeX macro package work together as expected. The idea + is that users can easily compile the source themselves and that way + have a guaranteed long term (minimal) TeX based installation. Because + the management scripts are in Lua, only one binary is needed to serve + the ConTeXt distribution. + . + In the source code it was tried to stay close to the ancestors, LuaTeX, + pdfTeX, eTeX and TeX, but in the meantime due to additions there is + quite some diverge. There are new primitives and submechanisms, there + is more control over the inner workings, font handling is mostly + delegated to Lua and there is no built-in backend. The code base is + all-inclusive and has no (nor will have) dependencies on external + libraries. Performance and memory consumption have been optimized and + the additions (compared to LuaTeX) don’t have a negative impact. diff --git a/copyright b/copyright new file mode 100644 index 0000000..5106bcc --- /dev/null +++ b/copyright @@ -0,0 +1,194 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Source: https://github.com/contextgarden/luametatex +Upstream-Name: luametatex +Upstream-Contact: Hans Hagen +Files-Excluded: + source/libraries/softposit/build/Linux-x86_64-GCC/softposit_test.a + +Files: + * +Copyright: + 19xx - 2023 tex: Donald Knuth + 19xx - 20xx etex: Peter Breitenlohner, Phil Taylor and friends + 19xx - 20xx pdftex: Han The Thanh and friends + 1991 - 20xx omega: John Plaice and Yannis Haralambous + 19xx - 20xx aleph: Giuseppe Bilotta + 1994 - 20xx metapost: John Hobby, Taco Hoekwater, Luigi Scarso, Hans Hagen + 2018 - 2023 Hans Hagen + 2018 - 2023 Wolfgang Schuster + 2018 - 2023 Mojca Miklavec + 2018 - 2023 Alan Braslau +License: GPL-2+ + +Files: debian/* +Copyright: 2023 - 2024 Hilmar Preusse +License: GPL-2+ + +Files: source/libraries/avl/* +Copyright: 2002 - 2012 Richard McGraw +License: GPL-2+ + +Files: source/libraries/decnumber/* +Copyright: 2000 - 2009 Mike Cowlishaw +License: ICU + +Files: source/libraries/hnj/* +Copyright: + 1998 Raph Levien + 2001 ALTLinux, Moscow (http://www.alt-linux.org) + 2001 Peter Novodvorsky (nidd@cs.msu.su) +License: GPL-2+ + +Files: source/libraries/libcerf/* +Copyright: + 2012 Steven G. Johnson + 2013 Joachim Wuttke +License: MIT + +Files: source/libraries/mimalloc/* +Copyright: + 2018 - 2021 Microsoft Corporation, Daan Leijen +License: MIT + +Files: source/libraries/miniz/* +Copyright: + 2013 - 2014 RAD Game Tools and Valve Software + 2010 - 2014 Rich Geldreich and Tenacious Software LLC +License: MIT + +Files: source/libraries/potrace/* +Copyright: + 2001 - 2019 Peter Selinger +License: GPL-2+ + +Files: source/libraries/pplib/* +Copyright: + 2019 Paweł Jackowski +License: PD + +Files: source/libraries/softposit/* +Copyright: + 2017 - 2018 A*STAR. +License: BSD-3 + +Files: source/lua/* +Copyright: + Roberto Ierusalimschy, Waldemar Celes and Luiz Henrique de Figueiredo +License: GPL-2+ + +Files: source/luacore/lua55/* +Copyright: + 2007 - 2019 Lua.org, PUC-Rio, Brazil (http://www.lua.org) +License: MIT + +Files: source/luacore/luapeg/* +Copyright: + 2007 - 2019 Lua.org, PUC-Rio, Brazil (http://www.lua.org) + 2007 - 2019 Roberto Ierusalimschy +License: MIT + +Files: source/luacore/luasocket/* +Copyright: + 2004 - 2013 Diego Nehab +License: MIT + +License: GPL-2+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see +Comment: + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +License: PD + Public domain software, produced as part of work done by the + United States Government & not subject to copyright in the US. + . + To the extent that any copyright protections may be considered to be held by + the authors of this software in some jurisdiction outside the United States, + the authors hereby waive those copyright protections and dedicate the + software to the public domain. Thus, this license may be considered + equivalent to Creative Commons 0: ”No Rights Reserved”. + . + Note that, according to Gnu.org, public domain is compatible with GPL. + +License: ICU + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, provided that the above copyright notice(s) and this + permission notice appear in all copies of the Software and that both the + above copyright notice(s) and this permission notice appear in supporting + documentation. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + . + Except as contained in this notice, the name of a copyright holder shall not + be used in advertising or otherwise to promote the sale, use or other + dealings in this Software without prior written authorization of the + copyright holder. + +License: MIT + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +License: BSD-3 + Copyright (c) The Regents of the University of California. + All rights reserved. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. diff --git a/docs b/docs new file mode 100644 index 0000000..3f96cc9 --- /dev/null +++ b/docs @@ -0,0 +1,2 @@ +README.adoc +luametatex.svg diff --git a/gbp.conf b/gbp.conf new file mode 100644 index 0000000..3efa724 --- /dev/null +++ b/gbp.conf @@ -0,0 +1,9 @@ +[import-orig] +pristine-tar = True + +[push] +pristine-tar = True + +[pull] +pristine-tar = True +upstream = True diff --git a/luametatex.1 b/luametatex.1 new file mode 100644 index 0000000..82adeea --- /dev/null +++ b/luametatex.1 @@ -0,0 +1,83 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH LuaMetaTeX "1" "April 2023" "LuaMetaTeX" "User Commands" +.SH NAME +luametatex \- Next generation ConTeXt procession engine. +.SH SYNOPSIS +.B luametatex +\fI\,--lua=FILE \/\fR[\fI\,OPTION\/\fR]... [\fI\,TEXNAME\/\fR[\fI\,.tex\/\fR]] [\fI\,COMMANDS\/\fR] +.br +.B luametatex +\fI\,--lua=FILE \/\fR[\fI\,OPTION\/\fR]... \fI\,\FIRST-LINE\/\fR +.br +.B luametatex +\fI\,--lua=FILE \/\fR[\fI\,OPTION\/\fR]... \fI\,&FMT ARGS\/\fR +.SH DESCRIPTION +Run LuaMetaTeX on TEXNAME, usually creating TEXNAME.pdf. Any remaining COMMANDS are processed as luatex input, after TEXNAME is read. +.PP +Alternatively, if the first non\-option argument begins with a backslash, +LuaMetaTeX interprets all non\-option arguments as an input line. +.PP +Alternatively, if the first non\-option argument begins with a &, the next word +is taken as the FMT to read, overriding all else. Any remaining arguments are +processed as above. +.PP +If no arguments or options are specified, prompt for input. +.PP +The following regular options are understood: +.TP +\fB\-\-credits\fR +display credits and exit +.TP +\fB\-\-fmt\fR=\fI\,FORMAT\/\fR +load the format file FORMAT +.TP +\fB\-\-help\fR +display help and exit +.TP +\fB\-\-ini\fR +be iniluametatex, for dumping formats +.TP +\fB\-\-jobname\fR=\fI\,STRING\/\fR +set the job name to STRING +.TP +\fB\-\-lua\fR=\fI\,FILE\/\fR +load and execute a lua initialization script +.TP +\fB\-\-version\fR +display version and exit +.PP +Alternate behaviour models can be obtained by special switches +.TP +\fB\-\-luaonly\fR +run a lua file, then exit +.PP +Loading libraries from Lua is blocked unless one explicitly permits it: +.TP +\fB\-\-permitloadlib\fR +permit loading of external libraries (coming) +.PP +See the reference manual for more information about the startup process. +.SH "REPORTING BUGS" +Email bug reports to dev\-context@ntg.nl. +.PP +.br +Execute 'luametatex \fB\-\-credits\fR' for credits and version details. +.PP +.br +There is NO warranty. Redistribution of this software is covered by the terms +of the GNU General Public License, version 2 or (at your option) any later +version. For more information about these matters, see the file named COPYING +and the LuaMetaTeX source. +.PP +.br +Functionality : level 20230310 +.br +Support : context@ntg.nl +.br +Copyright : The Lua(Meta)TeX Team(s) (2005\-2023+) +.PP +.br +The LuaMetaTeX project is related to ConTeXt development. This macro package +tightly integrates TeX and MetaPost in close cooperation with Lua. Updates will +happen in sync with ConTeXt and when needed. Don't be fooled by unchanged dates: +long term stability is the objective. diff --git a/manpages b/manpages new file mode 100644 index 0000000..43c17c9 --- /dev/null +++ b/manpages @@ -0,0 +1 @@ +debian/luametatex.1 diff --git a/patches/146f9d2333bc0aeed1593dc659b17e65b38a33e7.patch b/patches/146f9d2333bc0aeed1593dc659b17e65b38a33e7.patch new file mode 100644 index 0000000..d540353 --- /dev/null +++ b/patches/146f9d2333bc0aeed1593dc659b17e65b38a33e7.patch @@ -0,0 +1,64 @@ +From 146f9d2333bc0aeed1593dc659b17e65b38a33e7 Mon Sep 17 00:00:00 2001 +From: Daan +Date: Wed, 24 Apr 2024 19:48:04 -0700 +Subject: [PATCH] make TLS slot default instead of __builtin_thread_pointer. + Potentially fixes build errors on various platforms (see issue #883) + +--- + include/mimalloc/prim.h | 29 +++++++++++++++-------------- + 1 file changed, 15 insertions(+), 14 deletions(-) + +diff --git a/include/mimalloc/prim.h b/include/mimalloc/prim.h +index f8a40323..6063d44a 100644 +--- a/source/libraries/mimalloc/include/mimalloc/prim.h ++++ b/source/libraries/mimalloc/include/mimalloc/prim.h +@@ -203,11 +203,14 @@ static inline void mi_prim_tls_slot_set(size_t slot, void* value) mi_attr_noexce + + #endif + +-// Do we have __builtin_thread_pointer? (do not make this a compound test as it fails on older gcc's, see issue #851) +-#if defined(__has_builtin) +-#if __has_builtin(__builtin_thread_pointer) +-#define MI_HAS_BUILTIN_THREAD_POINTER 1 +-#endif ++// Do we have __builtin_thread_pointer? (do not make this a compound test as that fails on older gcc's, see issue #851) ++#ifdef __has_builtin ++ #if __has_builtin(__builtin_thread_pointer) ++ #if (!defined(__APPLE__)) && /* on apple (M1) the wrong register is read (tpidr_el0 instead of tpidrro_el0) so fall back to TLS slot assembly ()*/ \ ++ (!defined(__clang_major__) || __clang_major__ >= 14) // older clang versions emit bad code; fall back to using the TLS slot () ++ #define MI_HAS_BUILTIN_THREAD_POINTER 1 ++ #endif ++ #endif + #elif defined(__GNUC__) && (__GNUC__ >= 7) && defined(__aarch64__) // special case aarch64 for older gcc versions (issue #851) + #define MI_HAS_BUILTIN_THREAD_POINTER 1 + #endif +@@ -231,15 +234,6 @@ static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept { + return (uintptr_t)NtCurrentTeb(); + } + +-#elif MI_HAS_BUILTIN_THREAD_POINTER && \ +- (!defined(__APPLE__)) && /* on apple (M1) the wrong register is read (tpidr_el0 instead of tpidrro_el0) so fall back to TLS slot assembly ()*/ \ +- (!defined(__clang_major__) || __clang_major__ >= 14) // older clang versions emit bad code; fall back to using the TLS slot () +- +-static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept { +- // Works on most Unix based platforms +- return (uintptr_t)__builtin_thread_pointer(); +-} +- + #elif defined(MI_HAS_TLS_SLOT) + + static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept { +@@ -255,6 +249,13 @@ static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept { + #endif + } + ++#elif MI_HAS_BUILTIN_THREAD_POINTER ++ ++static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept { ++ // Works on most Unix based platforms ++ return (uintptr_t)__builtin_thread_pointer(); ++} ++ + #else + + // otherwise use portable C, taking the address of a thread local variable (this is still very fast on most platforms). diff --git a/patches/cc3c14f2ed374f908e60a3bf29c1dff84fc8cfc2.patch b/patches/cc3c14f2ed374f908e60a3bf29c1dff84fc8cfc2.patch new file mode 100644 index 0000000..6d08d4c --- /dev/null +++ b/patches/cc3c14f2ed374f908e60a3bf29c1dff84fc8cfc2.patch @@ -0,0 +1,67 @@ +From cc3c14f2ed374f908e60a3bf29c1dff84fc8cfc2 Mon Sep 17 00:00:00 2001 +From: Daan +Date: Fri, 26 Apr 2024 23:34:10 -0700 +Subject: [PATCH] use builtin_thread_pointer only on non-apple arm64 (issue + #883 and #851) + +--- + include/mimalloc/prim.h | 32 +++++++++++++++----------------- + 1 file changed, 15 insertions(+), 17 deletions(-) + +diff --git a/include/mimalloc/prim.h b/include/mimalloc/prim.h +index 6063d44a..89266817 100644 +--- a/source/libraries/mimalloc/include/mimalloc/prim.h ++++ b/source/libraries/mimalloc/include/mimalloc/prim.h +@@ -203,16 +203,14 @@ static inline void mi_prim_tls_slot_set(size_t slot, void* value) mi_attr_noexce + + #endif + +-// Do we have __builtin_thread_pointer? (do not make this a compound test as that fails on older gcc's, see issue #851) +-#ifdef __has_builtin +- #if __has_builtin(__builtin_thread_pointer) +- #if (!defined(__APPLE__)) && /* on apple (M1) the wrong register is read (tpidr_el0 instead of tpidrro_el0) so fall back to TLS slot assembly ()*/ \ +- (!defined(__clang_major__) || __clang_major__ >= 14) // older clang versions emit bad code; fall back to using the TLS slot () +- #define MI_HAS_BUILTIN_THREAD_POINTER 1 +- #endif +- #endif +-#elif defined(__GNUC__) && (__GNUC__ >= 7) && defined(__aarch64__) // special case aarch64 for older gcc versions (issue #851) +-#define MI_HAS_BUILTIN_THREAD_POINTER 1 ++// Do we have __builtin_thread_pointer? This would be the preferred way to get a unique thread id ++// but unfortunately, it seems we cannot test for this reliably at this time (see issue #883) ++// Nevertheless, it seems needed on older graviton platforms (see issue #851). ++// For now, we only enable this for specific platforms. ++#if defined(__GNUC__) && (__GNUC__ >= 7) && defined(__aarch64__) /* special case aarch64 for older gcc versions (issue #851) */ \ ++ && !defined(__APPLE__) /* on apple (M1) the wrong register is read (tpidr_el0 instead of tpidrro_el0) so fall back to TLS slot assembly ()*/ \ ++ && (!defined(__clang_major__) || __clang_major__ >= 14) /* older clang versions emit bad code; fall back to using the TLS slot () */ ++#define MI_USE_BUILTIN_THREAD_POINTER 1 + #endif + + +@@ -234,6 +232,13 @@ static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept { + return (uintptr_t)NtCurrentTeb(); + } + ++#elif MI_USE_BUILTIN_THREAD_POINTER ++ ++static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept { ++ // Works on most Unix based platforms with recent compilers ++ return (uintptr_t)__builtin_thread_pointer(); ++} ++ + #elif defined(MI_HAS_TLS_SLOT) + + static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept { +@@ -249,13 +254,6 @@ static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept { + #endif + } + +-#elif MI_HAS_BUILTIN_THREAD_POINTER +- +-static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept { +- // Works on most Unix based platforms +- return (uintptr_t)__builtin_thread_pointer(); +-} +- + #else + + // otherwise use portable C, taking the address of a thread local variable (this is still very fast on most platforms). diff --git a/patches/dynamic_linking.diff b/patches/dynamic_linking.diff new file mode 100644 index 0000000..accd6db --- /dev/null +++ b/patches/dynamic_linking.diff @@ -0,0 +1,16 @@ +Description: Do not build mimalloc as static lib +Author: Hilmar Preusse +Last-Update: 2024-05-18 +Forwarded: not-needed + +--- luametatex.orig/CMakeLists.txt ++++ luametatex/CMakeLists.txt +@@ -262,7 +262,7 @@ + add_definitions(-DLUAMETATEX_USE_MIMALLOC=1) + # add_definitions(-DMIMALLOC_RESET_DELAY=250) + # set(luametatex_use_mimalloc 1) +- include(cmake/mimalloc.cmake) ++ #include(cmake/mimalloc.cmake) + endif() + + include(cmake/tex.cmake) diff --git a/patches/link_atomic.diff b/patches/link_atomic.diff new file mode 100644 index 0000000..d2c76ad --- /dev/null +++ b/patches/link_atomic.diff @@ -0,0 +1,35 @@ +Description: Link with libatomic on some arches. +Author: Hilmar Preusse +Last-Update: 2024-02-21 +Forwarded: not needed. + +--- luametatex.orig/cmake/luametatex.cmake ++++ luametatex/cmake/luametatex.cmake +@@ -1,3 +1,13 @@ ++# Debian: determine host arch. ++execute_process(COMMAND ++ dpkg-architecture ++ -qDEB_HOST_ARCH ++ OUTPUT_VARIABLE ++ CMAKE_DEB_HOST_ARCH ++ OUTPUT_STRIP_TRAILING_WHITESPACE ++) ++ ++ + add_compile_options(-DLUA_CORE) + + set(luametatex_sources +@@ -69,6 +79,13 @@ + ) + endif() + ++# Debian: link with atomic on specific arches. ++if(${CMAKE_DEB_HOST_ARCH} MATCHES "m68k" OR ${CMAKE_DEB_HOST_ARCH} MATCHES "powerpc" OR ${CMAKE_DEB_HOST_ARCH} MATCHES "sh4" OR ${CMAKE_DEB_HOST_ARCH} MATCHES "armel") ++ target_link_libraries(luametatex ++ atomic ++) ++endif() ++ + if (${CMAKE_HOST_SOLARIS}) + target_link_libraries(luametatex + rt diff --git a/patches/no_strip.diff b/patches/no_strip.diff new file mode 100644 index 0000000..aa6bfc7 --- /dev/null +++ b/patches/no_strip.diff @@ -0,0 +1,33 @@ +Description: Do not strip binary after build. +Author: Hilmar Preusse +Last-Update: 2023-04-17 +Forwarded: not-needed + +--- luametatex.orig/cmake/luametatex.cmake ++++ luametatex/cmake/luametatex.cmake +@@ -77,14 +77,3 @@ + resolv + ) + endif() +- +-if (DEFINED LMT_OPTIMIZE) +- # we strip anyway +-elseif (CMAKE_HOST_SOLARIS) +- # no strip +-elseif (CMAKE_C_COMPILER_ID MATCHES "GNU") +- # -g -S -d : remove all debugging symbols & sections +- # -x : remove all non-global symbols +- # -X : remove any compiler-generated symbols +- add_custom_command(TARGET luametatex POST_BUILD COMMAND ${CMAKE_STRIP} -g -S -d -x luametatex${CMAKE_EXECUTABLE_SUFFIX}) +-endif() +--- luametatex.orig/CMakeLists.txt ++++ luametatex/CMakeLists.txt +@@ -33,7 +33,7 @@ + # nice (the smaller as runner the better). After all, we don't load external (Lua) libraries + # anyway. + +-set(LMT_STRIP 1) ++# set(LMT_STRIP 1) + + if (MSVC) + diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..3fd164a --- /dev/null +++ b/patches/series @@ -0,0 +1,5 @@ +dynamic_linking.diff +no_strip.diff +link_atomic.diff +#146f9d2333bc0aeed1593dc659b17e65b38a33e7.patch +#cc3c14f2ed374f908e60a3bf29c1dff84fc8cfc2.patch diff --git a/rules b/rules new file mode 100755 index 0000000..e74112f --- /dev/null +++ b/rules @@ -0,0 +1,24 @@ +#!/usr/bin/make -f + +# See debhelper(7) (uncomment to enable). +# Output every command that modifies files on the build system. +#export DH_VERBOSE = 1 + + +# See FEATURE AREAS in dpkg-buildflags(1). +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# See ENVIRONMENT in dpkg-buildflags(1). +# Package maintainers to append CFLAGS. +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# Package maintainers to append LDFLAGS. +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + + +%: + dh $@ + + +#override_dh_auto_configure: +# dh_auto_configure -- \ +# -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH) diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/upstream/metadata b/upstream/metadata new file mode 100644 index 0000000..fd92e75 --- /dev/null +++ b/upstream/metadata @@ -0,0 +1,4 @@ +Bug-Database: https://github.com/contextgarden/luametatex/issues +Bug-Submit: https://github.com/contextgarden/luametatex/issues/new +Repository-Browse: https://github.com/contextgarden/luametatex +Repository: https://github.com/contextgarden/luametatex.git diff --git a/watch b/watch new file mode 100644 index 0000000..469ae20 --- /dev/null +++ b/watch @@ -0,0 +1,32 @@ +# See uscan(1) for format. + +# Compulsory line, this is a version 4 file. +version=4 + +# PGP signature mangle, so foo.tar.gz has foo.tar.gz.sig. +#opts="pgpsigurlmangle=s%$%.sig%" + +# HTTP site (basic). +#http://example.com/downloads.html \ +# files/luametatex-([\d\.]+)\.tar\.gz + +# Uncomment to examine an FTP server. +#ftp://ftp.example.com/pub/luametatex-(.*)\.tar\.gz + +# SourceForge hosted projects. +#http://sf.net/luametatex/ luametatex-(.*)\.tar\.gz + +# GitHub hosted projects. +#opts="filenamemangle=s%(?:.*?)?v?(@ANY_VERSION@@ARCHIVE_EXT@)%@PACKAGE@-$1%" \ +# https://github.com/contextgarden/luametatex/tags \ +# (?:.*?/)v?@ANY_VERSION@@ARCHIVE_EXT@ +opts=repack,repacksuffix=+ds,compression=gz,dversionmangle=s/\+ds// \ + https://github.com/contextgarden/luametatex/tags \ + (?:.*?/)v?@ANY_VERSION@@ARCHIVE_EXT@ + +# PyPI. +#https://pypi.debian.net/luametatex/luametatex-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) + +# Direct Git. +#opts="mode=git" http://git.example.com/luametatex.git \ +# refs/tags/v([\d\.]+)