Hi,

Please check very careful if it is possible to update perl without breaking any code.
Michael, i remember an issue with the ~~ operator which is not supported anymore in actual perl versions.
Maybe there are other problems with the actual perl version where some features disappeared.

Just a thought.

Alex



Am 25.02.2016 um 06:58 schrieb Michael Tremer:
Hi,

I would like to see us updating perl. However, we cannot under any
circumstances put all the modules in a single LFS file. That makes
rebuilding one module impossible and basically is against the approach
of having packages.

So if you update them, please do that individually. Start with perl
itself, then all the other modules. Please do that in one branch as
individual commits and send this all together as a patchset.

Please work closely with this list to review any problems on the way.
It is not really helpful to push a too big patchset. Unfortunately we
are already at a state where nobody reviewed all the other patches that
you and other people have sent on this list.

Best,
-Michael

On Wed, 2016-02-24 at 08:08 +0100, Marcel Lorenz wrote:
Hi,

i will start a discussion for the integration of Perl 5.22.x into 
IPFire.
I have been working for over half a year on the files.

My motivation came from the use of SpamAssassin. This application is 
written in Perl. The old Perl modules from IPFire are as a security 
risk.

First i update the Perl LFS and rootfile only. All the other Perl 
modules remain old.
I began individual modules to update, but it was very expensive.

Since I had the idea to take all modules to one or two LFS together. 
This has the advantage that all individual Perl modules disappear 
make.sh from and this is clearly shorter. The two LFS files and the 
associated Rootfiles are also easier to maintain. The individual
Perl 
modules in Pakfire can then also be removed. Perl is always complete
and 
up to date with its modules. In my mailserver branch I have this 
development as far finished. However, I had the modules-LFS divided
into 
two files because make is having trouble with to large LFS files.

Also have Perl 5.22.1 integrated into the toolchain. The need still 
less, gdbm and berkeley DB4 before.

I created three files from the many Perl files:
perl-buildtools
perl-modules1
perl-modules2

The current folder size of /usr/lib/perl5 is about 75MB with Perl
5.22.1 
and all modules and 55Mb with Perl 5.12.3. A Perl-Modules list can
be 
found here: http://people.ipfire.org/~mlorenz/mp/22/perl.txt This 
includes all needed modules for Amavisd, all from Pakfire and many
more. 
All updated to the latest version from CPAN (December 2015)

Here the perl-buildtools LFS with the current modules from CPAN as
an 
example.
The modules included are needed around the other current Perl modules
to 
build:

#####################################################################
##########
#                                                                    
    
      #
# IPFire.org - A linux based
firewall                                    
      #
# Copyright (C) 2007-2015  IPFire Team  <info@ipfire.org>            
    
      #
#                                                                    
    
      #
# This program 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 3 of the License,
or      
      #
# (at your option) any later
version.                                    
      #
#                                                                    
    
      #
# This program is distributed in the hope that it will be
useful,        
      #
# but WITHOUT ANY WARRANTY; without even the implied warranty
of         
      #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
the          
      #
# GNU General Public License for more
details.                           
      #
#                                                                    
    
      #
# You should have received a copy of the GNU General Public
License      
      #
# along with this program.  If not, see <http://www.gnu.org/licenses/
.  
      #
#                                                                    
    
      #
#####################################################################
##########

#####################################################################
##########
# Definitions
#####################################################################
##########

include Config

VER        = 2015.10

THISAPP    = perl-buildtools-$(VER)
DL_FILE    = $(THISAPP).tar.gz
DL_FROM    = $(URL_IPFIRE)
DIR_APP    = $(DIR_SRC)/$(THISAPP)
TARGET     = $(DIR_INFO)/$(THISAPP)
PROG       = perl-buildtools
DEPS       = "perl"
PAK_VER    = 1

#####################################################################
##########
# Top-level Rules
#####################################################################
##########

