From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Arash Esbati Newsgroups: gmane.emacs.devel Subject: Re: Emacs binaries for Windows Date: Fri, 19 Aug 2016 19:24:23 +0200 Message-ID: <86fuq07jug.fsf@gmail.com> References: <86mvk9jj6i.fsf@gmail.com> <877fbc3ion.fsf@russet.org.uk> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1471628882 32103 195.159.176.226 (19 Aug 2016 17:48:02 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 19 Aug 2016 17:48:02 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 Cc: emacs-devel@gnu.org To: phillip.lord@russet.org.uk (Phillip Lord) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Aug 19 19:47:57 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bantc-000887-Pm for ged-emacs-devel@m.gmane.org; Fri, 19 Aug 2016 19:47:57 +0200 Original-Received: from localhost ([::1]:58427 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bantZ-0002Kv-S3 for ged-emacs-devel@m.gmane.org; Fri, 19 Aug 2016 13:47:53 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:53517) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1banXQ-0004D1-0d for emacs-devel@gnu.org; Fri, 19 Aug 2016 13:25:01 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1banXK-0005Z4-Ne for emacs-devel@gnu.org; Fri, 19 Aug 2016 13:24:58 -0400 Original-Received: from mail-wm0-x231.google.com ([2a00:1450:400c:c09::231]:36049) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1banXK-0005Ys-Ci for emacs-devel@gnu.org; Fri, 19 Aug 2016 13:24:54 -0400 Original-Received: by mail-wm0-x231.google.com with SMTP id q128so42726153wma.1 for ; Fri, 19 Aug 2016 10:24:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=l9oEkJ+BJFqecguMQ4DqD83c8KalEPtQkiGBSLugAq4=; b=VD2ywc8RrMbTUQvCp51463f7MV1ON/xpnCl2UANPZKSzVJLpfEvx4eq4GxLioaZC3z WHhY9BnyPgZyB6j3iy2Hjqccw6QwjTpjJ9Py0vfj30rVjI3Y1svoY7SsEVWo1SM3DTgb 80U4yoRVP44Sifm/bte8kYTjyeSOHr1uPbKrGQVSlH+khUQHPM9TLQQS7pDE+2Gikm3D UzcCogRlRPb8f3wKHT4QdDtuzi1Mb/VBzBewLb63k/wBTgWlrl+47T7bXQm+oo/Nfy1E zqlsHG/UQmdSa0oOR11ec6rnScDC4NcKGyaphvf2U7MB6XFK9HyJZUkTx5pCDn0XxxTf XkTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=l9oEkJ+BJFqecguMQ4DqD83c8KalEPtQkiGBSLugAq4=; b=fup+q6Xp54XzIDYXnwEEGEfgQPC5dfg5HvrWngqnEzwNlLfniLZWwqLcv8IpgM7DRu 81gPgApX85xwecUGcfGB3vzdYEiJL0EXplbkzfUF121VL1HBeCcWlm6VqzC6PGuY7vCA VGV+Z1FljEr62c8cQPhZKn3F4vcFmMoo8EJywqJg7T1wAtzM1Fe5kxdCoKQ/XzV/S7Uj X3ZHVEf5B8oJMdrbZO7AVlPovHUBV6cQ1MF4rXYMIbjKSwD9DVRqgzw591vsumgid50L jteFfXQQT0TLOchxtAnVvUimvUZpdxNayPjnnP8ov2zIu/5IxYL7Pgk+u2FcM04BWHD+ RKQw== X-Gm-Message-State: AEkoous9x0Q2zV0Kekjhm1UtjThK4YSyN3Oss0xst3PgZhoH+piykA7xK9882WgZH7iwMQ== X-Received: by 10.28.232.149 with SMTP id f21mr5090512wmi.51.1471627493408; Fri, 19 Aug 2016 10:24:53 -0700 (PDT) Original-Received: from mutant (p54ACE0FB.dip0.t-ipconnect.de. [84.172.224.251]) by smtp.gmail.com with ESMTPSA id vv2sm7956306wjc.29.2016.08.19.10.24.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Aug 2016 10:24:53 -0700 (PDT) In-Reply-To: <877fbc3ion.fsf@russet.org.uk> (Phillip Lord's message of "Fri, 19 Aug 2016 16:03:04 +0100") X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::231 X-Mailman-Approved-At: Fri, 19 Aug 2016 13:47:45 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:206679 Archived-At: --=-=-= Content-Type: text/plain phillip.lord@russet.org.uk (Phillip Lord) writes: > Arash Esbati writes: >> I know this topic has been discussed in past and my apologies in advance >> if I'm beating the dead horse again and a longish message. > > It's not a dead horse at all. It's an issue which, to my mind, needs > solving. Thanks for the thumbs-up Phil, glad I'm not the only person not happy with the current state :-) >> I wrote a simple script to determine the dependencies of the required >> packages mentioned here: >> >> http://git.savannah.gnu.org/cgit/emacs.git/tree/nt/INSTALL.W64#n60 > > > I'd be interested to see this script. It is really a brain-dead one. I started with this one to find out the dependencies of the relevant package: --8<---------------cut here---------------start------------->8--- #! /usr/bin/bash # Run this script only in a msys2 shell and not in mingw64: if [[ $MSYSTEM != "MSYS" ]] ; then echo "Run this script in a MSYS-shell -- I stop now!" exit 1 fi # This list derives from the features we want Emacs to compile with. PKG_REQ="mingw-w64-x86_64-giflib mingw-w64-x86_64-gnutls mingw-w64-x86_64-libjpeg-turbo mingw-w64-x86_64-libpng mingw-w64-x86_64-librsvg mingw-w64-x86_64-libtiff mingw-w64-x86_64-libxml2 mingw-w64-x86_64-xpm-nox" # tmp file to store the dependencies: if [ -f "./tmp-pkg-list" ] ; then rm ./tmp-pkg-list fi touch ./tmp-pkg-list # Get a list of all dependencies needed for packages mentioned above. # Run `pactree -lu' for each elment of $PKG_REQ for x in $PKG_REQ ; do pactree -lu $x >> tmp-pkg-list done # Sort und uniq the list cat tmp-pkg-list | sort -u -o tmp-pkg-list cat tmp-pkg-list | sed 's/x86_64-//' > final-pkg-list --8<---------------cut here---------------end--------------->8--- Then I found out that some package names differ from the name of original directory on Github, e.g. `mingw-w64-x86_64-gcc-libs' is built within the directory `mingw-w64-gcc'. Long story short, if you clone https://github.com/Alexpux/MINGW-packages.git and run --8<---------------cut here---------------start------------->8--- #! /usr/bin/bash PKGS="mingw-w64-bzip2 mingw-w64-cairo mingw-w64-expat mingw-w64-fontconfig mingw-w64-freetype mingw-w64-gdk-pixbuf2 mingw-w64-gcc mingw-w64-gettext mingw-w64-giflib mingw-w64-glib2 mingw-w64-gmp mingw-w64-gnutls mingw-w64-graphite2 mingw-w64-harfbuzz mingw-w64-jasper mingw-w64-libcroco mingw-w64-libffi mingw-w64-libiconv mingw-w64-libidn mingw-w64-libjpeg-turbo mingw-w64-libpng mingw-w64-librsvg mingw-w64-libsystre mingw-w64-libtasn1 mingw-w64-libtiff mingw-w64-libtre-git mingw-w64-libxml2 mingw-w64-lzo2 mingw-w64-nettle mingw-w64-p11-kit mingw-w64-pango mingw-w64-pcre mingw-w64-pixman mingw-w64-wineditline mingw-w64-winpthreads-git mingw-w64-xpm-nox mingw-w64-xz mingw-w64-zlib" for pkg in $PKGS do pushd ./MINGW-packages/$pkg makepkg-mingw --allsource --skipinteg -sLf && \ mv $pkg-*.tar.gz ../../ popd done --8<---------------cut here---------------end--------------->8--- you have all the sources and patches (239M total) ready. >> This is actually what my script does. Collecting all directories for >> the packages above gives: >> >> -> du -h emacs-25.1-rc1-libs.tar.xz >> 464K emacs-25.1-rc1-libs.tar.xz >> >> Does this approach comply with GPL? > > I don't know enough about msys2 to understand the difference in your > approaches, but AFAICT, -libs.tar.xv contains all the source, so that > you could build the libraries, then it does, yes. No, "all the sources" are in the 239M package. You could build the libraries with those files. My second thought was only to provide the relevant Msys2/MinGW directives (PKGBUILD files) and patch files, all in one archive which I called `emacs-25.1-rc1-libs.tar.xz'. As an example, I am attaching such a file for `expat'. --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=mingw-w64-expat.tar.xz Content-Transfer-Encoding: base64 /Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4Cf/BDBdADaaSh837p13EIAIDxwqzOHBj9983u01ECns URJ2eTAwT/SeLJtHQ6lmp9V5tVpXvBos/Mmgg7VThHrWVZ+9KVKzDZSgqoN4cZjwcmNEGYhxYD7P ln1uGroS5j0egPF8UdL1dE+2RrMKzF/941rj9OJEtxniJp4enj9uxbebA5UerZ2EC6x1s7uZiQjy EGnd0Om3oD23Tss+q6f8dJqoKBL//OdL/ZEWIf7ZAIWZlkiTFfjxDCJKO7h1HKgHij7bBk5psvyc A5RF4XXRX+ycN1QQDADPj8Vn8vWFmna4mRtpeOYXfhlOQLpXcaipqir8gMDm/RJ+Ul5V8LhpKrlo y8U37SP4G8b4hMquUH6fy92Q8sRqo5zH+ATo03nrsOaxKzReTEXOxzifYjmlcRefClSym8Cmh4h0 O4zwDXUR4aMLDucrpEQEDU6//wK2FVQiRmlNYAG450wLEzvkXEf5ehd5OzvYbfbrVYsdP2nU6YVp EuH8SioMogdFt4MQr0OqdRCBKa+JEQV8HOswcBJjunFSrM0gnfwJ+RwAqgqwvVtN+NDVR+iWuIgt /5FPp6P9+zqwe7RJ8Ol1J4yOBT5mnqkjr6Cg6CQ14tDWeHekWb99tg3bRIELySYCGk3yRwcm7AAe 0otTq+1eRL2CwJMkCsQCphXPww+49pNOfyaLA6BmFjnu4DReWYQgfUr0pZkRY0fdZmR7pykbUWPp YBVBpRhib3QU4K02xHmJGO1x60UUIByKA9EIQvmAb1Ltdm5jvhlX32Ovwh6gKPKlv9ZiPxvQEifa FGWrxtX6KAiJRCkGqsBI+dCTVjcthX6WdIlrvECopT+KbG26ccMEiOxT0NByrpCcn892sdVIqYF0 7JxveIlnZdRDsALEKwsk15scvp9aMgBBZ63HkRKpR4hzZ0MQyPVqGsifMnIZntg822DqGqJ1uzX4 CkU8D3E8tpmznut/sxAx/KXwGltQWoPk9qaAdegXZ019qqJyRfjPFOgN+IgdV0vAfwJ3s/63hDsy 48PTx+dPJUJfwuMq4nBEbw7asD8J5H85BLV3NF9C9x/iMtaTcDbHLZ6Zl/X2hsjE8ligqPsSbeTw eqNB0hiA1z20JDZ8RjSGRPcbtfuEZpGS8+nfEWToPUE1Sz4IEN+MVn8rUDBN+kq6lH7u6KgkGWu4 sYhCTYOu9caFpr0pzvMbFnk4HE4cln1uZEeW+MTiJfmRmgQXU2HQBgI2IYdORMu85g3jiwQ9VhzL aShW4yIqnUHfjgznwkFT85Q3bUDYXpOUcJqin6YZyX0Owb7ak5pEynkOfhQ9hbJ5tPPG1YQybAFS oZ8gYIqm7YP9I9cuFuQHHyU242Y7SF46ftHr+8fkU4TUiNt5sC9ONYQ8AIMg98vrZ9ix9letrcK4 tKT8pvEcoMfrZzd8LCJL07QndAAA6soS+n8I+WcAAcwIgFAAAFjZ6hSxxGf7AgAAAAAEWVo= --=-=-= Content-Type: text/plain > At the moment, Emacs ships with a single binary (libnox4) otherwise it > looks terrible. But, I think that the basic windows download cannot do > an HTTP call and display the results is unfortunate. > > Current builds are for 32 bit as well as 64 bit. Can that be replicated > also? The way I get it both arch's are built from the same directives (PKGBUILD files). Have a look at this page, section `Building packages': https://sourceforge.net/p/msys2/wiki/Contributing%20to%20MSYS2/ Best, Arash --=-=-=--