public inbox for cygwin-apps@cygwin.com
 help / color / mirror / Atom feed
From: Jan Nijtmans <jan.nijtmans@gmail.com>
To: Yaakov Selkowitz <yselkowitz@cygwin.com>
Cc: cygapps <cygwin-apps@cygwin.com>
Subject: Re: Putting packages up for adoption
Date: Mon, 23 Mar 2020 13:07:41 +0100	[thread overview]
Message-ID: <CAO1jNwupvB6xvMJ+Pvqz5qSqEPHGa7QQTtd7+K=n=kKo=QxBJQ@mail.gmail.com> (raw)
In-Reply-To: <eac3430442530f073d7de52545d486212ea98b66.camel@cygwin.com>

[-- Attachment #1: Type: text/plain, Size: 2247 bytes --]

Op zo 22 mrt. 2020 om 23:34 schreef Yaakov Selkowitz:
> A word of caution wrt Tcl/Tk for Cygwin: upstream incorrectly treats
> Cygwin as a Win32 platform, necessitating extensive patches to make it
> comply with *NIX/X11 standards.  These patches CANNOT be dropped
> without breaking compatibility, since Win32 and X11 APIs do not
> interact.  Fortunately, Tcl/Tk moves rather slowly, so the existing
> patches should serve you well for some time.

Yes, I'm aware of that. Of course, I'll be very careful to guarantee
100% binary compatibility.

Still, I have some questions. At first, I noted that the current Tcl
version is 8.6.8, which is two patchlevels behind (released
December 22, 2017, more than 3 years old, while 8.6.10
is released November 21, 2019, 4 months ago).  Work to do!

So, I tried starting with x86_64-w64-mingw32. Here are my remarks.

- There are 7 patches included. Only one of them applies cleanly,
  the others are not really necessary (Please correct me if I'm wrong.
  Let's go through them.
  - tcl-8.5.6-mingw.patch
    This one is wrong. Changing tools for cross-compilations should
    be done by "configure  ...  --host=x86_64-w64-mingw32"
  - tcl-8.6.1-nativezlib.patch
    OK. Tcl provides its own zlib.dll, in case it's not available externally.
    In Cygwin it is available (as "mingw64-x86_64-zlib"), which is prefered.
    (I added "cygautoreconf", so this patch would be part of "configure")
  - tcl-8.6.3-autopath.patch
    Not necessary for building, Only needed when we want to run
    Tcl in a non-standard installed directory.
  - tcl-8.6.5-hidden.patch
    Wrong. This exports some internal symbols, which are not
    supposed to be exported at all.
  - tcl-8-6-5-paralle-make-fix.patch
    Already fixed upstream. Besides, it's for unix/Makefile.in, not for mingw.
  - tcl-mingw-w64-compatibility.patch
    Already fixed upstream:
<https://core.tcl-lang.org/tcl/info/8fbf108ea77e5351>
  - tcl-nativetclsh.patch
    Only needed when running Tcl, not for building the libraries

Further on, I noted the the resulting hints file contains:
    requires: tcl
while I would expect:
    requires: mingw64-x86_64-zlib

Here is my cygport file so far.

Thanks for your feedback!

Regards,
      Jan Nijtmans

[-- Attachment #2: mingw64-x86_64-tcl.cygport --]
[-- Type: application/octet-stream, Size: 2085 bytes --]

CROSS_HOST="x86_64-w64-mingw32"
inherit cross

NAME="mingw64-x86_64-tcl"
VERSION=8.6.10
RELEASE=1
CATEGORY="Devel"
SUMMARY="Tcl interpreter for Win64 toolchain"
DEPEND="mingw64-x86_64-zlib"
DESCRIPTION="This package does NOT contain cygwin binaries.  Instead, it
contains msvcrt-linked binaries (aka 'mingw').  It is for use with the
mingw64-x86_64-gcc cross compiler, and installs into the
/usr/x86_64-w64-mingw32/sys-root/mingw/{lib,include} directories."
HOMEPAGE="https://www.tcl.tk/"
SRC_URI="mirror://sourceforge/tcl/tcl-core${VERSION}-src.tar.gz"
SRC_DIR="tcl${VERSION}"
#http://pkgs.fedoraproject.org/cgit/rpms/mingw-tcl.git/plain/tcl-8.6.3-autopath.patch
#	http://pkgs.fedoraproject.org/cgit/rpms/mingw-tcl.git/plain/tcl-8.6.5-hidden.patch
#	http://pkgs.fedoraproject.org/cgit/rpms/mingw-tcl.git/plain/tcl-8.6.5-parallel-make-fix.patch
#	http://pkgs.fedoraproject.org/cgit/rpms/mingw-tcl.git/plain/tcl-8.5.6-mingw.patch
#	http://pkgs.fedoraproject.org/cgit/rpms/mingw-tcl.git/plain/tcl-nativetclsh.patch
#	http://pkgs.fedoraproject.org/cgit/rpms/mingw-tcl.git/plain/tcl-mingw-w64-compatibility.patch
PATCH_URI="
	http://pkgs.fedoraproject.org/cgit/rpms/mingw-tcl.git/plain/tcl-8.6.1-nativezlib.patch
"

DIFF_EXCLUDES="Makefile tcl.hpj tclConfig.sh"

slot=${PV_MAJ_MIN}

src_compile() {
	lndirs
	cd ${B}/win
	cygautoreconf
	cygconf --enable-64bit --host=x86_64-w64-mingw32
	cygmake -j1 CYGPATH=echo
}

src_install() {
	cd ${B}/win
	USE_DESTDIR=0
	cyginstall

	rm -f ${D}${CROSS_BINDIR}/zlib1.dll

	sed -i \
		-e "s|^\(TCL_BUILD_LIB_SPEC\)='.*|\1='-Wl,${CROSS_LIBDIR}/libtcl${slot//.}.a'|" \
		-e "s|^\(TCL_SRC_DIR\)='.*'|\1='${CROSS_INCLUDEDIR}/tcl${slot}'|" \
		-e "s|^\(TCL_BUILD_STUB_LIB_SPEC\)='.*|\1='-Wl,${CROSS_LIBDIR}/libtclstub${slot//.}.a'|" \
		-e "s|^\(TCL_BUILD_STUB_LIB_PATH\)='.*/win|\1='${CROSS_LIBDIR}|" \
		-e "s|^\(TCL_STUB_LIB_SPEC\)='.*|\1='-Wl,-ltclstub${slot//.}'|" \
		${D}${CROSS_LIBDIR}/tclConfig.sh || error

	# install private headers
	includeinto tcl${slot}/win
	doinclude ${S}/win/*.h
	includeinto tcl${slot}/generic
	doinclude ${S}/generic/*.h
}

  reply	other threads:[~2020-03-23 12:07 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-20  3:47 Yaakov Selkowitz
2020-03-20  5:04 ` Marco Atzeri
2020-03-20  6:05   ` ASSI
2020-03-20 10:19     ` Corinna Vinschen
2020-03-20 10:23   ` Corinna Vinschen
2020-03-20  8:13 ` Hamish McIntyre-Bhatty
2020-03-20  8:28   ` Marco Atzeri
2020-03-20  9:29 ` Jan Nijtmans
2020-03-20 10:22   ` Corinna Vinschen
2020-03-22 22:34   ` Yaakov Selkowitz
2020-03-23 12:07     ` Jan Nijtmans [this message]
2020-03-23 15:45       ` Yaakov Selkowitz
2020-03-23 21:04         ` Jan Nijtmans
2020-03-23 23:37           ` Yaakov Selkowitz
2020-03-24 11:41             ` Jan Nijtmans
2020-03-24 13:51               ` Yaakov Selkowitz
2020-03-24 14:11                 ` Jan Nijtmans
2020-03-24 14:24                   ` Yaakov Selkowitz
2020-03-24 19:27                     ` Jan Nijtmans
2020-04-01  9:10                       ` Jan Nijtmans
2020-03-20 10:19 ` Corinna Vinschen
2020-03-20 12:11   ` Jon Turney
2020-03-24 20:19   ` Andrew Schulman
2020-04-01 20:58     ` Yaakov Selkowitz
2020-04-02  7:35       ` Corinna Vinschen
2020-07-21  0:33         ` Andrew Schulman
2020-03-20 12:09 ` Jon Turney
2020-03-21 12:47   ` Thomas Wolff
2020-03-21 14:10     ` Jon Turney
2020-03-20 12:31 ` Marco Atzeri
2020-03-20 17:32   ` Achim Gratz
2020-03-20 19:16     ` Hamish McIntyre-Bhatty
2020-03-20 19:22     ` Yaakov Selkowitz
2020-03-20 20:30     ` Marco Atzeri
2020-03-22 15:34       ` ASSI
2020-03-22 16:36         ` ASSI
2020-03-22 19:49           ` Yaakov Selkowitz
2020-03-22 20:39             ` Achim Gratz
2020-03-22 19:03   ` Achim Gratz
2020-03-23 17:14     ` ASSI
2020-03-23 23:06       ` Marco Atzeri
2020-03-20 16:17 ` Doug Henderson
2020-03-21 14:12   ` Jon Turney
2020-03-26  5:54 ` Marco Atzeri
2020-03-26  7:19   ` Yaakov Selkowitz
2020-03-27 17:52     ` Marco Atzeri
2020-03-27 20:52       ` Yaakov Selkowitz
2020-03-28  3:33         ` Marco Atzeri
2020-03-30  6:01           ` Yaakov Selkowitz
2020-03-27 17:53     ` Marco Atzeri
2020-03-27 18:32       ` Hamish McIntyre-Bhatty
2020-03-27 19:10         ` Yaakov Selkowitz
2020-03-27 20:02           ` Hamish McIntyre-Bhatty
2020-04-10 12:52     ` Python - plan & execution Marco Atzeri
2020-04-23 21:54       ` Yaakov Selkowitz
2020-04-27 14:34         ` Jon Turney
2020-05-25  4:52           ` Marco Atzeri
2020-05-25 13:43             ` Jon Turney
2020-05-25 23:45             ` Yaakov Selkowitz
2020-05-26  4:31               ` Marco Atzeri
2020-06-08 19:20                 ` Jon Turney
2020-06-08 20:02                   ` Marco Atzeri
2020-06-09 13:20                     ` Jon Turney
2020-06-09 19:16                       ` Marco Atzeri
2020-06-12 14:44                         ` Jon Turney
2020-05-25  5:02       ` Marco Atzeri
2020-07-07 18:40         ` Marco Atzeri
2020-07-09 23:52           ` airplanemath
2020-07-10  5:34             ` Marco Atzeri
2020-04-04  3:17 ` Putting packages up for adoption Marco Atzeri

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAO1jNwupvB6xvMJ+Pvqz5qSqEPHGa7QQTtd7+K=n=kKo=QxBJQ@mail.gmail.com' \
    --to=jan.nijtmans@gmail.com \
    --cc=cygwin-apps@cygwin.com \
    --cc=yselkowitz@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).