objects = ExtUtils-Constant-0.23.tar.gz \
	ExtUtils-MakeMaker-7.10.tar.gz \
	ExtUtils-Manifest-1.70.tar.gz \
	Module-Build-0.4214.tar.gz \
	Module-Metadata-1.000027.tar.gz \
	Perl-OSType-1.009.tar.gz \
	Test-Deep-0.119.tar.gz \
	Test-Simple-1.001014.tar.gz \
	version-0.9912.tar.gz

ExtUtils-Constant-0.23.tar.gz        = 
$(DL_FROM)/ExtUtils-Constant-0.23.tar.gz
ExtUtils-MakeMaker-7.10.tar.gz       = 
$(DL_FROM)/ExtUtils-MakeMaker-7.10.tar.gz
ExtUtils-Manifest-1.70.tar.gz        = 
$(DL_FROM)/ExtUtils-Manifest-1.70.tar.gz
Module-Build-0.4214.tar.gz           = 
$(DL_FROM)/Module-Build-0.4214.tar.gz
Module-Metadata-1.000027.tar.gz      = 
$(DL_FROM)/Module-Metadata-1.000027.tar.gz
Perl-OSType-1.009.tar.gz             = 
$(DL_FROM)/Perl-OSType-1.009.tar.gz
Test-Deep-0.119.tar.gz               = $(DL_FROM)/Test-Deep-
0.119.tar.gz
Test-Simple-1.001014.tar.gz          = 
$(DL_FROM)/Test-Simple-1.001014.tar.gz
version-0.9912.tar.gz                = $(DL_FROM)/version-
0.9912.tar.gz

ExtUtils-Constant-0.23.tar.gz_MD5    =
bd3ec6d22ffab7e5cc05b1331a888d15
ExtUtils-MakeMaker-7.10.tar.gz_MD5   =
2639a21adee5e0a903730c12dcba08ec
ExtUtils-Manifest-1.70.tar.gz_MD5    =
8ccb9c1f3bca14c117a74bc7b43be095
Module-Build-0.4214.tar.gz_MD5       =
7b7ca5a47bef48c50c8b5906ca3ac7fb
Module-Metadata-1.000027.tar.gz_MD5  =
a0bf9b900dfd49c57702de3ee3801d42
Perl-OSType-1.009.tar.gz_MD5         =
9e0cae3812bc80815f00732bde1b7e61
Test-Deep-0.119.tar.gz_MD5           =
edb72e9b1874efe3b0c95324fb063e51
Test-Simple-1.001014.tar.gz_MD5      =
db7f57fd595e3e1c93c972307a88fa6e
version-0.9912.tar.gz_MD5            =
404a7174f3e38e4f8fad3e1eefce5412

install : $(TARGET)
check : $(patsubst %,$(DIR_CHK)/%,$(objects))
download :$(patsubst %,$(DIR_DL)/%,$(objects))
md5 : $(subst %,%_MD5,$(objects))
dist:
	@$(PAK)

#####################################################################
##########
# Downloading, checking, md5sum
#####################################################################
##########

$(patsubst %,$(DIR_CHK)/%,$(objects)) :
	@$(CHECK)

$(patsubst %,$(DIR_DL)/%,$(objects)) :
	@$(LOAD)

$(subst %,%_MD5,$(objects)) :
	@$(MD5)

#####################################################################
##########
# Installation Details
#####################################################################
##########

$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
	@$(PREBUILD)
	cd $(DIR_SRC) && tar zxf $(DIR_DL)/Perl-OSType-1.009.tar.gz
	cd $(DIR_SRC)/Perl-OSType-1.009 && perl Makefile.PL
	cd $(DIR_SRC)/Perl-OSType-1.009 && make $(MAKETUNING)
	cd $(DIR_SRC)/Perl-OSType-1.009 && make install
	@rm -rf $(DIR_SRC)/Perl-OSType-1.009
	cd $(DIR_SRC) && tar zxf $(DIR_DL)/version-0.9912.tar.gz
	cd $(DIR_SRC)/version-0.9912 && perl Makefile.PL
	cd $(DIR_SRC)/version-0.9912 && make $(MAKETUNING)
	cd $(DIR_SRC)/version-0.9912 && make install
	@rm -rf $(DIR_SRC)/version-0.9912
	cd $(DIR_SRC) && tar zxf $(DIR_DL)/Module-Metadata-
