aboutsummaryrefslogtreecommitdiffstats
path: root/www
diff options
context:
space:
mode:
authoregypcio <egypcio@FreeBSD.org>2019-01-16 16:56:37 +0800
committeregypcio <egypcio@FreeBSD.org>2019-01-16 16:56:37 +0800
commit0c0fe1e0faf795feea1fda5c2f604231d36bec6a (patch)
tree28e247c8dd2fc46420e649361e012c8b2cbcb0a8 /www
parent352410bf97bce0883285db68947e9f21168b637e (diff)
downloadfreebsd-ports-gnome-0c0fe1e0faf795feea1fda5c2f604231d36bec6a.tar.gz
freebsd-ports-gnome-0c0fe1e0faf795feea1fda5c2f604231d36bec6a.tar.zst
freebsd-ports-gnome-0c0fe1e0faf795feea1fda5c2f604231d36bec6a.zip
[REVIVE PORT] www/wml: The WML, 2.0.12
Some websites are still using WML, https://torproject.org is one of them. svn copy made against head/www/wml r437070 Makefile - adopt the port; - silent portlint; - remove BROKEN (reflect change on port's category); - MASTER_SITES falls to FreeBSD's distcache (thanks to dbaio@); - stage-qa and check-plist are happy; - testport OK for amd64, armv6 and i386 (11, and 12). files/* - regen all patches using makepatch; - propset fbsd:nokeywords yes. pkg-descr - update WWW; - remove very last phrase, with unnecessary/insulting words. Approved by: araujo (mentor) Differential Revision: https://reviews.freebsd.org/D14320
Diffstat (limited to 'www')
-rw-r--r--www/Makefile1
-rw-r--r--www/wml/Makefile48
-rw-r--r--www/wml/distinfo3
-rw-r--r--www/wml/files/extra-wml__aux_freetable_freetable.src391
-rw-r--r--www/wml/files/patch-Makefile.in16
-rw-r--r--www/wml/files/patch-wml__backend_p2__mp4h_configure.ac11
-rw-r--r--www/wml/files/patch-wml__backend_p2__mp4h_doc_mp4h.mp4h10
-rw-r--r--www/wml/files/patch-wml__backend_p2__mp4h_src_builtin.c17
-rw-r--r--www/wml/files/patch-wml__backend_p6__asubst_asubst.src10
-rw-r--r--www/wml/files/patch-wml__common_gd_Makefile.PL.in10
-rw-r--r--www/wml/files/patch-wml__docs_wml_intro.pod11
-rw-r--r--www/wml/files/patch-wml__docs_wml_tutorial.pod11
-rw-r--r--www/wml/files/patch-wml__include_Makefile.in16
-rw-r--r--www/wml/files/patch-wml__include_des_typography.src10
-rw-r--r--www/wml/files/patch-wml__include_fmt_isolatin.src10
-rw-r--r--www/wml/files/patch-wml__misc_Makefile.in16
-rw-r--r--www/wml/files/patch-wml__test_t_11-wmk.t11
-rw-r--r--www/wml/files/patch-wml_backend-p3_eperl-eperl_perl5.h13
-rw-r--r--www/wml/pkg-descr13
-rw-r--r--www/wml/pkg-plist180
20 files changed, 808 insertions, 0 deletions
diff --git a/www/Makefile b/www/Makefile
index 32fcecdfad6c..f2293cc3f393 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -2543,6 +2543,7 @@
SUBDIR += xshttpd
SUBDIR += xshttpd-devel
SUBDIR += xsp
+ SUBDIR += wml
SUBDIR += yabb
SUBDIR += yanopaste
SUBDIR += yarn
diff --git a/www/wml/Makefile b/www/wml/Makefile
new file mode 100644
index 000000000000..80ee10a149d1
--- /dev/null
+++ b/www/wml/Makefile
@@ -0,0 +1,48 @@
+# $FreeBSD$
+
+PORTNAME= wml
+PORTVERSION= 2.0.12
+PORTREVISION= 7
+PORTEPOCH= 1
+CATEGORIES= www lang
+MASTER_SITES= MASTER_SITE_LOCAL
+
+MAINTAINER= egypcio@FreeBSD.org
+COMMENT= Website META Language, webdesign toolkit for HTML generation
+
+LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+BUILD_DEPENDS= ${RUN_DEPENDS} \
+ lynx:www/lynx \
+ p5-Module-CoreList>=0:devel/p5-Module-CoreList
+LIB_DEPENDS= libpng.so:graphics/png
+RUN_DEPENDS= p5-Bit-Vector>=7.4:math/p5-Bit-Vector \
+ p5-File-PathConvert>=0.9:devel/p5-File-PathConvert \
+ p5-GD>=2.68:graphics/p5-GD \
+ p5-HTML-Clean>=0.8:www/p5-HTML-Clean \
+ p5-Image-Size>=3.300:graphics/p5-Image-Size \
+ p5-Term-ReadKey>=2.37:devel/p5-Term-ReadKey \
+ p5-XML-Parser>=2.44:textproc/p5-XML-Parser
+
+USES= gettext gmake perl5
+USE_PERL5= build patch run
+
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --localstatedir=${PREFIX}/var \
+ --with-catdir=man --with-perl=${PERL}
+
+INFO= logo-apache logo-freebsd logo-gimp logo-htdig logo-linux \
+ logo-netbsd logo-openbsd logo-php logo-php3 logo-vim logo-wml logo-xemacs
+INFO_PATH= lib/wml/data/logos
+
+post-patch:
+ ${CP} ${FILESDIR}/extra-wml__aux_freetable_freetable.src \
+ ${WRKSRC}/wml_aux/freetable/freetable.src
+ ${PERL} -pi -e 's!^(\s+have_\S+)=\S+!\1=1!' \
+ ${WRKSRC}/wml_common/Makefile.in
+
+do-configure:
+ (cd ${WRKSRC} && ${SH} configure ${CONFIGURE_ARGS})
+
+.include <bsd.port.mk>
diff --git a/www/wml/distinfo b/www/wml/distinfo
new file mode 100644
index 000000000000..c28bc2b5d51b
--- /dev/null
+++ b/www/wml/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1518170030
+SHA256 (wml-2.0.12.tar.gz) = 8ae4c333ffb12fb668c96c56e2fc3f70d9617caf6ffafc12e140efd5ead6b847
+SIZE (wml-2.0.12.tar.gz) = 4984530
diff --git a/www/wml/files/extra-wml__aux_freetable_freetable.src b/www/wml/files/extra-wml__aux_freetable_freetable.src
new file mode 100644
index 000000000000..ddd5a865ddc5
--- /dev/null
+++ b/www/wml/files/extra-wml__aux_freetable_freetable.src
@@ -0,0 +1,391 @@
+#!@PATH_PERL@
+eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# Freetable html tables generator
+# Copyright (c) 1999, 2000 Tomasz W麋rzanowski <maniek@beer.com>
+#
+# Freetable 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.
+#
+# Thanks to Denis Barbier <barbier@imacs.polytechnique.fr> for contribution
+#
+# On Debian GNU/Linux systems, the complete text of the GNU General
+# Public License can be found in `/usr/share/common-licenses/GPL'.
+
+$version = '0.11';
+lang_init ();
+init ();
+while (<>) { if ( /<wwwtable(\s?.*)>/i ) { table_parse(0) } else { print } }
+
+sub table_parse {
+my ( $level ) = shift;
+my ( $table_open_data, $table_close_data, $table_started ) = ( $1, '', 0 );
+my ( %cell,%entry );
+
+while (<>) {
+if ( /<wwwtable(\s?.*)>/i ) { table_entry_content_append_block (\%entry,table_parse($level+1)); next }
+if ( /<\/wwwtable(.*)>/i ) { $table_close_data = $1; last }
+if ( /^\s*\(\(\s*(.*)\s*,\s*(.*)\s*\)\)(.*)$/ ) { table_entry_new (\%entry,$1,$2,$3,'h'); $table_started = 1; next }
+if ( /^\s*\(\s*(.*)\s*,\s*(.*)\s*\)(.*)$/ ) { table_entry_new (\%entry,$1,$2,$3,'d'); $table_started = 1; next }
+if ( $table_started ) { table_entry_content_append_line (\%entry,$_) } else { print }
+}
+
+seq_entries (\%entry);
+my ($max_row,$max_col) = table_count_max (\%entry);
+entries2table (\%entry,\%cell,$max_row,$max_col);
+complete_table (\%cell,$max_row,$max_col);
+table_render ($level,\%cell,$max_row,$max_col,$table_open_data,$table_close_data);
+}
+
+sub lang_init {
+$warning =
+'<!-- WARNING: The following table was produced by freetable. -->
+<!-- Unless know what you are doing, you should not edit it here, -->
+<!-- but edit sources and then run freetable to rebuild this table -->
+
+';
+
+$help =
+'Usage: freetable [options] filename
+
+Options:
+ -h, --help Print this message
+ -V, --version Just print version information and exit
+ -c, --comment Do comment before every cell to point its location
+ -b, --no-nbsp Do not insert &nbsp; to empty cells to make lowered
+ 3D apperance
+ -w, --warning Print a warning before each generated table that you
+ should not change generated file, but source.
+ -l, --location Location tags substitution
+ -m, --macro [program] Use macro processor for cells content (default: m4)
+';
+}
+
+sub init {
+use Getopt::Long;
+$Getopt::Long::bundling=1;
+my (@opts) = ("b|no-nbsp","c|comment","w|no-warning","h|help","V|version","m|macro:s","l|location");
+$opt_h=$opt_V=$opt_b=$opt_c=$opt_w=$opt_l=0;
+$opt_m='-';
+GetOptions(@opts);
+if ($opt_m eq "-") { $opt_m = '' }
+elsif ($opt_m eq "") { $opt_m = 'm4' }
+elsif ($#ARGV == -1 && $ARGV ne '') {
+ push(@ARGV,$opt_m);
+ $opt_m = '';
+}
+if ($opt_h) { print $help; exit 0 }
+if ($opt_V) { print "Freetable $version\n"; exit 0 }
+$defaultcell = ($opt_b)?'':'&nbsp;';
+($min_row,$min_col) = (1,1);
+$tablewarn = ($opt_w)?$warning:'';
+}
+
+sub table_entry_new {
+my ( $entry,$row,$col,$data,$type ) = @_;
+push @{$$entry{row }},$row;
+push @{$$entry{col }},$col;
+push @{$$entry{head}},$data;
+push @{$$entry{type}},$type;
+push @{$$entry{cont}},'';
+}
+
+sub table_entry_content_append_line {
+my ( $entry, $data ) = @_;
+$data =~ /^\s*(.*)$/;
+$$entry{cont}[-1] .= (($$entry{cont}[-1] and $1)?"\n":'').$1;
+}
+
+sub table_entry_content_append_block {
+my ( $entry, $data ) = @_;
+$$entry{cont}[-1] .= "\n".$data;
+}
+
+sub seq_entries {
+my ($entry) = @_;
+my ($prerow,$precol) = (1,1);
+return if ( $#{$$entry{row}} < 0 );
+foreach my $entrynr( 0..$#{$$entry{row}} ) {
+seq_one( $prerow, \$$entry{row}[$entrynr] );
+$prerow = $$entry{row}[$entrynr];
+$prerow = 1 unless ($prerow =~ /^\d+$/);
+seq_one( $precol, \$$entry{col}[$entrynr] );
+$precol = $$entry{col}[$entrynr];
+$precol = 1 unless ($precol =~ /^\d+$/);
+}
+}
+
+sub seq_one {
+my ( $pre,$act ) = @_;
+ if ( $$act eq '=' or $$act eq '' ) { $$act = $pre }
+elsif ( $$act eq '*' ) { $$act = '.*' }
+elsif ( $$act =~ /^([\+-])(\d*)$/ ) { $$act = $pre + ((($1 eq '+')?1:-1) * (($2 eq '')?1:$2)) }
+}
+
+sub entries2table {
+my ($entry,$cell,$max_row,$max_col) = @_;
+foreach my $entrynr (0..$#{$$entry{row}}) {
+my $def_row = $$entry{row}[$entrynr];
+my $def_col = $$entry{col}[$entrynr];
+foreach my $row ($min_row..$max_row) {
+if ( $row =~ /^$def_row$/ ) {
+foreach my $col ($min_col..$max_col) { complete_cell ($entry,$cell,$row,$col,$entrynr,$def_row) if ( $col =~ /^$def_col$/ ) }
+}
+}
+}
+}
+
+sub complete_cell {
+my ( $entry,$cell,$row,$col,$entrynr,$re ) = @_;
+$$cell{header} [$row][$col] .= $$entry{head}[$entrynr];
+$$cell{content}[$row][$col] .= (($$cell{content}[$row][$col] and $$entry{cont}[$entrynr])?' ':'').$$entry{cont}[$entrynr];
+$$cell{type} [$row][$col] = $$entry{type}[$entrynr];
+if ( $$entry{head}[$entrynr] =~ /(col|row)span\s*=\s*(\S+)/i ) {
+my ( $direction, $pan ) = ( $1,$2 );
+if ( $direction eq 'row' ) {
+foreach my $void_row(($row+1)..($row+$pan-1)) { $$cell{void}[$void_row][$col] = 1 }
+} else {
+foreach my $void_col(($col+1)..($col+$pan-1)) { $$cell{void}[$row][$void_col] = 1 }
+}
+}
+}
+
+sub table_count_max {
+my ( $entry,$max_row,$max_col ) = ( $_[0],0,0 );
+foreach my $entrynr(0..$#{$$entry{row}}) {
+my $row = $$entry{row}[$entrynr];
+my $col = $$entry{col}[$entrynr];
+if( $row =~ /^\d+$/ and $row > $max_row ) { $max_row = $row }
+if( $col =~ /^\d+$/ and $col > $max_col ) { $max_col = $col }
+}
+( $max_row,$max_col );
+}
+
+sub complete_table {
+my ( $cell,$max_row,$max_col ) = @_;
+foreach my $row ($min_row..$max_row) {
+foreach my $col ($min_col..$max_col) {
+$$cell{type} [$row][$col] = 'd' unless ($$cell{type} [$row][$col]);
+$$cell{header} [$row][$col] = '' unless ($$cell{header} [$row][$col]);
+$$cell{content}[$row][$col] = $defaultcell unless ($$cell{content}[$row][$col]);
+}
+}
+}
+
+sub table_render {
+my ( $level,$cell,$max_row,$max_col,$table_open_data,$table_close_data ) = @_;
+my ( $table_text,$processed_text );
+$table_text .= $tablewarn;
+$table_text .= "<table$table_open_data>\n";
+foreach my $row ($min_row..$max_row) {
+$table_text .= " <tr>\n";
+foreach my $col ($min_col..$max_col) {
+$table_text .= " <!-- cell ($row,$col) -->\n" if ($opt_c);
+location_tags_substitute (\$$cell{content}[$row][$col],$row,$col) if ($opt_l);
+$table_text .= " <t$$cell{type}[$row][$col]$$cell{header}[$row][$col]>$$cell{content}[$row][$col]</t$$cell{type}[$row][$col]>\n" unless ($$cell{void}[$row][$col])
+}
+$table_text .= " </tr>\n\n"
+}
+$table_text.= "</table$table_close_data>\n";
+if ( $opt_m ) {
+if ( $level ) {
+use IPC::Open2;
+pipe MACROR,MACROW;
+open2 \*MACROR,\*MACROW,$opt_m;
+print MACROW $table_text;
+close MACROW;
+foreach (<MACROR>) { $processed_text.=$_ }
+close MACROR;
+return $processed_text;
+} else {
+open MACROW,"|$opt_m";
+print MACROW $table_text;
+close MACROW;
+}
+} else {
+if ( $level ) { return $table_text }
+else { print $table_text }
+}
+}
+
+sub location_tags_substitute {
+my ( $cell,$row,$col ) = @_;
+$$cell =~ s/<row>/$row/gi;
+$$cell =~ s/<col>/$col/gi;
+}
+
+##EOF##
+
+=encoding Latin-1
+=head1 NAME
+
+freetable - tool for making HTML tables generation easier
+
+=head1 VERSION
+
+This manpage describes version 0.11 of freetable.
+
+It may be not 100% accurate if you use different version.
+
+=head1 SYNOPSIS
+
+B<freetable> F<[options]> F<filename>
+
+Possible options are :
+
+I<-h> or I<--help> Print usage info and exit
+
+I<-V> or I<--version> Print version information and exit
+
+I<-c> or I<--comment> Do comment before every cell to point its location
+
+I<-b> or I<--no-nbsp> Do not insert C<&nbsp;> to empty cells to make lowered
+3D apperance
+
+I<-w> or I<--warning> Print a warning before each generated table
+that you should not change it. You should change its source.
+
+I<-l> or I<--location> Substitute <row> and <col> flags inside table with correct
+cell's location
+
+I<-m> or I<--macro> I<[program]> Use macro procesor to proces cells content (default: m4)
+
+=head1 SECURITY WARNING
+
+ DO NOT USE MACRO PROCESSOR OVER UNSURE SOURCE
+ M4 MAY BE USED TO COMPROMISE YOUR SECURITY
+ FOR MORE INFORMATION ON THIS EXEC :
+ (info m4 'UNIX commands' syscmd)
+
+=head1 DESCRIPTION
+
+This is free replacement of F<wwwtable>
+
+HTML is great language, but have one horrible flaw :
+tables. I spent many hours looking at HTML source I just written
+and trying to guess which cell in source is which in browser.
+
+If this also describes you, then read this manpage and your
+pain will stop.
+
+Program read HTML source from either stdin or file. Then it
+searches for line starting table:
+
+ <wwwtable [options]>
+
+Then it analyzes table, put correct HTML table in this place and
+continue searching for the next table.
+
+=head1 TABLE SYNTAX
+
+It is very easy:
+
+ wwwtable :
+ <wwwtable [wwwtable_options]>
+ [preamble]
+ [cell]
+ [cell]
+ ...
+ </wwwtable>
+
+wwwtable_options will be passed to C<E<lt>TABLEE<gt>> tags. There is
+no magic inside preamble. It can be any HTML text. It will be simply
+put in front of table.
+
+cell is either normal_cell (C<E<lt>TDE<gt>> tag) or
+header_cell (C<E<lt>THE<gt>> tag)
+
+ normal_cell :
+ (row,col) cell_options
+ cell_content
+
+ header_cell :
+ ((row,col)) cell_options
+ cell_content
+
+cell_options will be passed to cell tag. There is magic inside
+colspan and rowspan keys are parsed to make correct table.
+
+cell_content can be anything. It may contain text, tags, and
+even nested wwwtables.
+
+If you use I<-m> (or I<--macro>) option, it will be passed thru m4(1),
+with <row> and <col> set to adress of curent cell
+
+row and col are either numbers locating cells, expressions relative to previous cell
+or regular expresions to match few of them. Unlike F<wwwtable>, F<freetable> can use regular
+expresions for header cells. Also C<*> can be used, and it mean C<.*> really.
+
+Relative expressions are :
+
+I<=> or empty what mean : the same as previous
+
+I<+> or I<+X> what mean : one and X more than previous
+
+I<-> or I<-X> what mean : one and X less than previous
+
+If many definisions adress the same cell all options and contents are
+concatenated in order of apperance.
+
+If you want use only regular expresions you must tell program about the last cell :
+
+ <wwwtable>
+ (*,1)
+ these are colums 1
+ (1,*)
+ these are rows 1
+ (4,4)
+ </wwwtable>
+
+=head1 INCOMPATIBILITIES WITH WWWTABLE
+
+If you was formerly user of F<wwwtable> and want to change your tool, you
+should read this. Most of this is about regexps handling.
+Notice also that F<wwwtable> couldnt do location tags substitution nor macroprocesing.
+
+Option I<-w> has completely oposite meaning. We dont print warnings by default,
+and I<-w> or I<--warning> is used to force warnings.
+
+Table header fields can be specified by regexps ex :
+
+ ((1,*))
+
+It was impossible in F<wwwtable>.
+
+Axis counters are 100% orthogonal. This mean that code :
+
+ (*,1) width=30
+ (*,2) width=35
+ (*,3) width=40
+ (=,=)
+ Foo
+
+Foo will appear in 3rd column, and if you wanted it to be in 1th
+this should be written :
+
+ (*,1) width=30
+ (*,2) width=35
+ (*,3) width=40
+ (=,1)
+ Foo
+
+or
+
+ (*,) width=30
+ (*,+) width=35
+ (*,+) width=40
+ (=,1)
+ Foo
+
+=head1 SEE ALSO
+
+ B<m4(1)>
+
+=head1 AUTHOR
+
+Tomasz Wegrzanowski <maniek@beer.com>
+
+=cut
diff --git a/www/wml/files/patch-Makefile.in b/www/wml/files/patch-Makefile.in
new file mode 100644
index 000000000000..d72829467d1a
--- /dev/null
+++ b/www/wml/files/patch-Makefile.in
@@ -0,0 +1,16 @@
+--- Makefile.in.orig 2018-12-24 13:19:12 UTC
++++ Makefile.in
+@@ -25,10 +25,10 @@ TARBALL = $(SHTOOL) tarball -t
+
+ prefix = @prefix@
+ exec_prefix = $(prefix)
+-bindir = $(prefix)/bin
++bindir = $(DESTDIR)$(prefix)/bin
+ libsubdir = @libsubdir@
+-libdir = $(prefix)/lib$(libsubdir)
+-mandir = $(prefix)/man
++libdir = $(DESTDIR)$(prefix)/lib$(libsubdir)
++mandir = $(DESTDIR)$(prefix)/man
+ catdir = @catdir@
+ tmpdir = @tmpdir@
+
diff --git a/www/wml/files/patch-wml__backend_p2__mp4h_configure.ac b/www/wml/files/patch-wml__backend_p2__mp4h_configure.ac
new file mode 100644
index 000000000000..fb0b1e24b43a
--- /dev/null
+++ b/www/wml/files/patch-wml__backend_p2__mp4h_configure.ac
@@ -0,0 +1,11 @@
+--- wml_backend/p2_mp4h/configure.ac.orig 2018-12-24 17:14:48 UTC
++++ wml_backend/p2_mp4h/configure.ac
+@@ -6,7 +6,7 @@
+
+ AM_INIT_AUTOMAKE([$PACKAGE_NAME], [$PACKAGE_VERSION])
+ AM_CONFIG_HEADER([config.h])
+-AM_C_PROTOTYPES
++# AM_C_PROTOTYPES
+ ALL_LINGUAS=""
+ AM_GNU_GETTEXT([external])
+ IT_PROG_INTLTOOL
diff --git a/www/wml/files/patch-wml__backend_p2__mp4h_doc_mp4h.mp4h b/www/wml/files/patch-wml__backend_p2__mp4h_doc_mp4h.mp4h
new file mode 100644
index 000000000000..8ac7a9aba3b3
--- /dev/null
+++ b/www/wml/files/patch-wml__backend_p2__mp4h_doc_mp4h.mp4h
@@ -0,0 +1,10 @@
+--- wml_backend/p2_mp4h/doc/mp4h.mp4h.orig 2014-12-21 21:59:33 UTC
++++ wml_backend/p2_mp4h/doc/mp4h.mp4h
+@@ -2,6 +2,7 @@
+ ;;; mp4h.mp4h -- Documentation for mp4h
+ ;;; Copyright 2000-2002, Denis Barbier <barbier@imacs.polytechnique.fr>
+ ;;;
++=encoding Latin1
+
+ <set-var package=mp4h />
+ <set-var title="mp4h - Macro Processor for HTML Documents" />
diff --git a/www/wml/files/patch-wml__backend_p2__mp4h_src_builtin.c b/www/wml/files/patch-wml__backend_p2__mp4h_src_builtin.c
new file mode 100644
index 000000000000..f063a1ab71b3
--- /dev/null
+++ b/www/wml/files/patch-wml__backend_p2__mp4h_src_builtin.c
@@ -0,0 +1,17 @@
+--- wml_backend/p2_mp4h/src/builtin.c.orig 2018-12-24 13:19:13 UTC
++++ wml_backend/p2_mp4h/src/builtin.c
+@@ -1069,10 +1069,13 @@
+ static void
+ mp4h_bp_mp4h_output_radix (MP4H_BUILTIN_ARGS)
+ {
++ long int temp;
++
+ if (bad_argc (argv[0], argc, 0, 2))
+ return;
+
+- safe_strtol (ARG (0), ARG (1), (long int *) &output_radix);
++ safe_strtol (ARG (0), ARG (1), &temp);
++ output_radix = temp;
+ }
+
+ static void
diff --git a/www/wml/files/patch-wml__backend_p6__asubst_asubst.src b/www/wml/files/patch-wml__backend_p6__asubst_asubst.src
new file mode 100644
index 000000000000..d5a8fe4b456a
--- /dev/null
+++ b/www/wml/files/patch-wml__backend_p6__asubst_asubst.src
@@ -0,0 +1,10 @@
+--- wml_backend/p6_asubst/asubst.src.orig 2014-12-21 22:11:32 UTC
++++ wml_backend/p6_asubst/asubst.src
+@@ -16,6 +16,7 @@
+ use Getopt::Long 2.13;
+ use IO::Handle 1.15;
+ use IO::File 1.06;
++=encoding Latin1
+
+ #
+ # process command line
diff --git a/www/wml/files/patch-wml__common_gd_Makefile.PL.in b/www/wml/files/patch-wml__common_gd_Makefile.PL.in
new file mode 100644
index 000000000000..bc5db511c113
--- /dev/null
+++ b/www/wml/files/patch-wml__common_gd_Makefile.PL.in
@@ -0,0 +1,10 @@
+--- wml_common/gd/Makefile.PL.in.orig 2009-03-15 18:17:56 UTC
++++ wml_common/gd/Makefile.PL.in
+@@ -3,6 +3,7 @@
+ # the contents of the Makefile that is written.
+ WriteMakefile(
+ 'NAME' => 'WML::GD',
++ 'MAKE' => 'gmake',
+ 'VERSION_FROM' => 'GD.pm',
+ 'PM' => {'GD.pm' => '$(INST_LIBDIR)/GD.pm'},
+ 'MYEXTLIB' => 'libgd/libgd$(LIB_EXT)',
diff --git a/www/wml/files/patch-wml__docs_wml_intro.pod b/www/wml/files/patch-wml__docs_wml_intro.pod
new file mode 100644
index 000000000000..917fdc0cedaf
--- /dev/null
+++ b/www/wml/files/patch-wml__docs_wml_intro.pod
@@ -0,0 +1,11 @@
+--- wml_docs/wml_intro.pod.orig 2014-12-21 22:21:41 UTC
++++ wml_docs/wml_intro.pod
+@@ -2,7 +2,7 @@
+ ## WML Introduction
+ ## Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved.
+ ##
+-
++=encoding Latin1
+ =head1 NAME
+
+ WML Introduction - An introduction to WML's basic concepts
diff --git a/www/wml/files/patch-wml__docs_wml_tutorial.pod b/www/wml/files/patch-wml__docs_wml_tutorial.pod
new file mode 100644
index 000000000000..a39926df65ab
--- /dev/null
+++ b/www/wml/files/patch-wml__docs_wml_tutorial.pod
@@ -0,0 +1,11 @@
+--- wml_docs/wml_tutorial.pod.orig 2014-12-21 22:19:10 UTC
++++ wml_docs/wml_tutorial.pod
+@@ -2,7 +2,7 @@
+ ## WML Tutorial
+ ## Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved.
+ ##
+-
++=encoding Latin1
+ =head1 NAME
+
+ WML Tutorial - Understanding WML step-by-step
diff --git a/www/wml/files/patch-wml__include_Makefile.in b/www/wml/files/patch-wml__include_Makefile.in
new file mode 100644
index 000000000000..274333540fdd
--- /dev/null
+++ b/www/wml/files/patch-wml__include_Makefile.in
@@ -0,0 +1,16 @@
+--- wml_include/Makefile.in.orig 2018-12-24 13:25:15 UTC
++++ wml_include/Makefile.in
+@@ -21,10 +21,10 @@ MKDIR = $(top_srcdir)/etc/shtool mkdir -f -p
+
+ prefix = @prefix@
+ exec_prefix = $(prefix)
+-bindir = $(prefix)/bin
++bindir = $(DESTDIR)$(prefix)/bin
+ libsubdir = @libsubdir@
+-libdir = $(prefix)/lib$(libsubdir)
+-mandir = $(prefix)/man
++libdir = $(DESTDIR)$(prefix)/lib$(libsubdir)
++mandir = $(DESTDIR)$(prefix)/man
+
+ INSTALLPRIVLIB = @INSTALLPRIVLIB@
+ INSTALLARCHLIB = @INSTALLARCHLIB@
diff --git a/www/wml/files/patch-wml__include_des_typography.src b/www/wml/files/patch-wml__include_des_typography.src
new file mode 100644
index 000000000000..bcfa4423d1ba
--- /dev/null
+++ b/www/wml/files/patch-wml__include_des_typography.src
@@ -0,0 +1,10 @@
+--- wml_include/des/typography.src.orig 2014-12-21 22:43:30 UTC
++++ wml_include/des/typography.src
+@@ -5,6 +5,7 @@
+
+ # The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
+ #use wml::mod::version
++=encoding Latin1
+ <require 2.0.3 />
+
+ #use wml::std::tags
diff --git a/www/wml/files/patch-wml__include_fmt_isolatin.src b/www/wml/files/patch-wml__include_fmt_isolatin.src
new file mode 100644
index 000000000000..572cac5e948a
--- /dev/null
+++ b/www/wml/files/patch-wml__include_fmt_isolatin.src
@@ -0,0 +1,10 @@
+--- wml_include/fmt/isolatin.src.orig 2014-12-21 22:47:00 UTC
++++ wml_include/fmt/isolatin.src
+@@ -5,6 +5,7 @@
+
+ # the container tag itself
+ <define-tag isolatin endtag=required>
++=encoding Latin1
+ {:\
+ [[s| |&nbsp;|g]]\
+ [[s|¡|&iexcl;|g]]\
diff --git a/www/wml/files/patch-wml__misc_Makefile.in b/www/wml/files/patch-wml__misc_Makefile.in
new file mode 100644
index 000000000000..8abe0461a421
--- /dev/null
+++ b/www/wml/files/patch-wml__misc_Makefile.in
@@ -0,0 +1,16 @@
+--- wml_misc/Makefile.in.orig 2014-03-29 09:11:38 UTC
++++ wml_misc/Makefile.in
+@@ -21,10 +21,10 @@
+
+ prefix = @prefix@
+ exec_prefix = $(prefix)
+-bindir = $(prefix)/bin
++bindir = $(DESTDIR)$(prefix)/bin
+ libsubdir = @libsubdir@
+-libdir = $(prefix)/lib$(libsubdir)
+-mandir = $(prefix)/man
++libdir = $(DESTDIR)$(prefix)/lib$(libsubdir)
++mandir = $(DESTDIR)$(prefix)/man
+
+ # ------------------------------------------------
+ # TARGETS
diff --git a/www/wml/files/patch-wml__test_t_11-wmk.t b/www/wml/files/patch-wml__test_t_11-wmk.t
new file mode 100644
index 000000000000..601d413b7973
--- /dev/null
+++ b/www/wml/files/patch-wml__test_t_11-wmk.t
@@ -0,0 +1,11 @@
+--- wml_test/t/11-wmk.t 2005-12-01 19:22:04 2005 UTC
++++ wml_test/t/11-wmk.t
+@@ -37,6 +37,8 @@
+ bar
+ EOT_IN
+
++sleep 1;
++
+ $rc = `$wmk a.wml 2>&1`;
+ print ($rc eq "$ENV{WML} -n -q -W \"1,-N\" -o a.html a.wml\n" ? "ok\n" : "not ok\n");
+ $rc = &TEST::system("cmp $tmpfile1 a.html");
diff --git a/www/wml/files/patch-wml_backend-p3_eperl-eperl_perl5.h b/www/wml/files/patch-wml_backend-p3_eperl-eperl_perl5.h
new file mode 100644
index 000000000000..afc6963df063
--- /dev/null
+++ b/www/wml/files/patch-wml_backend-p3_eperl-eperl_perl5.h
@@ -0,0 +1,13 @@
+--- wml_backend/p3_eperl/eperl_perl5.h.orig 2013-10-17 19:28:21 UTC
++++ wml_backend/p3_eperl/eperl_perl5.h
+@@ -72,10 +72,6 @@
+ # define PL_curstash curstash
+ #endif
+
+-#ifndef WITH_THR
+-# define PL_defoutgv defoutgv
+-#endif
+-
+ /*
+ Initialization of locales when building a new Perl interpreter.
+ Perl 5.003 calls perl_init_i18nl14n
diff --git a/www/wml/pkg-descr b/www/wml/pkg-descr
new file mode 100644
index 000000000000..463f0fe6f4fc
--- /dev/null
+++ b/www/wml/pkg-descr
@@ -0,0 +1,13 @@
+WML is a free and extensible Webdesigner's off-line HTML generation toolkit
+for Unix, distributed under the GNU General Public License (GPL v2). It is
+written in ANSI C and Perl 5, build via a GNU Autoconf based source tree
+and runs out-of-the-box on all major Unix derivates. It can be used
+free of charge both in educational and commercial environments.
+
+WML consists of a control frontend driving up to nine backends in a
+sequential pass-oriented filtering scheme. Each backend provides one
+particular core language. For maximum power WML additionally ships with a
+well-suited set of include files which provide higher-level features build
+on top of the backends core languages.
+
+WWW: https://thewml.github.io/
diff --git a/www/wml/pkg-plist b/www/wml/pkg-plist
new file mode 100644
index 000000000000..fc9b9b9a85e8
--- /dev/null
+++ b/www/wml/pkg-plist
@@ -0,0 +1,180 @@
+bin/wmb
+bin/wmd
+bin/wmk
+bin/wml
+bin/wmu
+lib/wml/data/logos/logo-apache.gif
+lib/wml/data/logos/logo-apache.png
+lib/wml/data/logos/logo-freebsd.gif
+lib/wml/data/logos/logo-freebsd.png
+lib/wml/data/logos/logo-gimp.gif
+lib/wml/data/logos/logo-gimp.png
+lib/wml/data/logos/logo-htdig.gif
+lib/wml/data/logos/logo-htdig.png
+lib/wml/data/logos/logo-linux.gif
+lib/wml/data/logos/logo-linux.png
+lib/wml/data/logos/logo-netbsd.gif
+lib/wml/data/logos/logo-netbsd.png
+lib/wml/data/logos/logo-openbsd.gif
+lib/wml/data/logos/logo-openbsd.png
+lib/wml/data/logos/logo-php.gif
+lib/wml/data/logos/logo-php.png
+lib/wml/data/logos/logo-php3.gif
+lib/wml/data/logos/logo-php3.png
+lib/wml/data/logos/logo-vim.gif
+lib/wml/data/logos/logo-vim.png
+lib/wml/data/logos/logo-wml.gif
+lib/wml/data/logos/logo-wml.png
+lib/wml/data/logos/logo-xemacs.gif
+lib/wml/data/logos/logo-xemacs.png
+lib/wml/data/txt2html.dict
+lib/wml/data/weblintrc
+lib/wml/data/wmd.txt
+lib/wml/exec/wml_aux_freetable
+lib/wml/exec/wml_aux_htmlclean
+lib/wml/exec/wml_aux_htmlinfo
+lib/wml/exec/wml_aux_iselect
+lib/wml/exec/wml_aux_linklint
+lib/wml/exec/wml_aux_map2html
+lib/wml/exec/wml_aux_tidy
+lib/wml/exec/wml_aux_txt2html
+lib/wml/exec/wml_aux_weblint
+lib/wml/exec/wml_p1_ipp
+lib/wml/exec/wml_p2_mp4h
+lib/wml/exec/wml_p3_eperl
+lib/wml/exec/wml_p4_gm4
+lib/wml/exec/wml_p5_divert
+lib/wml/exec/wml_p6_asubst
+lib/wml/exec/wml_p7_htmlfix
+lib/wml/exec/wml_p8_htmlstrip
+lib/wml/exec/wml_p9_slice
+lib/wml/include/all.wml
+lib/wml/include/des/all.wml
+lib/wml/include/des/gfont.wml
+lib/wml/include/des/imgbg.wml
+lib/wml/include/des/imgdot.wml
+lib/wml/include/des/lowsrc.wml
+lib/wml/include/des/navbar.wml
+lib/wml/include/des/preload.wml
+lib/wml/include/des/rollover.wml
+lib/wml/include/des/space.wml
+lib/wml/include/des/typography.wml
+lib/wml/include/fmt/all.wml
+lib/wml/include/fmt/isolatin.wml
+lib/wml/include/fmt/pod.wml
+lib/wml/include/fmt/sdf.wml
+lib/wml/include/fmt/text.wml
+lib/wml/include/fmt/url.wml
+lib/wml/include/fmt/verbatim.wml
+lib/wml/include/fmt/xtable.wml
+lib/wml/include/imp/all.wml
+lib/wml/include/imp/csmap.wml
+lib/wml/include/imp/fsview.wml
+lib/wml/include/imp/generic.wml
+lib/wml/include/mod/MakeMaker.wml
+lib/wml/include/mod/all.wml
+lib/wml/include/mod/version.wml
+lib/wml/include/std/all.wml
+lib/wml/include/std/box.wml
+lib/wml/include/std/case.wml
+lib/wml/include/std/grid.wml
+lib/wml/include/std/href.wml
+lib/wml/include/std/info.wml
+lib/wml/include/std/label.wml
+lib/wml/include/std/lang.wml
+lib/wml/include/std/logo.wml
+lib/wml/include/std/page.wml
+lib/wml/include/std/tags.wml
+lib/wml/include/std/toc.wml
+lib/wml/include/sup/all.wml
+lib/wml/include/sup/hextriple.wml
+lib/wml/include/sup/path.wml
+lib/wml/include/sys/all.wml
+lib/wml/include/sys/bootp3.wml
+lib/wml/include/sys/bootp4.wml
+lib/wml/include/sys/compat1.wml
+man/man1/wmb.1.gz
+man/man1/wmd.1.gz
+man/man1/wmd_missing.1.gz
+man/man1/wmk.1.gz
+man/man1/wml.1.gz
+man/man1/wml_aux_freetable.1.gz
+man/man1/wml_aux_htmlclean.1.gz
+man/man1/wml_aux_htmlinfo.1.gz
+man/man1/wml_aux_iselect.1.gz
+man/man1/wml_aux_linklint.1.gz
+man/man1/wml_aux_map2html.1.gz
+man/man1/wml_aux_tidy.1.gz
+man/man1/wml_aux_txt2html.1.gz
+man/man1/wml_aux_weblint.1.gz
+man/man1/wml_p1_ipp.1.gz
+man/man1/wml_p2_mp4h.1.gz
+man/man1/wml_p3_eperl.1.gz
+man/man1/wml_p4_gm4.1.gz
+man/man1/wml_p5_divert.1.gz
+man/man1/wml_p6_asubst.1.gz
+man/man1/wml_p7_htmlfix.1.gz
+man/man1/wml_p8_htmlstrip.1.gz
+man/man1/wml_p9_slice.1.gz
+man/man1/wmu.1.gz
+man/man3/wml::all.3.gz
+man/man3/wml::des::all.3.gz
+man/man3/wml::des::gfont.3.gz
+man/man3/wml::des::imgbg.3.gz
+man/man3/wml::des::imgdot.3.gz
+man/man3/wml::des::lowsrc.3.gz
+man/man3/wml::des::navbar.3.gz
+man/man3/wml::des::preload.3.gz
+man/man3/wml::des::rollover.3.gz
+man/man3/wml::des::space.3.gz
+man/man3/wml::des::typography.3.gz
+man/man3/wml::fmt::all.3.gz
+man/man3/wml::fmt::isolatin.3.gz
+man/man3/wml::fmt::pod.3.gz
+man/man3/wml::fmt::sdf.3.gz
+man/man3/wml::fmt::text.3.gz
+man/man3/wml::fmt::url.3.gz
+man/man3/wml::fmt::verbatim.3.gz
+man/man3/wml::fmt::xtable.3.gz
+man/man3/wml::imp::all.3.gz
+man/man3/wml::imp::csmap.3.gz
+man/man3/wml::imp::fsview.3.gz
+man/man3/wml::imp::generic.3.gz
+man/man3/wml::mod::MakeMaker.3.gz
+man/man3/wml::mod::all.3.gz
+man/man3/wml::mod::version.3.gz
+man/man3/wml::std::all.3.gz
+man/man3/wml::std::box.3.gz
+man/man3/wml::std::case.3.gz
+man/man3/wml::std::grid.3.gz
+man/man3/wml::std::href.3.gz
+man/man3/wml::std::info.3.gz
+man/man3/wml::std::label.3.gz
+man/man3/wml::std::lang.3.gz
+man/man3/wml::std::logo.3.gz
+man/man3/wml::std::page.3.gz
+man/man3/wml::std::tags.3.gz
+man/man3/wml::std::toc.3.gz
+man/man3/wml::sup::all.3.gz
+man/man3/wml::sup::hextriple.3.gz
+man/man3/wml::sup::path.3.gz
+man/man3/wml::sys::all.3.gz
+man/man3/wml::sys::bootp3.3.gz
+man/man3/wml::sys::bootp4.3.gz
+man/man3/wml::sys::compat1.3.gz
+man/man7/wml_barebone.7.gz
+man/man7/wml_faq.7.gz
+man/man7/wml_intro.7.gz
+man/man7/wml_macros.7.gz
+man/man7/wml_std_css1.7.gz
+man/man7/wml_std_css2.7.gz
+man/man7/wml_std_csspos.7.gz
+man/man7/wml_std_html20.7.gz
+man/man7/wml_std_html32.7.gz
+man/man7/wml_std_html40.7.gz
+man/man7/wml_std_html401.7.gz
+man/man7/wml_std_wai10.7.gz
+man/man7/wml_std_xhtml10.7.gz
+man/man7/wml_tags.7.gz
+man/man7/wml_tutorial.7.gz
+@dir lib/wml/perl