1
0
forked from perl/perl-Gedcom
Files
perl-Gedcom/perl-Gedcom.spec

149 lines
6.2 KiB
RPMSpec

#
# spec file for package perl-Gedcom
#
# Copyright (c) 2025 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define cpan_name Gedcom
Name: perl-Gedcom
Version: 1.220.0
Release: 0
# 1.22 -> normalize -> 1.220.0
%define cpan_version 1.22
License: SUSE-Public-Domain
Summary: Interface to genealogy GEDCOM files
URL: https://metacpan.org/release/%{cpan_name}
Source0: https://cpan.metacpan.org/authors/id/P/PJ/PJCJ/%{cpan_name}-%{cpan_version}.tar.gz
Source1: cpanspec.yml
Source100: README.md
BuildArch: noarch
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(Pod::Markdown)
BuildRequires: perl(Test::Pod)
BuildRequires: perl(Text::Soundex)
Requires: perl(Text::Soundex)
Provides: perl(Gedcom) = %{version}
Provides: perl(Gedcom::CGI) = %{version}
Provides: perl(Gedcom::Comparison) = %{version}
Provides: perl(Gedcom::Event) = %{version}
Provides: perl(Gedcom::Family) = %{version}
Provides: perl(Gedcom::Grammar) = %{version}
Provides: perl(Gedcom::Grammar_5_5) = %{version}
Provides: perl(Gedcom::Grammar_5_5_1) = %{version}
Provides: perl(Gedcom::Individual) = %{version}
Provides: perl(Gedcom::Item) = %{version}
Provides: perl(Gedcom::LifeLines) = %{version}
Provides: perl(Gedcom::Record) = %{version}
Provides: perl(Gedcom::WebServices)
%undefine __perllib_provides
Recommends: perl(Date::Manip)
Recommends: perl(Parse::RecDescent)
Recommends: perl(Roman)
%{perl_requires}
%description
This module provides for manipulation of GEDCOM files. GEDCOM is a format
for storing genealogical information designed by The Church of Jesus Christ
of Latter-Day Saints (http://www.lds.org). Information about GEDCOM used to
be available as a zip file at
ftp://gedcom.org/pub/genealogy/gedcom/gedcom55.zip. That may still be the
case, but it seems to be password protected now. However, the document in
that archive seems to be available in a somewhat more accessible format at
https://chronoplexsoftware.com/gedcomvalidator/gedcom/gedcom-5.5.pdf.
Requirements:
Perl 5.005 or later
ActivePerl5 Build Number 520 or later has been reported to work
Optional Modules:
Date::Manip.pm to work with dates
Text::Soundex.pm to use soundex
Parse::RecDescent.pm to use lines2perl
Roman.pm to use the LifeLines function roman from lines2perl
The GEDCOM format is specified in a grammar file (gedcom-5.5.grammar).
Gedcom.pm parses the grammar which is then used to validate and allow
manipulation of the GEDCOM file. I have only used Gedcom.pm with versions
5.5 and 5.5.1 of the GEDCOM grammar, which I had to modify slightly to
correct a few errors. The advantage of this approach is that Gedcom.pm
should be useful if the GEDCOM grammar is ever updated. It also made the
software easier to write, and probably more dependable too. I suppose this
is the virtue of laziness shining through.
The vice of laziness is also shining brightly - I need to document how to
use this module in much greater detail. This is happening - this release
has more documentation than the previous ones - but if you would like
information feel free to send me mail or better still, ask on the mailing
list.
This module provides some functions which work over the entire GEDCOM file,
such as reformatting dates, renumbering entries and ordering the entries.
It also allows access to individuals, and then to relations of individuals,
for example sons, siblings, spouse, parents and so forth.
The distribution includes a lines2perl program to convert LifeLines
programs to Perl. The program works, but it has a few rough edges, and some
missing functionality. I'll be working on it when it hits the top of my
TODO list.
There is now an option for read only access to the GEDCOM file. Actually,
this doesn't stop you changing or writing the file, but it does parse the
GEDCOM file lazily, meaning that only those portions of the GEDCOM file
which are needed will be read. This can provide a substantial saving of
time and memory providing that not too much of the GEDCOM file is read. If
you are going to read the whole GEDCOM file, this mode is less efficient
unless you do some manual housekeeping.
Should you find this software useful, or if you make changes to it, or if
you would like me to make changes to it, please send me mail. I would like
to have some sort of an idea of the use this software is getting. Apart
from being of interest to me, this will guide my decisions when I feel the
need to make changes to the interface.
There is a low volume mailing list available for discussing the use of Perl
in conjunction with genealogical work. This is an appropriate forum for
discussing Gedcom.pm and if you use or are interested in this module I
would encourage you to join the list. To subscribe send an empty message to
perl-gedcom-subscribe@perl.org.
To store my genealogy I wrote a syntax file (gedcom.vim) and used vim
(http://www.vim.org) to enter the data, and Gedcom.pm to validate and
manipulate it. I find this to be a nice solution.
%prep
%autosetup -n %{cpan_name}-%{cpan_version} -p1
find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path "*/script/*" ! -path "*/scripts/*" ! -name "configure" -print0 | xargs -0 chmod 644
%build
perl Makefile.PL INSTALLDIRS=vendor
%make_build
%check
make test
%install
%perl_make_install
%perl_process_packlist
%perl_gen_filelist
%files -f %{name}.files
%doc CHANGES ged gedcom-5.5.1.grammar gedcom-5.5.grammar gedcom-5.5-strict.grammar gedcom_compare gedcom.vim lines2perl parse_grammar README.md royal.ged tkged TODO
%changelog