1.000027.tar.gz
	cd $(DIR_SRC)/Module-Metadata-1.000027 && perl Makefile.PL
	cd $(DIR_SRC)/Module-Metadata-1.000027 && make $(MAKETUNING)
	cd $(DIR_SRC)/Module-Metadata-1.000027 && make install
	@rm -rf $(DIR_SRC)/Module-Metadata-1.000027
	cd $(DIR_SRC) && tar zxf $(DIR_DL)/Module-Build-0.4214.tar.gz
	cd $(DIR_SRC)/Module-Build-0.4214 && perl Makefile.PL
	cd $(DIR_SRC)/Module-Build-0.4214 && make $(MAKETUNING)
	cd $(DIR_SRC)/Module-Build-0.4214 && make install
	@rm -rf $(DIR_SRC)/Module-Build-0.4214
	cd $(DIR_SRC) && tar zxf $(DIR_DL)/Test-Deep-0.119.tar.gz
	cd $(DIR_SRC)/Test-Deep-0.119 && perl Makefile.PL
	cd $(DIR_SRC)/Test-Deep-0.119 && make $(MAKETUNING)
	cd $(DIR_SRC)/Test-Deep-0.119 && make install
	@rm -rf $(DIR_SRC)/Test-Deep-0.119
	cd $(DIR_SRC) && tar zxf $(DIR_DL)/Test-Simple-1.001014.tar.gz
	cd $(DIR_SRC)/Test-Simple-1.001014 && perl Makefile.PL
	cd $(DIR_SRC)/Test-Simple-1.001014 && make $(MAKETUNING)
	cd $(DIR_SRC)/Test-Simple-1.001014 && make install
	@rm -rf $(DIR_SRC)/Test-Simple-1.001014
	cd $(DIR_SRC) && tar zxf $(DIR_DL)/ExtUtils-Constant-
0.23.tar.gz
	cd $(DIR_SRC)/ExtUtils-Constant-0.23 && perl Makefile.PL
	cd $(DIR_SRC)/ExtUtils-Constant-0.23 && make $(MAKETUNING)
	cd $(DIR_SRC)/ExtUtils-Constant-0.23 && make install
	@rm -rf $(DIR_SRC)/ExtUtils-Constant-0.23
	cd $(DIR_SRC) && tar zxf $(DIR_DL)/ExtUtils-MakeMaker-
7.10.tar.gz
	cd $(DIR_SRC)/ExtUtils-MakeMaker-7.10 && perl Makefile.PL
	cd $(DIR_SRC)/ExtUtils-MakeMaker-7.10 && make $(MAKETUNING)
	cd $(DIR_SRC)/ExtUtils-MakeMaker-7.10 && make install
	@rm -rf $(DIR_SRC)/ExtUtils-MakeMaker-7.10
	cd $(DIR_SRC) && tar zxf $(DIR_DL)/ExtUtils-Manifest-
1.70.tar.gz
	cd $(DIR_SRC)/ExtUtils-Manifest-1.70 && perl Makefile.PL
	cd $(DIR_SRC)/ExtUtils-Manifest-1.70 && make $(MAKETUNING)
	cd $(DIR_SRC)/ExtUtils-Manifest-1.70 && make install
	@rm -rf $(DIR_SRC)/ExtUtils-Manifest-1.70
	@$(POSTBUILD)

That would be my suggestion for integration of Perl 5.22.1. On
request, 
I can create big patches and send it to the mailing list. Perl
5.22.x 
works are in several months generated by my ISO's unremarkable. It
is 
known that a few startup scripts need to be adjusted (amavisd).

Please forgive me my simple English... Google translator helped me.
:)

Greetings,
Marcel Lorenz