From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Tremer To: development@lists.ipfire.org Subject: Re: Getting everyone started with Pakfire Date: Mon, 04 Sep 2023 11:30:49 +0100 Message-ID: <624C11EA-227C-4575-8ACD-D8B542CD5D2D@ipfire.org> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7521163569263476786==" List-Id: --===============7521163569263476786== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hello, > On 2 Sep 2023, at 17:41, Adolf Belka wrote: >=20 > Hi, >=20 > On 02/09/2023 13:54, Adolf Belka wrote: >> Hi, >>=20 >> On 02/09/2023 13:33, Michael Tremer wrote: >>> Hello, >>>=20 >>> Is there an easy way to install Archlinux in a VM without running through= this process manually? >>>=20 >>> https://wiki.archlinux.org/title/Installation_guide >> Unfortunately not that I am aware of, although it is not that complicated = for just a command line based system. >> Arch Linux don't have an installer anymore. >>=20 >> The only thing I can think of is that if you are able to use VirtualBox, I= could create a VirtualBox text interface only vm which I could then export f= rom my system as a file to send to you or place in my dropbox system for you = to upload. >>=20 >> Would that be of any use? >>=20 >> Regards, >> Adolf. >>>=20 >>> It might be quicker for me to reproduce the problem. >>>=20 >>> -Michael >>>=20 >>>> On 2 Sep 2023, at 12:11, Adolf Belka wrote: >>>>=20 >>>> Hi, >>>>=20 >>>> On 02/09/2023 13:02, Michael Tremer wrote: >>>>> Hello, >>>>>> On 2 Sep 2023, at 12:00, Adolf Belka wrote: >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> On 02/09/2023 12:53, Michael Tremer wrote: >>>>>>> Hello Adolf, >>>>>>>> On 2 Sep 2023, at 11:49, Adolf Belka wrot= e: >>>>>>>>=20 >>>>>>>> Hi Michael, >>>>>>>>=20 >>>>>>>> I went back to pakfire and looked through the config.log file from m= y build. >>>>>>>>=20 >>>>>>>> From that I noticed the following defines >>>>>>>>=20 >>>>>>>> #define PAKFIRE_CONFIG_DIR "/etc/pakfire" >>>>>>>> #define PAKFIRE_CACHE_DIR "/var/cache/pakfire" >>>>>>>> #define PAKFIRE_PRIVATE_DIR "/var/lib/pakfire" >>>>>>>> #define PAKFIRE_SCRIPTS_DIR "/lib/pakfire" >>>>>>>> #define PAKFIRE_TMP_DIR "/var/tmp" >>>>>>>>=20 >>>>>>>> After running sudo make install then /var/lib/pakfire and /var/cache= /pakfire are not present on the system. >>>>>>> That should be correct. Pakfire should create those directories itsel= f if it is running as root. >>>>>>> For unprivileged users, it will create a cache directory in the user= =E2=80=99s home, because we cannot write to /var/lib/=E2=80=A6, etc. > I found that in my user home directory there was the path .pakfire/cache/ip= fire/3/x86_64/ containing the directories > bootstrap and testing. >=20 > Since running with sudo those are now in /root/.pakfire/cache/ipfire/3/x86_= 64/ Yes, this is correct. Every user will have their own cache, because we cannot= easily create a shared cache. Normally that isn=E2=80=99t even necessary bec= ause it is rare that many people share the same build machine. -Michael >=20 >=20 > Regards, >=20 > Adolf >>>>>>>> I also read through the INSTALL file in the pakfire directory and it= said the following were required. >>>>>>>>=20 >>>>>>>> Requirements: >>>>>>>> * Python 2.6 or greater (not Python 3.x) >>>>>>>> * python-argsparse (included in Python 2.7) >>>>>>>> * libcap >>>>>>>> * libsolv >>>>>>>> * xz >>>>>>>> * beecrypt (requires libgomp) >>>>>>>> * popt >>>>>>>> * libelf >>>>>>>> * elfutils >>>>>>> This is old and I will remove this as soon as possible :) >>>>>>>> I don't have beecrypt or libgomp installed and not available from Ar= ch Linux except from their AUR which requires me to build them. >>>>>>>>=20 >>>>>>>> Also the mention of not Python 3.x as that is all that is available = on Arch Linux. >>>>>>>>=20 >>>>>>>> Are the above requirements correct or out of date and should be igno= red? >>>>>>> Please ignore. If configure went through without complaining, you hav= e everything you need. >>>>>>> What I find very interesting are those SQL errors. When Pakfire start= s, it is creating an internal SQLite database to store package information an= d other things=E2=80=A6 And it looks like the database is there, but the sche= ma is not being created. And even weirder is that Pakfire does not abort ther= e=E2=80=A6 >>>>>>> Which versions of libarchive and SQLite do you have? >>>>>> sqlite 3.43.0 >>>>>> libarchive 3.7.1 >>>>> I have libarchive 3.6.2 and sqlite 3.40.1, but I don=E2=80=99t think th= ere are any significant differences here. >>>>> Could you please pull again and check if the message about the missing = file is gone? >>>> Did the pull, then re-ran the whole build instruction set again. I didn'= t do a sudo make uninstall first. >>>>=20 >>>> Result was exactly the same error message. Nothing changed. >>>>=20 >>>> sudo pakfire-builder build beep/beep.nm >>>> Database Error: SQL logic error: no such table: settings in "SELECT val = FROM settings WHERE key =3D ?" >>>> Database Error: SQL logic error: no such table: settings in "SELECT val = FROM settings WHERE key =3D ?" >>>> Package Database: testing 100% | 1.6M 00:00 >>>> Could not read next file: /var/lib/pakfire/local/ipfire/3: Cannot stat >>>> OSError: [Errno 25] Inappropriate ioctl for device >>>>=20 >>>> The above exception was the direct cause of the following exception: >>>>=20 >>>> Traceback (most recent call last): >>>> File "/usr/bin/pakfire-builder", line 437, in >>>> c() >>>> File "/usr/bin/pakfire-builder", line 212, in __call__ >>>> ret =3D args.func(args) >>>> ^^^^^^^^^^^^^^^ >>>> File "/usr/bin/pakfire-builder", line 233, in _build >>>> p =3D self.pakfire(ns) >>>> ^^^^^^^^^^^^^^^^ >>>> File "/usr/bin/pakfire-builder", line 194, in pakfire >>>> p =3D pakfire.Pakfire(arch=3Dns.arch, conf=3Dc, logger=3Dlogger.log) >>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>>> SystemError: returned a result with an except= ion set >>>>=20 >>>> Regards, >>>> Adolf. >>>>> -Michael >>>>>>=20 >>>>>> Adolf. >>>>>>> -Michael >>>>>>>> Regards, >>>>>>>>=20 >>>>>>>> Adolf. >>>>>>>>=20 >>>>>>>> On 02/09/2023 12:26, Adolf Belka wrote: >>>>>>>>> Hi Michael, >>>>>>>>>=20 >>>>>>>>> On 02/09/2023 11:29, Michael Tremer wrote: >>>>>>>>>> Hello Adolf, >>>>>>>>>>=20 >>>>>>>>>> Have you been running this as root? I am not sure how well this is= all working as an unprivileged user at the moment. I think there might be a = little bit of work ahead to make it work well. >>>>>>>>> Yes, I was using an unprivileged user. I always do that unless the = instructions say to use sudo or if the program comes back and says it must be= run with root privileges. Or if I know that it has to be run with sudo like = make install. >>>>>>>>>=20 >>>>>>>>> So tried it again with sudo and the error message was exactly the s= ame. >>>>>>>>>=20 >>>>>>>>> Tried >>>>>>>>> sudo pakfire-builder --debug build beep/beep.nm >>>>>>>>>=20 >>>>>>>>> and the error message was exactly the same. >>>>>>>>>=20 >>>>>>>>> Tried sudo -s to get a root prompt and then ran the pakfire-builder= command and exactly the same error message. >>>>>>>>>=20 >>>>>>>>> As the first part of the error message is >>>>>>>>>=20 >>>>>>>>> Database Error: SQL logic error: >>>>>>>>>=20 >>>>>>>>> I confirmed that I do have sqlite installed. >>>>>>>>>=20 >>>>>>>>> There is also a line in the error >>>>>>>>>=20 >>>>>>>>> Could not read next file: /var/lib/pakfire/local/ipfire/3: Cannot s= tat >>>>>>>>>=20 >>>>>>>>> I checked and there is no pakfire directory under /var/lib/ >>>>>>>>> Is there supposed to be? Maybe something is not working right durin= g the pakfire build on my system. The build is working okay but maybe somethi= ng that is required for the execution is not being correctly setup. >>>>>>>>>=20 >>>>>>>>> What files should the pakfire make install be creating? >>>>>>>>>=20 >>>>>>>>> Regards, >>>>>>>>> Adolf >>>>>>>>>=20 >>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> Otherwise, you can add =E2=80=94-debug to the command line and it = should write more detailed output into the journal. >>>>>>>>>>=20 >>>>>>>>>> Best, >>>>>>>>>> -Michael >>>>>>>>>>=20 >>>>>>>>>>> On 1 Sep 2023, at 17:37, Adolf Belka w= rote: >>>>>>>>>>>=20 >>>>>>>>>>> Hi Michael, >>>>>>>>>>>=20 >>>>>>>>>>> On 01/09/2023 18:23, Michael Tremer wrote: >>>>>>>>>>>> Hello, >>>>>>>>>>>> Yes, I believe this is what it does on my system. So this is alr= ight. >>>>>>>>>>>> Did you try the other commands? >>>>>>>>>>> Just tried them and got the following errors:- >>>>>>>>>>>=20 >>>>>>>>>>> pakfire-builder build beep/beep.nm >>>>>>>>>>> Database Error: SQL logic error: no such table: settings in "SELE= CT val FROM settings WHERE key =3D ?" >>>>>>>>>>> Database Error: SQL logic error: no such table: settings in "SELE= CT val FROM settings WHERE key =3D ?" >>>>>>>>>>> Package Database: testing 100% | 1.6M 00:00 >>>>>>>>>>> Package Database: bootstrap 100% | 2.1M 00:00 >>>>>>>>>>> Could not read next file: /var/lib/pakfire/local/ipfire/3: Cannot= stat >>>>>>>>>>> OSError: [Errno 25] Inappropriate ioctl for device >>>>>>>>>>>=20 >>>>>>>>>>> The above exception was the direct cause of the following excepti= on: >>>>>>>>>>>=20 >>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>> File "/usr/bin/pakfire-builder", line 437, in >>>>>>>>>>> c() >>>>>>>>>>> File "/usr/bin/pakfire-builder", line 212, in __call__ >>>>>>>>>>> ret =3D args.func(args) >>>>>>>>>>> ^^^^^^^^^^^^^^^ >>>>>>>>>>> File "/usr/bin/pakfire-builder", line 233, in _build >>>>>>>>>>> p =3D self.pakfire(ns) >>>>>>>>>>> ^^^^^^^^^^^^^^^^ >>>>>>>>>>> File "/usr/bin/pakfire-builder", line 194, in pakfire >>>>>>>>>>> p =3D pakfire.Pakfire(arch=3Dns.arch, conf=3Dc, logger=3Dlog= ger.log) >>>>>>>>>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>>>>>>>>>> SystemError: returned a result with an= exception set >>>>>>>>>>>=20 >>>>>>>>>>> Regards, >>>>>>>>>>> Adolf. >>>>>>>>>>>> -Michael >>>>>>>>>>>>> On 1 Sep 2023, at 17:21, Adolf Belka = wrote: >>>>>>>>>>>>>=20 >>>>>>>>>>>>> Hi Michael, >>>>>>>>>>>>>=20 >>>>>>>>>>>>> On 01/09/2023 16:39, Michael Tremer wrote: >>>>>>>>>>>>>> Hello Adolf, >>>>>>>>>>>>>>> On 17 Aug 2023, at 12:20, Adolf Belka wrote: >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>> Hi Michael, >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>> When I built pakfire I just installed the programs that were = flagged up as missing during the configure section. >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>> I have now gone through the filenames you listed from debian = and eventually found what the equivalent packages that contain those are call= ed in Arch Linux (most were easy but a few were convoluted to find). >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>> Everything was already installed on my laptop except for libl= zma-dev which is lzlib in Arch Linux. >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>> Just to check, I installed lzlib and re-did the make check an= d the same problems occurred. >>>>>>>>>>>>>> The configure script will complain if something is missing as = none of the dependencies are optional. >>>>>>>>>>>>>> Apologies for taking so long to reply, but I should finally ha= ve a fix for the test suite: >>>>>>>>>>>>>> https://git.ipfire.org/?p=3Dpakfire.git;a=3Dcommitdiff;h=3D9ee= f0cb603bc51a5b34f042fced6e4d0bfa8d9d8=20 >>>>>>>>>>>>>> https://git.ipfire.org/?p=3Dpakfire.git;a=3Dcommitdiff;h=3Dc54= bafa7e74dbcb5b07bafe8fadf2ca830fd93d7=20 >>>>>>>>>>>>>> Please just run =E2=80=9Cgit pull=E2=80=9D, then =E2=80=9Cmake= =E2=80=9D again and you should have a few tests pass. Not all of them are pas= sing at the moment. >>>>>>>>>>>>> This time 20 passed out of 28 >>>>>>>>>>>>>=20 >>>>>>>>>>>>> PASS: tests/libpakfire/main >>>>>>>>>>>>> PASS: tests/libpakfire/arch >>>>>>>>>>>>> PASS: tests/libpakfire/archive >>>>>>>>>>>>> FAIL: tests/libpakfire/build >>>>>>>>>>>>> FAIL: tests/libpakfire/cgroup >>>>>>>>>>>>> PASS: tests/libpakfire/compress >>>>>>>>>>>>> PASS: tests/libpakfire/config >>>>>>>>>>>>> PASS: tests/libpakfire/db >>>>>>>>>>>>> PASS: tests/libpakfire/dependencies >>>>>>>>>>>>> PASS: tests/libpakfire/digest >>>>>>>>>>>>> PASS: tests/libpakfire/downloader >>>>>>>>>>>>> PASS: tests/libpakfire/file >>>>>>>>>>>>> FAIL: tests/libpakfire/jail >>>>>>>>>>>>> PASS: tests/libpakfire/key >>>>>>>>>>>>> FAIL: tests/libpakfire/makefile >>>>>>>>>>>>> PASS: tests/libpakfire/package >>>>>>>>>>>>> PASS: tests/libpakfire/packager >>>>>>>>>>>>> PASS: tests/libpakfire/parser >>>>>>>>>>>>> PASS: tests/libpakfire/progressbar >>>>>>>>>>>>> PASS: tests/libpakfire/repo >>>>>>>>>>>>> PASS: tests/libpakfire/snapshot >>>>>>>>>>>>> PASS: tests/libpakfire/string >>>>>>>>>>>>> FAIL: tests/libpakfire/util >>>>>>>>>>>>> FAIL: tests/python/keys.py >>>>>>>>>>>>> FAIL: tests/python/jail.py >>>>>>>>>>>>> FAIL: tests/python/package.py >>>>>>>>>>>>> PASS: tests/python/progressbar.py >>>>>>>>>>>>> PASS: tests/python/test.py >>>>>>>>>>>>>=20 >>>>>>>>>>>>>> If pakfire-builder =E2=80=94-help runs fine, you could check o= ut the IPFire 3.x repository and run this: >>>>>>>>>>>>>> git clone https://git.ipfire.org/pub/git/ipfire-3.x.git >>>>>>>>>>>>>> cd ipfire-3.x >>>>>>>>>>>>>> pakfire-builder build beep/beep.nm >>>>>>>>>>>>>> Please let me know how that is going. >>>>>>>>>>>>>> -Michael >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>> Regards, >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>> Adolf. >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>> On 17/08/2023 12:18, Adolf Belka wrote: >>>>>>>>>>>>>>>> Hi Michael, >>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>> I did a clean new install and took the log files from the te= sts/libpakfire and tests/python directories. >>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>> The only one that passed this time was the test.py from the = tests/python directory. All others failed. >>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>> I have archived them into an xz file that is attached. >>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>> Regards, >>>>>>>>>>>>>>>> Adolf. >>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>> On 17/08/2023 11:38, Michael Tremer wrote: >>>>>>>>>>>>>>>>> Hello Adolf, >>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>> Thank you very much for the quick feedback. >>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>> After running =E2=80=9Cmake check=E2=80=9D, could you email= me the =E2=80=9C*.log=E2=80=9D files in the test/libpakfire directory? Let= =E2=80=99s see what is going wrong there. For me a few tests fail, but a few = should run just fine. >>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>> -Michael >>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> On 17 Aug 2023, at 10:36, Adolf Belka wrote: >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> I am using Arch Linux. >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> I already do some building of my bacula client package on = my laptop so it has the normal build tools installed. >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> To get autogen.sh to run I had to install intltool >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> To get configure to run I had to additionally install. >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> asciidoc, python-py-cpuinfo, python-pykerberos, python-sys= temd, python-tornado and libsolv >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> After that configure ran without any problems, as did make. >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> Although make check is in brackets I gave it a go but got = 1 pass and 26 fails. The only pass was for test.py >>>>>>>>>>>>>>>>>> I ran the make check a second time and then two passed - t= est.py and progressbar.py >>>>>>>>>>>>>>>>>> Further running of make check didn't change anything. >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> make install went fine and after that I can run pakfire-bu= ilder --help and get the help screen. >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> Regards, >>>>>>>>>>>>>>>>>> Adolf. >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> On 16/08/2023 17:29, Michael Tremer wrote: >>>>>>>>>>>>>>>>>>> Hello everyone, >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> For our meet-up that is starting soon, I would like every= one to have a working installation of Pakfire - our new build system. >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> I am not sure yet in what way we are going to use it, but= generally there will be an intro for everyone who hasn=E2=80=99t had one yet= , and maybe we even get a chance to update a few packages of the distribution= or something=E2=80=A6 >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> Because I don=E2=80=99t know which distributions you are = using, and because we don=E2=80=99t have any packages for any major distribut= ion just yet, I would like to ask everyone to install Pakfire manually on the= ir systems in advance of our meet-up, so that we can start straight away. We = should also use the time to find any issues that might occur on other distrib= utions than Debian which is what I have been using. >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> Please find the source here: https://git.ipfire.org/?p=3D= pakfire.git;a=3Dsummary >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> On Debian, I have to install these packages as dependenci= es (yes it is quite a lot): >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> * asciidoc, autoconf, automake, bison, build-essential, f= lex, intltool, libarchive-dev, libcap-dev, libcurl4-openssl-dev, libelf-dev, = libgpgme-dev, libjson-c-dev, liblzma-dev, libmagic-dev, libmount-dev, libnl-3= -dev, libnl-route-3-dev, libpcre2-dev, libpython3-dev, libseccomp-dev, libsol= v-dev, libsqlite3-dev, libssl-dev, libsystemd-dev, libtool, libzstd-dev, pkg-= config, python3-cpuinfo, python3-kerberos, python3-tornado, python3-psutil, p= ython3-setproctitle, uuid-dev >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> I have no idea what the package names will be for your di= stribution, but I am sure you will all figure it out :) >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> You can use the usual three-clause build process after ge= nerating the configure script: >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> ./autogen.sh >>>>>>>>>>>>>>>>>>> ./configure =E2=80=94-prefix=3D/usr =E2=80=94-syscon= fdir=3D/etc =E2=80=94-enable-debug >>>>>>>>>>>>>>>>>>> make >>>>>>>>>>>>>>>>>>> (make check) >>>>>>>>>>>>>>>>>>> make install >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> After that, you should be able to run pakfire-builder =E2= =80=94-help. >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> Please let me know if that works for you up to this point= and please file a bug if changes are required to make Pakfire work on your d= istribution. >>>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>>> All the best, >>>>>>>>>>>>>>>>>>> -Michael >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>> --=20 >>>>>>>>>>>>>>>>>> Sent from my laptop >>>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>>> --=20 >>>>>>>>>>>>>>> Sent from my laptop >>>>>>>>>>>>>>>=20 >>>>>>>>>>>>>=20 >>>>>>>>>>>>> --=20 >>>>>>>>>>>>> Sent from my laptop >>>>>>>>>>>=20 >>>>>>>>>>> --=20 >>>>>>>>>>> Sent from my laptop >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>=20 >>>>>>>>=20 >>>>>>>> --=20 >>>>>>>> Sent from my laptop >>>>>>>>=20 >>>>>>=20 >>>>>> --=20 >>>>>> Sent from my laptop >>>>=20 >>>> --=20 >>>> Sent from my laptop >>>=20 >>>=20 >>=20 >=20 > --=20 > Sent from my laptop --===============7521163569263476786==--