From 510ed32cfbffa6148018869f5ade416505a450b3 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 22:21:21 +0200 Subject: Adding upstream version 2.9.0rel.0. Signed-off-by: Daniel Baumann --- PACKAGE/debian/changelog | 71 ++++ PACKAGE/debian/compat | 1 + PACKAGE/debian/control | 21 ++ PACKAGE/debian/copyright | 103 +++++ PACKAGE/debian/doc-base | 10 + PACKAGE/debian/lynx-dev.lintian-overrides | 15 + PACKAGE/debian/menu | 2 + PACKAGE/debian/mime | 2 + PACKAGE/debian/postinst | 27 ++ PACKAGE/debian/prerm | 12 + PACKAGE/debian/rules | 195 ++++++++++ PACKAGE/debian/source/format | 1 + PACKAGE/debian/watch | 4 + PACKAGE/lynx-curses.iss | 12 + PACKAGE/lynx-curssl.iss | 14 + PACKAGE/lynx-default.iss | 11 + PACKAGE/lynx-newssl.iss | 14 + PACKAGE/lynx-oldssl.iss | 14 + PACKAGE/lynx-slang.iss | 13 + PACKAGE/lynx.iss | 604 ++++++++++++++++++++++++++++++ PACKAGE/lynx.nsi | 241 ++++++++++++ PACKAGE/lynx.spec | 137 +++++++ PACKAGE/version.iss | 9 + 23 files changed, 1533 insertions(+) create mode 100644 PACKAGE/debian/changelog create mode 100644 PACKAGE/debian/compat create mode 100644 PACKAGE/debian/control create mode 100644 PACKAGE/debian/copyright create mode 100644 PACKAGE/debian/doc-base create mode 100644 PACKAGE/debian/lynx-dev.lintian-overrides create mode 100644 PACKAGE/debian/menu create mode 100644 PACKAGE/debian/mime create mode 100644 PACKAGE/debian/postinst create mode 100644 PACKAGE/debian/prerm create mode 100755 PACKAGE/debian/rules create mode 100644 PACKAGE/debian/source/format create mode 100644 PACKAGE/debian/watch create mode 100644 PACKAGE/lynx-curses.iss create mode 100644 PACKAGE/lynx-curssl.iss create mode 100644 PACKAGE/lynx-default.iss create mode 100644 PACKAGE/lynx-newssl.iss create mode 100644 PACKAGE/lynx-oldssl.iss create mode 100644 PACKAGE/lynx-slang.iss create mode 100644 PACKAGE/lynx.iss create mode 100644 PACKAGE/lynx.nsi create mode 100644 PACKAGE/lynx.spec create mode 100644 PACKAGE/version.iss (limited to 'PACKAGE') diff --git a/PACKAGE/debian/changelog b/PACKAGE/debian/changelog new file mode 100644 index 0000000..048e3cf --- /dev/null +++ b/PACKAGE/debian/changelog @@ -0,0 +1,71 @@ +lynx-dev (2.9.0) unstable; urgency=high + + * new release + + -- Thomas E. Dickey Sun, 14 Jan 2024 17:15:53 -0500 + +lynx-dev (2.8.8dev.16) unstable; urgency=high + + * changes for dev.16 + + -- Thomas E. Dickey Tue, 30 Apr 2013 04:32:34 -0400 + +lynx-dev (2.8.8dev.15) unstable; urgency=high + + * changes for dev.15 + + -- Thomas E. Dickey Thu, 08 Nov 2012 17:39:36 -0500 + +lynx-dev (2.8.8dev.14) unstable; urgency=high + + * fix regression in dev.13 + + -- Thomas E. Dickey Wed, 22 Aug 2012 06:22:28 -0400 + +lynx-dev (2.8.8dev.13) unstable; urgency=low + + * changes for dev.13 + + -- Thomas E. Dickey Sat, 07 Jul 2012 10:55:34 -0400 + +lynx-dev (2.8.8dev.12) unstable; urgency=low + + * changes for dev.12 + + -- Thomas E. Dickey Wed, 22 Feb 2012 20:23:20 -0500 + +lynx-dev (2.8.8dev.11) unstable; urgency=low + + * changes for dev.11 + + -- Thomas E. Dickey Wed, 15 Feb 2012 18:43:49 -0500 + +lynx-dev (2.8.8dev.10) unstable; urgency=low + + * changes for dev.10 + + -- Thomas E. Dickey Thu, 06 Oct 2011 18:19:01 -0400 + +lynx-dev (2.8.8dev.9) unstable; urgency=low + + * changes for dev.9 + + -- Thomas E. Dickey Wed, 27 Apr 2011 19:38:05 -0400 + +lynx-dev (2.8.8dev.8) unstable; urgency=low + + * changes for dev.8 + + -- Thomas E. Dickey Sun, 19 Dec 2010 18:49:04 -0500 + +lynx-dev (2.8.8dev.7) unstable; urgency=low + + * changes for dev.7 + + -- Thomas E. Dickey Mon, 01 Nov 2010 17:32:06 -0400 + +lynx-dev (2.8.8dev.6) unstable; urgency=low + + * add build-script for testing, adapted from Debian lynx-cur package. + + -- Thomas E. Dickey Sat, 18 Sep 2010 07:14:46 -0400 diff --git a/PACKAGE/debian/compat b/PACKAGE/debian/compat new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/PACKAGE/debian/compat @@ -0,0 +1 @@ +10 diff --git a/PACKAGE/debian/control b/PACKAGE/debian/control new file mode 100644 index 0000000..1875ece --- /dev/null +++ b/PACKAGE/debian/control @@ -0,0 +1,21 @@ +Source: lynx-dev +Section: web +Priority: optional +Maintainer: Thomas E. Dickey +Homepage: https://invisible-island.net/lynx/ +Build-Depends: debhelper (>= 7), dpatch, po-debconf, libncursesw5-dev, zlib1g-dev, gettext, libgnutls-dev, sharutils, telnet, openssh-client, libbsd-dev, libidn11-dev +Standards-Version: 3.8.2 + +Package: lynx-dev +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Provides: www-browser, news-reader +Recommends: mime-support +Description: Text-mode WWW Browser with NLS support (development version) + Lynx is a fully-featured World Wide Web (WWW) client for users running + cursor-addressable, character-cell display devices. It is very fast and easy + to use. It will display HTML documents containing links to files residing on + the local system, as well as files residing on remote systems running Gopher, + HTTP, FTP, WAIS, and NNTP servers. + . + This package contains a development version of lynx. diff --git a/PACKAGE/debian/copyright b/PACKAGE/debian/copyright new file mode 100644 index 0000000..0a4f461 --- /dev/null +++ b/PACKAGE/debian/copyright @@ -0,0 +1,103 @@ +Upstream source https://lynx.invisible-island.net/current/ + +Current maintainer: Thomas Dickey + +------------------------------------------------------------------------------- + +Copyright 1997-2023,2024 Thomas E. Dickey +Copyright (C) 1995 University of Kansas. + +Most of the content of the lynx release (and corresponding copyright) is +the work of developers on the lynx-dev mailing list, who have agreed to +distribute their work under the terms and conditions of the GNU General +Public License (Version 2). Note that the License text after the terms +and conditions is advisory in nature, and contains neither terms nor +conditions. You may choose to follow that advice. + +Any licensing questions should be directed to the mailing list: + + lynx-dev@nongnu.org + +or to the maintainer (Thomas E. Dickey): + + dickey@invisible-island.net + +------------------------------------------------------------------------------- + +Files: aclocal.m4 +License: other-BSD +Copyright: 1997-2023,2024 by Thomas E. Dickey + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of the above listed + copyright holder(s) not be used in advertising or publicity pertaining + to distribution of the software without specific, written prior + permission. + + THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD + TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE + LIABLE FOR 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. + +Files: install-sh +Copyright: 1994 X Consortium +License: other-BSD + 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 + X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- + TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of the X Consortium shall not + be used in advertising or otherwise to promote the sale, use or other deal- + ings in this Software without prior written authorization from the X Consor- + tium. + + FSF changes to this file are in the public domain. + + Calling this script install-sh is preferred over install.sh, to prevent + `make' implicit rules from creating a file called install from it + when there is no Makefile. + + This script is compatible with the BSD install script, but was written + from scratch. It can only install one file at a time, a restriction + shared with many OS's install programs. + +Files: debian/* +Copyright: 2010-2019,2020 Thomas E. Dickey +License: other-BSD + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of the above listed + copyright holder(s) not be used in advertising or publicity pertaining + to distribution of the software without specific, written prior + permission. + + THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD + TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE + LIABLE FOR 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. + +On Debian systems, the complete text of the GNU General +Public License can be found in '/usr/share/common-licenses/GPL-2' diff --git a/PACKAGE/debian/doc-base b/PACKAGE/debian/doc-base new file mode 100644 index 0000000..ef651b7 --- /dev/null +++ b/PACKAGE/debian/doc-base @@ -0,0 +1,10 @@ +Document: lynx-dev +Title: Debian Lynx Manual +Author: Michael Grobe et al. +Abstract: This manual describes what lynx-dev is + and how it can be used on Debian systems. +Section: Network/Web Browsing + +Format: HTML +Index: /usr/share/doc/lynx-dev/help_dir/lynx_help_main.html.gz +Files: /usr/share/doc/lynx-dev/help_dir/*.html.gz diff --git a/PACKAGE/debian/lynx-dev.lintian-overrides b/PACKAGE/debian/lynx-dev.lintian-overrides new file mode 100644 index 0000000..9b0aa40 --- /dev/null +++ b/PACKAGE/debian/lynx-dev.lintian-overrides @@ -0,0 +1,15 @@ +# This is intentional because it is referenced from the documentation. +lynx-dev: extra-license-file usr/share/doc/lynx-dev/COPYING + +lynx-dev: national-encoding usr/share/doc/lynx-dev/test/ALT88592.html +lynx-dev: national-encoding usr/share/doc/lynx-dev/test/iso-8859-1.html +lynx-dev: national-encoding usr/share/doc/lynx-dev/test/iso-8859-2.html + +# These are a known problem with lintian: +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891301 +lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/ALT88592.html [] (http://mail.gnu.org/mailman/listinfo/lynx-dev/) +lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/bad-html.html [] (http://mail.gnu.org/mailman/listinfo/lynx-dev/) +lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/cp-1252.html [] (http://mail.gnu.org/mailman/listinfo/lynx-dev/) +lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/cp-1252a.html [] (http://mail.gnu.org/mailman/listinfo/lynx-dev/) +lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/iso-8859-2.html [] (http://mail.gnu.org/mailman/listinfo/lynx-dev/) +lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/iso-8859-2a.html [] (http://mail.gnu.org/mailman/listinfo/lynx-dev/) diff --git a/PACKAGE/debian/menu b/PACKAGE/debian/menu new file mode 100644 index 0000000..6421345 --- /dev/null +++ b/PACKAGE/debian/menu @@ -0,0 +1,2 @@ +?package(lynx-dev):needs="text" section="Applications/Network/Web Browsing"\ + title="Lynx-dev" command="lynx-dev" diff --git a/PACKAGE/debian/mime b/PACKAGE/debian/mime new file mode 100644 index 0000000..4777956 --- /dev/null +++ b/PACKAGE/debian/mime @@ -0,0 +1,2 @@ +text/html; /usr/bin/lynx -force_html %s; needsterminal; description=HTML Text; nametemplate=%s.html; priority=3 +text/html; /usr/bin/lynx -dump -force_html %s; copiousoutput; description=HTML Text; nametemplate=%s.html; priority=2 diff --git a/PACKAGE/debian/postinst b/PACKAGE/debian/postinst new file mode 100644 index 0000000..89955d4 --- /dev/null +++ b/PACKAGE/debian/postinst @@ -0,0 +1,27 @@ +#! /bin/sh +# postinst script for lynx + +set -e + +PRI=50 +ALT=lynx +PKG=lynx-dev + +BINDIR=/usr/bin +MANDIR=/usr/share/man/man1 + +if [ $1 != "upgrade" ] +then + + update-alternatives \ + --install \ + $BINDIR/$ALT $ALT \ + $BINDIR/$PKG $PRI \ + --slave $MANDIR/$ALT.1.gz $ALT.1.gz \ + $MANDIR/$PKG.1.gz + +fi + +#DEBHELPER# + +exit 0 diff --git a/PACKAGE/debian/prerm b/PACKAGE/debian/prerm new file mode 100644 index 0000000..a79bf38 --- /dev/null +++ b/PACKAGE/debian/prerm @@ -0,0 +1,12 @@ +#! /bin/sh +# prerm script for lynx + +set -e + +if [ $1 != "upgrade" ]; then + update-alternatives --remove lynx /usr/bin/lynx-dev +fi + +#DEBHELPER# + +exit 0 diff --git a/PACKAGE/debian/rules b/PACKAGE/debian/rules new file mode 100755 index 0000000..908ed5e --- /dev/null +++ b/PACKAGE/debian/rules @@ -0,0 +1,195 @@ +#!/usr/bin/make -f +# $LynxId: rules,v 1.19 2024/01/15 01:16:07 tom Exp $ + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +PKG_SUFFIX = -dev + +PACKAGE := $(shell dpkg-parsechangelog| \ + sed -n 's/^Source: \(.*\)$$/\1/p') + +docdir := /usr/share/doc/$(PACKAGE) +helpdir := $(docdir)/help_dir + +DSTDIR := $(CURDIR)/debian/$(PACKAGE) +DOCDIR := $(DSTDIR)$(docdir) + +CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS) +CFLAGS := $(shell dpkg-buildflags --get CFLAGS) +LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) + +ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) +DEBOP=--enable-debug +else +DEBOP= +endif + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +# This package adds the following not in Debian lynx-cur: +# --enable-htmlized-cfg +# --enable-local-docs +# --with-cfg-path + +configure: configure-stamp +configure-stamp: + dh_testdir + + CPPFLAGS="$(CPPFLAGS)" \ + CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" \ + env cf_cv_SYSTEM_MAIL=/usr/sbin/sendmail \ + COMPRESS=/usr/bin/compress \ + BZIP2=/bin/bzip2 \ + UNZIP=/usr/bin/unzip \ + ZIP=/usr/bin/zip \ + LIBS="-lbsd" \ + ./configure \ + --host=$(DEB_HOST_GNU_TYPE) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --program-suffix=$(PKG_SUFFIX) \ + --prefix=/usr \ + --libexecdir=\$${prefix}/lib \ + --mandir=\$${prefix}/share/man \ + --sysconfdir=/etc/$(PACKAGE) \ + --with-cfg-path=/etc/$(PACKAGE):$(docdir)/samples \ + --localstatedir=/var \ + --disable-rpath-hack \ + --libdir=/etc/$(PACKAGE) \ + --enable-8bit-toupper \ + --enable-cgi-links \ + --enable-change-exec \ + --enable-charset-choice \ + --enable-cjk \ + --enable-default-colors \ + --enable-exec-links \ + --enable-exec-scripts \ + --enable-externs \ + --enable-font-switch \ + --enable-forms-options \ + --enable-gzip-help \ + --enable-htmlized-cfg \ + --enable-internal-links \ + --enable-ipv6 \ + --enable-chinese-utf8 \ + --enable-japanese-utf8 \ + --enable-justify-elts \ + --enable-kbd-layout \ + --enable-local-docs \ + --enable-nested-tables \ + --enable-nls \ + --enable-nsl-fork \ + --enable-partial \ + --enable-persistent-cookies \ + --enable-prettysrc \ + --enable-read-eta \ + --enable-scrollbar \ + --enable-source-cache \ + --enable-syslog \ + --enable-warnings \ + --with-gnutls=/usr \ + --with-screen=ncursesw6dev \ + --with-textdomain=$(PACKAGE) \ + --without-included-gettext \ + ${DEBOP} + + $(MAKE) preinstall \ + docdir=$(docdir) \ + helpdir=$(helpdir) + + touch configure-stamp + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + $(MAKE) \ + docdir=$(docdir) \ + helpdir=$(helpdir) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + + [ ! -f Makefile ] || $(MAKE) clean + + rm -f configure-stamp build-stamp install-stamp \ + config.cache config.h config.status config.log makefile + + rm -f *.o lynx + + dh_clean + +install: install-stamp +install-stamp: build-stamp + dh_testdir + dh_testroot + dh_prep + dh_installdirs + + $(MAKE) install \ + DESTDIR=$(CURDIR)/debian/$(PACKAGE) \ + docdir=$(docdir) \ + helpdir=$(helpdir) + + touch install-stamp + +install: install-indep install-arch +install-indep: + +install-arch: + dh_testdir + dh_testroot + dh_prep -s + dh_installdirs -s + + $(MAKE) install-full \ + DESTDIR=$(DSTDIR) \ + docdir=$(docdir) \ + helpdir=$(helpdir) + + cd $(DOCDIR) && rm -f COPY*.asc CHANGES + +# Build architecture-independent files here. +binary-indep: build install +# No binary-indep target. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_lintian + dh_installdebconf + dh_installdocs + dh_installmenu + dh_installmime + dh_installexamples + dh_installchangelogs CHANGES + dh_install + dh_link + dh_strip + dh_compress -XCOPY -X.lss + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install install-stamp diff --git a/PACKAGE/debian/source/format b/PACKAGE/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/PACKAGE/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/PACKAGE/debian/watch b/PACKAGE/debian/watch new file mode 100644 index 0000000..f833931 --- /dev/null +++ b/PACKAGE/debian/watch @@ -0,0 +1,4 @@ +version=3 + +opts=passive https://invisible-island.net/lynx/archives/lynx-cur\.tgz \ + debian uupdate diff --git a/PACKAGE/lynx-curses.iss b/PACKAGE/lynx-curses.iss new file mode 100644 index 0000000..7710893 --- /dev/null +++ b/PACKAGE/lynx-curses.iss @@ -0,0 +1,12 @@ +; $LynxId: lynx-curses.iss,v 1.6 2018/03/14 08:34:56 tom Exp $ +; +; This is an installer for the "color-style" flavor of Lynx. +; +; The script assumes environment variables have been set, e.g., to point to +; data which is used by the installer (see "lynx.lss" for details). + +#define NoScreenDll +#define SetupBaseName "lynx-cs" +#define SourceExeName "lynx-cs.exe" + +#include "lynx.iss" diff --git a/PACKAGE/lynx-curssl.iss b/PACKAGE/lynx-curssl.iss new file mode 100644 index 0000000..3182257 --- /dev/null +++ b/PACKAGE/lynx-curssl.iss @@ -0,0 +1,14 @@ +; $LynxId: lynx-curssl.iss,v 1.1 2022/12/29 00:38:46 tom Exp $ +; +; This is an installer for Lynx built with "current" OpenSSL (3.0.x). +; +; The script assumes environment variables have been set, e.g., to point to +; data which is used by the installer (see "lynx.lss" for details). + +#define NoScreenDll +#define SslGlob1 "'libssl-3*.dll'" +#define SslGlob2 "'libcrypto-3*.dll'" +#define SetupBaseName "lynx-curssl" +#define SourceExeName "lynx-curssl.exe" + +#include "lynx.iss" diff --git a/PACKAGE/lynx-default.iss b/PACKAGE/lynx-default.iss new file mode 100644 index 0000000..f39b9b5 --- /dev/null +++ b/PACKAGE/lynx-default.iss @@ -0,0 +1,11 @@ +; $LynxId: lynx-default.iss,v 1.1 2018/03/13 09:10:08 tom Exp $ +; +; This is an installer for the "default" flavor of Lynx. +; +; The script assumes environment variables have been set, e.g., to point to +; data which is used by the installer (see "lynx.lss" for details). + +#define NoScreenDll +#define SourceExeName "lynx-default.exe" + +#include "lynx.iss" diff --git a/PACKAGE/lynx-newssl.iss b/PACKAGE/lynx-newssl.iss new file mode 100644 index 0000000..fb57286 --- /dev/null +++ b/PACKAGE/lynx-newssl.iss @@ -0,0 +1,14 @@ +; $LynxId: lynx-newssl.iss,v 1.7 2024/01/15 21:35:29 tom Exp $ +; +; This is an installer for Lynx built with "new" OpenSSL (1.1.x). +; +; The script assumes environment variables have been set, e.g., to point to +; data which is used by the installer (see "lynx.lss" for details). + +#define NoScreenDll +#define SslGlob1 "'libssl-3*.dll'" +#define SslGlob2 "'libcrypto-3*.dll'" +#define SetupBaseName "lynx-newssl" +#define SourceExeName "lynx-newssl.exe" + +#include "lynx.iss" diff --git a/PACKAGE/lynx-oldssl.iss b/PACKAGE/lynx-oldssl.iss new file mode 100644 index 0000000..92575d2 --- /dev/null +++ b/PACKAGE/lynx-oldssl.iss @@ -0,0 +1,14 @@ +; $LynxId: lynx-oldssl.iss,v 1.6 2024/01/15 21:35:19 tom Exp $ +; +; This is an installer for Lynx built with "old" OpenSSL (before 1.1.x). +; +; The script assumes environment variables have been set, e.g., to point to +; data which is used by the installer (see "lynx.lss" for details). + +#define NoScreenDll +#define SslGlob1 "'libssl-1*.dll'" +#define SslGlob2 "'libcrypto-1*.dll'" +#define SetupBaseName "lynx-oldssl" +#define SourceExeName "lynx-oldssl.exe" + +#include "lynx.iss" diff --git a/PACKAGE/lynx-slang.iss b/PACKAGE/lynx-slang.iss new file mode 100644 index 0000000..e5a8185 --- /dev/null +++ b/PACKAGE/lynx-slang.iss @@ -0,0 +1,13 @@ +; $LynxId: lynx-slang.iss,v 1.3 2018/03/14 08:34:56 tom Exp $ +; +; This is an installer for the "color-style" flavor of Lynx. +; +; The script assumes environment variables have been set, e.g., to point to +; data which is used by the installer (see "lynx.lss" for details). + +#define NoScreenDll +#define SetupBaseName "lynx-sl" +#define SourceExeName "lynx-slang.exe" +#define ScreenDllName "wslang32.dll" + +#include "lynx.iss" diff --git a/PACKAGE/lynx.iss b/PACKAGE/lynx.iss new file mode 100644 index 0000000..2353067 --- /dev/null +++ b/PACKAGE/lynx.iss @@ -0,0 +1,604 @@ +; $LynxId: lynx.iss,v 1.41 2024/01/15 23:28:41 tom Exp $ +; vile:ts=4 sw=4 notabinsert fk=8bit +; +; This is the BASE script for different flavors of the installer for Lynx. +; It can be overridden to select different source-executables (and their associated +; screen library, e.g., pdcurses or slang). +; +; The script assumes environment variables have been set, e.g., to point to +; data which is used by the installer: +; +; LYNX_BINDIR - directory containing lynx.exe (or different names) +; LYNX_DLLSDIR - directory containing curses or slang dlls. +; LYNX_DOCSDIR - files and subdirectories installed from Unix with "make install-doc" +; LYNX_HELPDIR - files and subdirectories installed from Unix with "make install-help" + +#include "version.iss" + +#ifndef MyAppExeName +#define MyAppExeName "lynx.exe" +#endif + +#if Ver < 0x5060100 +#define MySendTo '{sendto}\' + myAppName + '.lnk' +#else +#define MySendTo '{usersendto}\' + myAppName + '.lnk' +#endif +#define MyQuickLaunch '{userappdata}\Microsoft\Internet Explorer\Quick Launch\' + myAppName + '.lnk' + +#ifndef SourceExeName +#define SourceExeName "lynx-default.exe" +#endif + +#ifndef NoScreenDll +#ifndef ScreenDllName +#define ScreenDllName "pdcurses.dll" +#endif +#endif + +#ifndef BzipDllName +#define BzipDllName "libbz2.dll" +#endif + +#ifndef ZlibDllName +#define ZlibDllName "zlib1.dll" +#endif + +#ifndef BzipExeName +#define BzipExeName "bzip2.exe" +#endif + +#ifndef GzipExeName +#define GzipExeName "gzip.exe" +#endif + +#ifndef SetupBaseName +#define SetupBaseName "lynx" +#endif + +#ifndef BinsSrcDir +#define BinsSrcDir GetEnv("LYNX_BINDIR") +#if BinsSrcDir == "" +#define BinsSrcDir "..\bin" +#endif +#endif + +#ifndef DllsSrcDir +#define DllsSrcDir GetEnv("LYNX_DLLSDIR") +#if DllsSrcDir == "" +#define DllsSrcDir "..\bin" +#endif +#endif + +#ifndef DocsSrcDir +#define DocsSrcDir GetEnv("LYNX_DOCSDIR") +#if DocsSrcDir == "" +#define DocsSrcDir "..\docs" +#endif +#endif + +#ifndef HelpSrcDir +#define HelpSrcDir GetEnv("LYNX_HELPDIR") +#if HelpSrcDir == "" +#define HelpSrcDir "..\lynx_help" +#endif +#endif + +[Setup] +AppName={#MyAppName} +#emit 'AppVersion=' + LYNX_VERSION +#emit 'VersionInfoDescription=Setup for "' + MyAppName + '"' +#emit 'VersionInfoVersion=' + LYNX_VERSION +AppVerName={#MyAppVerName} +AppPublisher={#MyAppPublisher} +AppCopyright=© 1997-2023,2024, Thomas E. Dickey +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +DefaultDirName={pf}\{#MyAppName} +DefaultGroupName={#MyAppName} +AllowNoIcons=yes +LicenseFile=..\COPYHEADER +InfoBeforeFile=..\README +OutputDir=..\PACKAGE\lynx-setup +#emit 'OutputBaseFilename=' + SetupBaseName + LYNX_VERSION + '-setup' +Compression=lzma +SolidCompression=yes +PrivilegesRequired=none +SetupLogging=no + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" + +[Components] +Name: main; Description: The Lynx executable; types: full custom compact +Name: explorer; Description: Windows Explorer integration; types: full custom + +[Tasks] +Name: for_all_users; Description: Install for all users on this machine; GroupDescription: Configuration Settings; Components: main; Check: isGuru; Flags: unchecked +Name: register_vars; Description: Use registry for environment variables; GroupDescription: Configuration Settings; Components: main; Flags: unchecked +Name: use_sendto; Description: Add Send To Entry; GroupDescription: Windows Explorer; Components: explorer; Flags: unchecked +Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Components: main; Flags: unchecked +Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Components: main; Flags: unchecked + + +[Dirs] +Name: "{app}\doc" +Name: "{app}\doc\samples" +Name: "{app}\doc\test" +Name: "{app}\help" +Name: "{app}\help\keystrokes" +Name: "{app}\icon" + +[Files] +#emit 'Source: "' + BinsSrcDir + '\' + SourceExeName + '"; DestDir: "{app}"; DestName: ' + MyAppExeName + '; AfterInstall: myPostExecutable; Flags: ignoreversion' +#ifndef NoScreenDll +#emit 'Source: "' + DllsSrcDir + '\' + ScreenDllName + '"; DestDir: "{app}"; DestName: ' + ScreenDllName + '; Flags: ignoreversion' +#endif +#emit 'Source: "' + DllsSrcDir + '\' + BzipExeName + '"; DestDir: "{app}"; DestName: ' + BzipExeName + '; Flags: ignoreversion' +#emit 'Source: "' + DllsSrcDir + '\' + GzipExeName + '"; DestDir: "{app}"; DestName: ' + GzipExeName + '; Flags: ignoreversion' +#emit 'Source: "' + DocsSrcDir + '\*.*"; DestDir: "{app}\doc"; Flags: ' +#emit 'Source: "' + DocsSrcDir + '\samples\*.*"; DestDir: "{app}\doc\samples"; Flags: ' +#emit 'Source: "' + DocsSrcDir + '\test\*.*"; DestDir: "{app}\doc\test"; Flags: ' +#emit 'Source: "' + HelpSrcDir + '\*.*"; DestDir: "{app}\help"; Flags: ' +#emit 'Source: "' + HelpSrcDir + '\keystrokes\*.*"; DestDir: "{app}\help\keystrokes"; Flags: ' + +; some of these data files are from an earlier installer by Claudio Santambrogio +Source: "..\lynx.cfg"; DestDir: "{app}" ; AfterInstall: myCustomCfg; Flags: ignoreversion +Source: "..\lynx.man"; DestDir: "{app}" +Source: "..\samples\*.lss"; DestDir: "{app}" +Source: "..\samples\home.htm"; DestDir: "{app}" +Source: "..\samples\jumps.htm"; DestDir: "{app}" +Source: "..\samples\lynx-demo.cfg"; DestDir: "{app}" +Source: "..\samples\lynx.bat"; DestDir: "{app}" +Source: "..\samples\lynx.ico"; DestDir: "{app}\icon" +Source: "..\samples\lynx_bookmarks.htm"; DestDir: "{app}" +Source: "..\samples\oldlynx.bat"; DestDir: "{app}" +; NOTE: Don't use "Flags: ignoreversion" on any shared system files + +[Icons] +Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" +Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" +Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon + +[Run] +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent + +[UninstallDelete] +Type: files; Name: {app}\.lynx_cookies +Type: dirifempty; Name: {app} +#emit 'Type: files; Name: ' + mySendTo +#emit 'Type: files; Name: ' + myQuickLaunch + +[Code] +#emit 'const MY_APP_NAME = ''{app}\' + myAppProg + '.exe'';' + + +function isGuru(): Boolean; +begin + Result := isAdminLoggedOn(); +end; + +function environRootKey(): Integer; +begin + Result := HKEY_CURRENT_USER; +end; + +function appKey(): string; +begin + Result := 'Software\Lynx'; +end; + +function envSubKey(): string; +begin + Result := 'Environment'; +end; + +function appSubKey(): string; +begin + Result := appKey() + '\' + envSubKey(); +end; + +function envSysKey(): string; +begin + Result := 'System\CurrentControlSet\Control\Session Manager\Environment'; +end; + +// Set the environment variable ValueName. +procedure addVarToEnv(const RootKey: Integer; const SubKeyName, ValueName, toAdd: String); +var + Updated : string; +begin + Updated := ExpandConstant(toAdd); + RegWriteStringValue(RootKey, SubKeyName, ValueName, Updated); + Log('Added ' + toAdd + ' to ' + ValueName); + // MsgBox('addVarToEnv: ' #13#13 + ValueName + '="' + Updated + '"', mbInformation, MB_OK) +end; + +// Remove the given environment variable ValueName. +function removeVarFromEnv(const RootKey: Integer; const SubKeyName, ValueName: String): Boolean; +var + Current : string; +begin + Result := False; + if RegQueryStringValue(RootKey, SubKeyName, ValueName, Current) then + begin + RegDeleteValue(RootKey, SubKeyName, ValueName); + Result := True; + Log('Removed ' + ValueName); + // MsgBox('removeVarFromEnv: ' #13#13 + ValueName + '="' + Current + '"', mbInformation, MB_OK) + end; +end; + +function selectedVarsRootKey(): Integer; +begin + if isTaskSelected('for_all_users') then + Result := HKEY_LOCAL_MACHINE + else + Result := HKEY_CURRENT_USER; +end; + +function selectedVarsSubKey(): String; +begin + if isTaskSelected('for_all_users') then + begin + if isTaskSelected('register_vars') then + Result := appSubKey() + else + Result := envSysKey(); + end else + begin + if isTaskSelected('register_vars') then + Result := appSubKey() + else + Result := envSubKey(); + end; +end; + +procedure addAnyVariable(const ValueName, newValue: String); +begin + addVarToEnv(selectedVarsRootKey(), selectedVarsSubKey(), ValueName, NewValue); +end; + +// FIXME: should only remove if it matches the installer's value +procedure removeAnyVariable(const ValueName: String); +begin + removeVarFromEnv(HKEY_CURRENT_USER, envSubKey(), ValueName); + removeVarFromEnv(HKEY_CURRENT_USER, appSubKey(), ValueName); + removeVarFromEnv(HKEY_LOCAL_MACHINE, appSubKey(), ValueName); + removeVarFromEnv(HKEY_LOCAL_MACHINE, envSysKey(), ValueName); +end; + +// http://www.delphidabbler.com/articles?article=12 +procedure AddSendTo(); +begin + CreateShellLink( +#emit 'ExpandConstant(''' + MySendTo + '''),' +#emit '''SendTo link for ' + myAppName + ''',' + ExpandConstant(MY_APP_NAME), // program + '', // option(s) will be followed by pathname + '', // no target directory + '', // no icon filename + -1, // no icon index + SW_SHOWNORMAL); +end; + +procedure AddQuickLaunch(); +begin + CreateShellLink( +#emit 'ExpandConstant(''' + MyQuickLaunch + '''),' +#emit '''SendTo link for ' + myAppName + ''',' + ExpandConstant(MY_APP_NAME), // program + '', // option(s) will be followed by pathname + '', // no target directory + '', // no icon filename + -1, // no icon index + SW_SHOWNORMAL); +end; + +// This is called after installing the executable. +procedure myPostExecutable(); +var + Keypath : String; + AppDir : String; +begin + Keypath := appKey(); + AppDir := ExpandConstant('{app}'); + Log('Setting registry key "' + Keypath + '" to "' + AppDir + '"'); + if not RegWriteStringValue(selectedVarsRootKey(), Keypath, '', AppDir) then + Log('Failed to set key'); + + if isTaskSelected('use_sendto') then + begin + AddSendTo(); + Log('** added Send-To link'); + end; + + if isTaskSelected('quicklaunchicon') then + begin + AddQuickLaunch(); + Log('** added Quick-launch link'); + end; +end; + +// This is called after installing the lynx.cfg file. +procedure myCustomCfg(); +var + AppDir : String; + CfgFile : String; +begin + AppDir := ExpandConstant('{app}'); + CfgFile := AppDir + '\lynx.cfg'; + + addAnyVariable('LYNX_CFG', CfgFile); + Log('** set LYNX_CFG=' + CfgFile); + + SaveStringToFile(CfgFile, 'HELPFILE:' + AppDir + '/help/Lynx_help_main.html.gz' + #10, True); + SaveStringToFile(CfgFile, 'COLOR_STYLE:' + AppDir + '/lynx.lss' + #10, True); + + SaveStringToFile(CfgFile, 'CHMOD_PATH:' + #10, True); + SaveStringToFile(CfgFile, 'COPY_PATH:' + #10, True); + SaveStringToFile(CfgFile, 'MKDIR_PATH:' + #10, True); + SaveStringToFile(CfgFile, 'MV_PATH:' + #10, True); + SaveStringToFile(CfgFile, 'RMDIR_PATH:' + #10, True); + SaveStringToFile(CfgFile, 'RM_PATH:' + #10, True); + SaveStringToFile(CfgFile, 'TOUCH_PATH:' + #10, True); + + Log('** customized ' + CfgFile); + + if isTaskSelected('use_sendto') then + begin + AddSendTo(); + Log('** added Send-To link'); + end; +end; + +function CleanupMyKey(const theRootKey: Integer): Boolean; +var + Path : String; + Value : String; +begin + Result := False; + if RegQueryStringValue(theRootKey, appKey(), '', Value) then + begin + if Value <> '' then + begin + Result := True; + Log('Deleting value of "' + appKey() + '" = "' + Value + '"'); + if not RegDeleteValue(theRootKey, appKey(), '') then + Log('Failed to delete value'); + + Path := appKey() + '\Environment'; + Log('Checking for subkey "' + Path + '"'); + if RegValueExists(theRootKey, Path, '') then + begin + if RegDeleteKeyIncludingSubkeys(theRootKey, Path) then + Log('Deleted key "' + Path + '"') + else + Log('Failed to delete key "' + Path + '"'); + end; + + if RegDeleteKeyIfEmpty(theRootKey, appKey()) then + Log('Deleted key "' + appKey() + '"') + else + Log('Failed to delete key "' + appKey() + '"'); + end + end +end; + +#ifdef SslGlob1 +#emit "const SslGlob1 = " + SslGlob1 + ";" +#emit "const SslGlob2 = " + SslGlob2 + ";" +var + SslDirPage : TInputFileWizardPage; + SslLibraryPath : String; + +function DirContains(const PathList: string; const PathItem: string): Boolean; +var + myList : string; + myItem : string; + myPart : string; + offset : integer; +begin + Result := False; + myList := Uppercase(PathList); + myItem := Uppercase(RemoveBackslashUnlessRoot(PathItem)); + offset := Pos(myItem, myList); + if offset <> 0 then + begin + myPart := Copy( myList, offset + Length(myItem), Length(myList) ); + if ( Length(myPart) = 0 ) or ( Pos(';', myPart) = 1 ) or ( Pos('\;', myPart) = 1 ) then + begin + Result := True; + end; + end; +end; + +function PathCat(const head, tail: string): string; +begin + Result := RemoveBackslashUnlessRoot(head) + '\' + tail; +end; + +procedure CopyFromTo(const source, target, name: string); +var + FailExists : Boolean; + Status: Boolean; +begin + Log('Copy from: ' + PathCat(source, name)); + Log('Copy to: ' + PathCat(target, name)); + FailExists := False; + Status := FileCopy(PathCat(source, name), PathCat(target, name), FailExists); + if not Status then + begin + MsgBox('Failed to copy ' + name, mbError, MB_OK); + Abort(); + end; +end; + +procedure ReallyDelete(const fullPath: string); +begin + if FileExists( fullpath ) then + begin + if DeleteFile( fullPath ) then + Log( '...successful' ) + else + begin + MsgBox('Failed to delete ' + fullPath, mbError, MB_OK); + end; + end; +end; + +procedure DeleteAppFile(const name: string); +var + AppDir : string; + fullPath : string; + findRec : TFindRec; +begin + AppDir := ExpandConstant('{app}'); + fullPath := PathCat( AppDir, name ); + Log( 'Deleting ' + fullPath ); + if Pos('*', fullPath) <> 0 then + begin + if FindFirst(fullPath, findRec) then + begin + ReallyDelete( PathCat( AppDir, findRec.name ) ); + while FindNext( findRec ) do + ReallyDelete( PathCat( AppDir, findRec.name ) ); + end + end + else + begin + ReallyDelete( fullPath ); + end; +end; + +function checkSslDir(): Boolean; +begin + Result := True; + SslLibraryPath := Trim( SslDirPage.Values[0] ); + if ( Length( SslLibraryPath ) = 0 ) or ( not FileExists( SslLibraryPath ) ) then + begin + MsgBox('No SSL library found', mbError, MB_OK) + Result := False; + end; +end; + +procedure copySslDlls(); +var + SslDirectory : String; + SslFilename : String; + TargetDir : String; +begin + Log('Copying SSL DLLs'); + SslDirectory := ExtractFilePath(SslLibraryPath); + + // If the directory is not already in the PATH, copy the DLLs to + // the application directory. + if DirContains( GetEnv('PATH'), SslDirectory) then + Log( 'PATH contains SSL directory' ) + else + begin + TargetDir := ExpandConstant('{app}'); + CreateDir(TargetDir); + if DirExists(TargetDir) then + begin + SslFilename := Lowercase( ExtractFileName( SslLibraryPath ) ); + CopyFromTo( SslDirectory, TargetDir, SslFilename ); + Log( 'comparing: ' + SslFilename + ' to ' + SslGlob1 ); + if CompareText( SslFilename, SslGlob1 ) = 0 then + // old-ssl is literal, new is a glob... + CopyFromTo( SslDirectory, TargetDir, SslGlob2 ) + else + // new-ssl matches "libssl-x-x-z", s/libssl/libcrypto/ + SslFilename := 'libcrypto' + Copy(SslFilename, 7, Length(SslFilename)); + CopyFromTo( SslDirectory, TargetDir, SslFilename ); +#ifdef RuntimeBundle + // older releases of OpenSSL bundled the Visual Studio runtime + SslFilename := SslDirectory + '\' + 'msvcr120.dll' ; + if FileExists(SslFilename) then + begin + CopyFromTo( SslDirectory, TargetDir, 'msvcr120.dll' ); + end +#endif + end + else + begin + MsgBox( 'Cannot create application directory', mbError, MB_OK ) + Abort(); + end + end; + Log('done - Copying SSL DLLs'); +end; + +procedure RegisterPreviousData(PreviousDataKey: Integer); +begin + SetPreviousData( PreviousDataKey, 'SSL PATH', SslLibraryPath ); +end; + +function NextButtonClick(CurPageId: integer): Boolean; +begin + Result := True; + if CurPageId = SslDirPage.Id then + begin + Result := checkSslDir(); + end; +end; + +procedure CurStepChanged(CurStep: TSetupStep); +begin + if CurStep = ssInstall then + begin + CopySslDlls(); + end; +end; + +procedure InitializeWizard(); +var + myGlob: string; +begin + // Create a page to locate the SSL library + SslDirPage := CreateInputFilePage(wpSelectDir, + 'Select SSL Library Location', + 'Where is the SSL library located?', + 'Select it from the directory, then click Next.'); + + myGlob := 'SSL dll|' + SslGlob1; + Log( 'search for SSL libraries ' + myGlob ); + SslDirPage.Add( 'Locate SSL library:', myGlob, '*.dll' ); + SslDirPage.Values[0] := GetPreviousData( 'SSL PATH', '' ); +end; +#endif + +// On uninstall, we do not know which registry setting was selected during install, so we remove all. +procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); +begin + case CurUninstallStep of + usUninstall: + begin + Log('CurUninstallStepChanged:' + 'Uninstall is about to start.') + // ...insert code to perform pre-uninstall tasks here... +#ifdef SslGlob1 + DeleteAppFile( SslGlob1 ); + DeleteAppFile( SslGlob2 ); + DeleteAppFile( 'msvcr120.dll' ); +#endif + end; + usPostUninstall: + begin + removeAnyVariable('LYNX_CFG'); + { + If we don't find the settings in the current user, try the local machine. + The setup program cannot pass the all-users flag to the uninstaller, so we + have to try both. + } + Log('Checking current-user registry key'); + if not CleanupMyKey(HKEY_CURRENT_USER) then + begin + Log('Checking local-machine registry key'); + CleanupMyKey(HKEY_LOCAL_MACHINE); + end; + + Log('CurUninstallStepChanged:' + 'Uninstall just finished.'); + end; + end; +end; diff --git a/PACKAGE/lynx.nsi b/PACKAGE/lynx.nsi new file mode 100644 index 0000000..7071db2 --- /dev/null +++ b/PACKAGE/lynx.nsi @@ -0,0 +1,241 @@ +; $LynxId: lynx.nsi,v 1.63 2024/01/07 11:13:00 tom Exp $ +; Script originally generated with the Venis Install Wizard, but customized. +; The Inno Setup script is preferred; but this can be built via cross-compiling. + +; Define the application name +!define APPNAME "Lynx" +!define EXENAME "lynx.exe" + +!define VERSION_EPOCH "2" +!define VERSION_MAJOR "9" +!define VERSION_MINOR "0" +!define VERSION_LEVEL "1013" +!define VERSION_PATCH "dev.13" + +!define SUBKEY "Lynx" + +!define INSTALL "Lynx - web browser" +!define VERSION "${VERSION_EPOCH}.${VERSION_MAJOR}.${VERSION_MINOR}${VERSION_PATCH}" + +; Main Install settings +Name "${INSTALL}" +InstallDir "$PROGRAMFILES\${INSTALL}" +InstallDirRegKey HKLM "Software\${SUBKEY}" "$INSTDIR\bin" +OutFile "NSIS-Output\${APPNAME}-${VERSION}-setup.exe" + +CRCCheck on +SetCompressor /SOLID lzma + +VIAddVersionKey ProductName "${SUBKEY}" +VIAddVersionKey CompanyName "https://invisible-island.net/lynx" +VIAddVersionKey LegalCopyright "© 1997-2023,2024, Thomas E. Dickey" +VIAddVersionKey FileDescription "Lynx Installer (MinGW)" +VIAddVersionKey FileVersion "${VERSION}" +VIAddVersionKey ProductVersion "${VERSION}" +VIAddVersionKey Comments "This installer was built with NSIS and cross-compiling to MinGW." +VIAddVersionKey InternalName "setup-${APPNAME}-${VERSION}.exe" +VIProductVersion "${VERSION_EPOCH}.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_LEVEL}" + +; adapted from http://nsis.sourceforge.net/Readme_Page_Based_on_MUI_License_Page +!macro MUI_EXTRAPAGE_README UN TheFile + !define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)" + !insertmacro MUI_${UN}PAGE_LICENSE "${TheFile}" +!macroend +!define ReadmeRun "!insertmacro MUI_EXTRAPAGE_README" +!macro MUI_PAGE_README TheFile + ${ReadmeRun} "" "${TheFile}" +!macroend + +; Modern interface settings +!include "MUI.nsh" + +!define MUI_ABORTWARNING +!define MUI_FINISHPAGE_RUN "$INSTDIR\${EXENAME}" + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE "..\COPYHEADER" +!insertmacro MUI_PAGE_README "..\README" +!insertmacro MUI_PAGE_COMPONENTS +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +; Set languages (first is default language) +!insertmacro MUI_LANGUAGE "English" +!insertmacro MUI_RESERVEFILE_LANGDLL + +!define LYNX_CFG "lynx.cfg" + +InstType "Full" ; SectionIn 1 +InstType "Typical" ; SectionIn 2 +InstType "Minimal" ; SectionIn 3 + +Section "${APPNAME}" Section1 + + SectionIn 1 2 3 + + ; Set Section properties + SetOverwrite on + + ; Set Section Files and Shortcuts + SetOutPath "$INSTDIR" + File /oname=${EXENAME} ".\bin\*${EXENAME}" + File ".\bin\bzip2.exe" + File ".\bin\gzip.exe" + File ".\bin\*.dll" + + ; TODO: bzip2.exe, gzip.exe, *.dll + + CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\${EXENAME}" + CreateShortCut "$SENDTO\${APPNAME}.lnk" "$INSTDIR\${EXENAME}" + CreateDirectory "$SMPROGRAMS\${INSTALL}" + CreateShortCut "$SMPROGRAMS\${INSTALL}\${INSTALL}.lnk" "$INSTDIR\${EXENAME}" + CreateShortCut "$SMPROGRAMS\${INSTALL}\${APPNAME} - Help.lnk" "$INSTDIR\help\lynx_help_main.html" + CreateShortCut "$SMPROGRAMS\${INSTALL}\Uninstall.lnk" "$INSTDIR\uninstall.exe" + + File ".\share\lynx_doc\samples\*.lss" + + ; preinstall lynx.cfg as a temporary file + File /oname=${LYNX_CFG} ".\etc\${LYNX_CFG}" + + ; at install-time, append our customization + FileOpen $0 "${LYNX_CFG}" a + FileSeek $0 0 END + FileWrite $0 "HELPFILE:$INSTDIR\help\Lynx_help_main.html.gz$\n" + FileWrite $0 "COLOR_STYLE:$INSTDIR\opaque.lss$\n" + FileWrite $0 "CHMOD_PATH:$\n" + FileWrite $0 "COPY_PATH:$\n" + FileWrite $0 "MKDIR_PATH:$\n" + FileWrite $0 "MV_PATH:$\n" + FileWrite $0 "RMDIR_PATH:$\n" + FileWrite $0 "RM_PATH:$\n" + FileWrite $0 "TOUCH_PATH:$\n" + FileClose $0 + + File "..\samples\lynx.bat" + File "..\samples\lynx-demo.cfg" + File "..\samples\oldlynx.bat" + + File "..\samples\jumps.htm" + File "..\samples\home.htm" + File "..\samples\lynx_bookmarks.htm" + + SetOutPath "$INSTDIR\icon" + File "..\samples\lynx.ico" + + SetOutPath "$INSTDIR\tmp" + +SectionEnd + +Section "documentation" Section2 + + SectionIn 1 2 + + ; Set Section properties + SetOverwrite on + + ; Set Section Files and Shortcuts + SetOutPath "$INSTDIR" + File "..\lynx.man" + + SetOutPath "$INSTDIR\doc" + File ".\share\lynx_doc\CHANGES*.*" + File ".\share\lynx_doc\COPY*.*" + File ".\share\lynx_doc\PROBLEM*.*" + File ".\share\lynx_doc\README*.*" + + SetOutPath "$INSTDIR\help" + File ".\share\lynx_help\*.*" + + SetOutPath "$INSTDIR\help\keystrokes" + File ".\share\lynx_help\keystrokes\*.*" + +SectionEnd + +Section "samples" Section3 + + SectionIn 1 + + ; Set Section properties + SetOverwrite on + + ; Set Section Files and Shortcuts + SetOutPath "$INSTDIR\doc\samples" + File ".\share\lynx_doc\samples\*.*" + + SetOutPath "$INSTDIR\doc\test" + File ".\share\lynx_doc\test\*.*" + +SectionEnd + +Section -FinishSection + + WriteRegStr HKLM "Software\${SUBKEY}" "" "$INSTDIR" + WriteRegStr HKLM "Software\${SUBKEY}" "Environment" "" + WriteRegStr HKLM "Software\${SUBKEY}\Environment" "LYNX_CFG" "$INSTDIR\${LYNX_CFG}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" "DisplayName" "${INSTALL} ${VERSION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" "UninstallString" "$INSTDIR\uninstall.exe" + WriteUninstaller "$INSTDIR\uninstall.exe" + +SectionEnd + +; Modern install component descriptions +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${Section1} "${SUBKEY}" + !insertmacro MUI_DESCRIPTION_TEXT ${Section2} "Documentation" + !insertmacro MUI_DESCRIPTION_TEXT ${Section3} "Samples and Test-files." +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +;Uninstall section +Section Uninstall + + ;Remove from registry... + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" + DeleteRegKey HKLM "SOFTWARE\${SUBKEY}" + + ; Delete self + Delete "$INSTDIR\uninstall.exe" + + ; Delete Shortcuts + Delete "$DESKTOP\${APPNAME}.lnk" + Delete "$SENDTO\${APPNAME}.lnk" + Delete "$SMPROGRAMS\${INSTALL}\${INSTALL}.lnk" + Delete "$SMPROGRAMS\${INSTALL}\${APPNAME} - Help.lnk" + Delete "$SMPROGRAMS\${INSTALL}\Uninstall.lnk" + + ; Clean up application + Delete "$INSTDIR\${EXENAME}" + Delete "$INSTDIR\doc\samples\*.*" + Delete "$INSTDIR\doc\test\*.*" + Delete "$INSTDIR\doc\*.*" + Delete "$INSTDIR\help\keystrokes\*.*" + Delete "$INSTDIR\help\*.*" + Delete "$INSTDIR\icon\*.*" + Delete "$INSTDIR\tmp\*.*" + Delete "$INSTDIR\bzip2.exe" + Delete "$INSTDIR\gzip.exe" + Delete "$INSTDIR\*.bat" + Delete "$INSTDIR\*.cfg" + Delete "$INSTDIR\*.dll" + Delete "$INSTDIR\*.htm" + Delete "$INSTDIR\*.man" + Delete "$INSTDIR\*.lss" + Delete "$INSTDIR\*.tmp" + + ; Remove remaining directories + RMDir "$SMPROGRAMS\${INSTALL}" + RMDir "$INSTDIR\doc\samples" + RMDir "$INSTDIR\doc\test" + RMDir "$INSTDIR\doc" + RMDir "$INSTDIR\help\keystrokes" + RMDir "$INSTDIR\help" + RMDir "$INSTDIR\icon" + RMDir "$INSTDIR\tmp" + RMDir "$INSTDIR\" + +SectionEnd + +; eof \ No newline at end of file diff --git a/PACKAGE/lynx.spec b/PACKAGE/lynx.spec new file mode 100644 index 0000000..a11a9a0 --- /dev/null +++ b/PACKAGE/lynx.spec @@ -0,0 +1,137 @@ +# $LynxId: lynx.spec,v 1.72 2024/01/15 11:47:26 tom Exp $ +Summary: A text-based Web browser +Name: lynx-dev +Version: 2.9.0 +Release: 1 +License: GPLv2 +Group: Applications/Internet +Source: lynx%{version}.tgz +URL: https://lynx.invisible-island.net +Provides: webclient >= 0.0 +Provides: text-www-browser >= 0.0 + +# Fedora: +BuildRequires: openssl-devel, pkgconfig, ncurses-devel >= 5.3-5, +BuildRequires: zlib-devel, gettext +BuildRequires: libidn-devel +# BuildRequires: bzip2-devel + +# SuSE: +# BuildRequires: libbz2-devel + +Requires: gzip, bzip2, tar, zip, unzip + +%description +Lynx is a fully-featured World Wide Web (WWW) client for users running +cursor-addressable, character-cell display devices. It is very fast and easy +to use. It will display HTML documents containing links to files residing on +the local system, as well as files residing on remote systems running Gopher, +HTTP, FTP, WAIS, and NNTP servers. + +%define lynx_doc %{_defaultdocdir}/%{name} +%define lynx_etc %{_sysconfdir}/%{name} + +%prep + +%define debug_package %{nil} +%setup -q -n lynx%{version} + +%build +%configure \ + --target %{_target_platform} \ + --prefix=%{_prefix} \ + --bindir=%{_bindir} \ + --program-suffix=-dev \ + --datadir=%{lynx_doc} \ + --libdir=%{lynx_etc} \ + --mandir=%{_mandir} \ + --sysconfdir=%{lynx_etc} \ + --with-cfg-path=%{lynx_etc}:%{lynx_doc}/samples \ + --with-textdomain=%{name} \ + --enable-8bit-toupper \ + --enable-cgi-links \ + --enable-change-exec \ + --enable-charset-choice \ + --enable-cjk \ + --enable-default-colors \ + --enable-exec-links \ + --enable-exec-scripts \ + --enable-externs \ + --enable-font-switch \ + --enable-forms-options \ + --enable-gzip-help \ + --enable-htmlized-cfg \ + --enable-internal-links \ + --enable-ipv6 \ + --enable-chinese-utf8 \ + --enable-japanese-utf8 \ + --enable-justify-elts \ + --enable-kbd-layout \ + --enable-local-docs \ + --enable-nested-tables \ + --enable-nls \ + --enable-nsl-fork \ + --enable-partial \ + --enable-persistent-cookies \ + --enable-prettysrc \ + --enable-read-eta \ + --enable-scrollbar \ + --enable-source-cache \ + --enable-syslog \ + --enable-warnings \ + --with-screen=ncursesw6dev \ + --with-ssl +make \ + docdir=%{lynx_doc} + +%install +rm -rf $RPM_BUILD_ROOT +chmod -x samples/mailto-form.pl + +make install-full \ + DESTDIR=$RPM_BUILD_ROOT \ + docdir=%{lynx_doc} + +cat >>$RPM_BUILD_ROOT%{lynx_etc}/lynx.cfg <