http://www.perlmonks.org?node_id=645733


in reply to What is the format of a .packlist file for a PPM repository?

Is it complaining about lack of a packlist file, or a package.lst, file? If it's the latter, such a file is an xml file listing all packages available in the repository, obtained from the information in the ppd files. The format of this (and some other summary files used by ppm) is described in the documentation for PPM::Make::RepositorySummary, which can be used to generate such files.
  • Comment on Re: What is the format of a .packlist file for a PPM repository?

Replies are listed 'Best First'.
Re^2: What is the format of a .packlist file for a PPM repository?
by LittleGreyCat (Scribe) on Oct 18, 2007 at 15:15 UTC
    I used the gear wheel button (PPM Preferences) to add a new local repository called 'Dubious' which pointed to a folder which didn't have any PPM files in it.

    The diagnostic messages displayed at the botom under the Status tab were:
    "Synchronizing Database ... done
    Downloading Dubious packlist ... not found
    Downloading Dubious packlist ... not found
    Downloading Dubious packlist ... done
    Synchronizing Database ... done"

    So the diagnostic message is complaining about a 'packlist' and the nearest I can find to this is a '.packlist' file.
    Also, if I add a '.packlist' file the error message does not appear.
    Strangely, if I remove the '.packlist' file again the errror message does not re-occur so it may be something that only happens when you first contact a new repository; this seems to take me backwards instead of forwards.

    Thank you for your suggestion - I will follow that up and see if it makes any difference.

    Bottom line still is that the old command line 'ppm' worked fine with my repository but the new GUI 'ppm' does not.

    Curse you, WIMP!

    Oh, my aching head!
    I have tested further, and after the initial complaint about the Packlist not being found, when you start the GUI again, and when you turn the Repositories on and off, it just says:
    "Synchronizing Database ...
    Downloading LocalD packlist ... not modified
    Synchronizing Database done"

    This is with the '.packlist' file removed from LocalD.

    This means in turn that me "result" of adding a '.packlist' file and not seeing the error messages is totally meaningless.
    Oh, sh*t

    I think I'll just go away in a corner and sob quietly.

    Nothing succeeds like a budgie with no teeth.

      The messages from ppm:

      Synchronizing Database ... done
      Downloading Dubious packlist ... not found
      Downloading Dubious packlist ... not found
      Downloading Dubious packlist ... done
      Synchronizing Database ... done
      are perhaps misleading; ppm is looking for either a package.lst or a package.xml file, not a literal "packlist" file. If it doesn't find either of these summary files, it will fetch and parse the ppd files within this directory, if there are any. The summary files are just there to save ppm downloading and parsing individual ppd files.

      Try making a local repository and populating it with some ppd files, and the corresponding .tar.gz or .zip archives referenced in the CODEBASE element, and see if that works. You can use the rep_summary script of PPM-Make to generate the summary files, or alternatively, run the following script:

      use strict; use warnings; use File::Spec; my $ppm_dir = 'C:\Temp\ppms'; opendir(my $dir, $ppm_dir) or die qq{Cannot opendir $ppm_dir: $!}; my @ppds = grep /\.ppd$/, readdir $dir; closedir $dir; my $pack = File::Spec->catfile($ppm_dir, 'package.lst'); open(my $pack_fh, '>', $pack) or die qq{Cannot open $pack for writing: $!}; print $pack_fh <<"END"; <?xml version="1.0" encoding="UTF-8"?> <REPOSITORYSUMMARY> END for my $ppd (@ppds) { open(my $ppd_fh, File::Spec->catfile($ppm_dir, $ppd)) or die qq{Cannot read $ppd under $ppm_dir: $!}; while (<$ppd_fh>) { next if $_ =~ /\?xml version/; print $pack_fh " $_"; } close $ppd_fh; } print $pack_fh qq{</REPOSITORYSUMMARY>\n}; close $pack_fh;
      to generate the package.lst file; the directory of the repository in this script is specified as $ppm_dir.

        Just ran the code you supplied and I now have a 'package.lst' file.

        The repository is now working, although I am tracking down a few unusual aspects, such as why none of my statistics add up.

        I have:

        13520 '.ppd' files
        13517 instances of the "<SOFTPKG" string within ".ppd" files
        13402 packages known to PPM (as declared on the bottom line of the GUI)
        6088 filtered packages listed with the "Show All" filter (!)

        I am a lot further along and a lot happier, but there are obviously still a few unaswered questions!

        Nothing succeeds like a budgie with no teeth.
        "The messages from ppm are perhaps misleading; ppm is looking for either a package.lst or a package.xml file, not a literal "packlist" file. If it doesn't find either of these summary files, it will fetch and parse the ppd files within this directory, if there are any. The summary files are just there to save ppm downloading and parsing individual ppd files. Try making a local repository and populating it with some ppd files, and the corresponding .tar.gz or .zip archives referenced in the CODEBASE element, and see if that works."

        This is what is confusing me.
        I have a fully populated local PPM repository which works fine with the command line version of 'ppm' (in my 817 install).
        When I point the 822 GUI at the same repository it does not appear to find anything to add to the list of packages waiting to be installed.

        I may not be driving the GUI correctly but I expected all the packages in the PPM repository to be shown in the list of packages available to be installed.

        Is it perhaps like the command line 'ppm' where you have to search on key words before anything appears?

        Nothing succeeds like a budgie with no teeth.
Re^2: What is the format of a .packlist file for a PPM repository?
by LittleGreyCat (Scribe) on Oct 18, 2007 at 15:36 UTC
    Randyk

    That looks like the business - I'll give it a try!

    Ooops! Perl can't find the code!
    "Can't locate PPM/Make/RepositorySummary.pm in @INC (@INC contains: D:/Perl/site/lib D:/Perl/lib"

    No worries, I'll install it...using.....ppm.......

    My bucket!!!!
    Look!!!
    A hole!!!!

    Nothing succeeds like a budgie with no teeth.