Patchwork [2/2] libdbm-sqlite-perl: add version 1.40

login
register
mail settings
Submitter Hongxu Jia
Date Aug. 8, 2013, 9:01 a.m.
Message ID <9facc9593dc27237a07ebd620b9d7c9d9541f20a.1375952210.git.hongxu.jia@windriver.com>
Download mbox | patch
Permalink /patch/55319/
State New
Headers show

Comments

Hongxu Jia - Aug. 8, 2013, 9:01 a.m.
DBD::SQLite is a Perl DBI driver for SQLite, that includes the entire
thing in the distribution. So in order to get a fast transaction capable
RDBMS working for your perl project you simply have to install this
module, and nothing else.

There is a perl script for test, while variable PERL_DBM_TEST is assigned
the value '1', the script will be added, and you could run the script to
test whether DBD::SQLite is working properly.

[YOCTO #4128]

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 .../perl/files/sqlite-perl-test.pl                 | 69 ++++++++++++++++++++++
 .../perl/libdbm-sqlite-perl_1.40.bb                | 40 +++++++++++++
 2 files changed, 109 insertions(+)
 create mode 100755 meta/recipes-extended/perl/files/sqlite-perl-test.pl
 create mode 100644 meta/recipes-extended/perl/libdbm-sqlite-perl_1.40.bb
Olof Johansson - Aug. 8, 2013, 9:06 a.m.
On 13-08-08 11:01 +0200, Hongxu Jia wrote:
>  create mode 100644 meta/recipes-extended/perl/libdbm-sqlite-perl_1.40.bb

The recipe is called libdbm-sqlite-perl, but the perl module is
called DBD::SQLite. Is that intentional, and if so, why?

Regards,
Hongxu Jia - Aug. 8, 2013, 9:13 a.m.
On 08/08/2013 05:06 PM, Olof Johansson wrote:
> On 13-08-08 11:01 +0200, Hongxu Jia wrote:
>>   create mode 100644 meta/recipes-extended/perl/libdbm-sqlite-perl_1.40.bb
> The recipe is called libdbm-sqlite-perl, but the perl module is
> called DBD::SQLite. Is that intentional, and if so, why?
'DBD::SQLite' is a name used in perl, see
http://search.cpan.org/~ishigaki/DBD-SQLite-1.40/lib/DBD/SQLite.pm 
<http://search.cpan.org/%7Eishigaki/DBD-SQLite-1.40/lib/DBD/SQLite.pm>

libdbm-sqlite-perl is the name which references the rule in
oe-core (such as libconvert-asn1-perl_0.26.bb, libtimedate-perl_2.30.bb)

//Hongxu
> Regards,
Hongxu Jia - Aug. 8, 2013, 9:17 a.m.
On 08/08/2013 05:06 PM, Olof Johansson wrote:
> On 13-08-08 11:01 +0200, Hongxu Jia wrote:
>>   create mode 100644 meta/recipes-extended/perl/libdbm-sqlite-perl_1.40.bb
> The recipe is called libdbm-sqlite-perl, but the perl module is
> called DBD::SQLite. Is that intentional, and if so, why?
I know what your mean, we should rename the recipe:
s/libdbm-sqlite-perl_1.40.bb/libdbd-sqlite-perl_1.40.bb/

//Hongxu
> Regards,
Ross Burton - Aug. 8, 2013, 10:43 a.m.
On 8 August 2013 10:01, Hongxu Jia <hongxu.jia@windriver.com> wrote:
> DBD::SQLite is a Perl DBI driver for SQLite, that includes the entire
> thing in the distribution. So in order to get a fast transaction capable
> RDBMS working for your perl project you simply have to install this
> module, and nothing else.

What's the rationale for putting this into oe-core, verses meta-oe or
even starting a meta-perl?

Ross
Hongxu Jia - Aug. 8, 2013, 11:06 a.m.
On 08/08/2013 06:43 PM, Burton, Ross wrote:
> On 8 August 2013 10:01, Hongxu Jia <hongxu.jia@windriver.com> wrote:
>> DBD::SQLite is a Perl DBI driver for SQLite, that includes the entire
>> thing in the distribution. So in order to get a fast transaction capable
>> RDBMS working for your perl project you simply have to install this
>> module, and nothing else.
> What's the rationale for putting this into oe-core, verses meta-oe or
> even starting a meta-perl?
It seems DBI is a commonly-used perl database support package,
and work with multiple DBDs, the DBD::driver is based on actual
database. We get sqlite in oe-core, so put them in oe-core.

//Hongxu
> Ross
Ross Burton - Aug. 8, 2013, 11:12 a.m.
On 8 August 2013 12:06, Hongxu Jia <hongxu.jia@windriver.com> wrote:
> It seems DBI is a commonly-used perl database support package,
> and work with multiple DBDs, the DBD::driver is based on actual
> database. We get sqlite in oe-core, so put them in oe-core.

There are many perl packages that are commonly-used but we don't put
them all into oe-core.  I'm really thinking that we need to start a
meta-perl for the majority of Perl libraries, apart from the ones that
are needed in oe-core.

Ross
Hongxu Jia - Aug. 8, 2013, 11:35 a.m.
On 08/08/2013 07:12 PM, Burton, Ross wrote:
> On 8 August 2013 12:06, Hongxu Jia <hongxu.jia@windriver.com> wrote:
>> It seems DBI is a commonly-used perl database support package,
>> and work with multiple DBDs, the DBD::driver is based on actual
>> database. We get sqlite in oe-core, so put them in oe-core.
> There are many perl packages that are commonly-used but we don't put
> them all into oe-core.  I'm really thinking that we need to start a
> meta-perl for the majority of Perl libraries, apart from the ones that
> are needed in oe-core.
Great, how about create a new layer named 'meta-perl', we sould do:
- put these perl database libraries to that layer as a start;
- and than move other perl libraries already existed in oe-core
   to that layer, it includes:
   * meta/recipes-extended/perl/
   * meta/recipes-devtools/perl/
- except the perl libraries which used for lsb test, we should keep
   them where they are;
   * meta/recipes-lsb4/perl/

//Hongxu

> Ross
Olof Johansson - Aug. 8, 2013, 1:06 p.m.
On 13-08-08 11:17 +0200, Hongxu Jia wrote:
> On 08/08/2013 05:06 PM, Olof Johansson wrote:
> > The recipe is called libdbm-sqlite-perl, but the perl module is
> > called DBD::SQLite. Is that intentional, and if so, why?
>
> I know what your mean, we should rename the recipe:
> s/libdbm-sqlite-perl_1.40.bb/libdbd-sqlite-perl_1.40.bb/

Yes, exactly. Sorry if I was unclear.
Olof Johansson - Aug. 8, 2013, 1:08 p.m.
On 13-08-08 13:35 +0200, Hongxu Jia wrote:
> Great, how about create a new layer named 'meta-perl', we sould do:
...
> - and than move other perl libraries already existed in oe-core
>    to that layer, it includes:
>    * meta/recipes-extended/perl/
>    * meta/recipes-devtools/perl/

I assume perl module recipes already in oecore are there for a
reason, and we should perhaps avoid moving them, and just let
meta-perl depend on oecore. Right?

But I like the idea of a meta-perl for my personal projects...
Would be happy to help!
Ross Burton - Aug. 8, 2013, 1:13 p.m.
On 8 August 2013 14:08, Olof Johansson <olof.johansson@axis.com> wrote:
> I assume perl module recipes already in oecore are there for a
> reason, and we should perhaps avoid moving them, and just let
> meta-perl depend on oecore. Right?

Yeah.  It's worth reviewing them, but generally perl modules in
oe-core are there before other parts of oe-core depend on them.

Ross

Patch

diff --git a/meta/recipes-extended/perl/files/sqlite-perl-test.pl b/meta/recipes-extended/perl/files/sqlite-perl-test.pl
new file mode 100755
index 0000000..40f5916
--- /dev/null
+++ b/meta/recipes-extended/perl/files/sqlite-perl-test.pl
@@ -0,0 +1,69 @@ 
+#! /usr/bin/env perl
+#
+# 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 2 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, write to the Free Software Foundation.
+#
+# Copyright (C) 2013 Wind River Systems, Inc.
+#
+# - It tests DBI and DBD::SQLite could work correctly which means one could
+#   manipulate sqlite database in perl
+# - The test includes create/insert/update/delete/select, the five important
+#   things one can do with a table
+use DBI;
+
+sub execute_sql {
+    my $dbh = $_[0];
+    my $sql = $_[1];
+    my $sth = $dbh->prepare($sql)
+        or die "Couldn't prepare statement: " . $dbh->errstr;
+    $sth->execute();
+    print "$sql\n";
+    return $sth;
+}
+
+sub select_all {
+    my $dbh = $_[0];
+    my $table = $_[1];
+    my $sth = &execute_sql($dbh, "Select * from $table");
+
+    print "-----------------------------------\n";
+    while (@data = $sth->fetchrow_array()) {
+        my $name = $data[0];
+        my $id = $data[1];
+        print "$name: $id\n";
+    }
+    print "\n";
+
+    $sth->finish;
+    return $sth;
+}
+
+# A private, temporary in-memory database is created for the connection.
+# This in-memory database will vanish when the database connection is
+# closed. It is handy for your library tests.
+my $dbfile = ":memory:";
+my $dbh = DBI->connect("DBI:SQLite:dbname=$dbfile","","")
+        or die "Couldn't connect to database: " . DBI->errstr;
+print "Connect to SQLite's in-memory database\n";
+
+&execute_sql($dbh, "Create table tbl1(name varchar(10), id smallint)");
+&execute_sql($dbh, "Insert into tbl1 values('yocto',10)");
+&execute_sql($dbh, "Insert into tbl1 values('windriver', 20)");
+&select_all($dbh, "tbl1");
+
+&execute_sql($dbh, "Update tbl1 set name = 'oe-core' where id = 10");
+&execute_sql($dbh, "Delete from tbl1 where id = 20");
+&select_all($dbh, "tbl1");
+
+$dbh->disconnect;
+print "Test Success\n"
diff --git a/meta/recipes-extended/perl/libdbm-sqlite-perl_1.40.bb b/meta/recipes-extended/perl/libdbm-sqlite-perl_1.40.bb
new file mode 100644
index 0000000..f3a05d2
--- /dev/null
+++ b/meta/recipes-extended/perl/libdbm-sqlite-perl_1.40.bb
@@ -0,0 +1,40 @@ 
+SUMMARY = "A Perl DBI driver for SQLite"
+DESCRIPTION = "DBD::SQLite is a Perl DBI driver for SQLite, that includes the entire \
+thing in the distribution. So in order to get a fast transaction capable \
+RDBMS working for your perl project you simply have to install this \
+module, and nothing else. \
+"
+HOMEPAGE = "http://search.cpan.org/~ishigaki/DBD-SQLite/"
+
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+DEPENDS += "libdbi-perl-native"
+RDEPENDS_${PN} += "libdbi-perl \
+                   sqlite3 \
+                   perl-module-constant \
+                   perl-module-locale \
+                   perl-module-tie-hash \
+"
+PR = "r0"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1726e2117494ba3e13e1c3d93f795360"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/I/IS/ISHIGAKI/DBD-SQLite-${PV}.tar.gz \
+           file://sqlite-perl-test.pl \
+"
+
+SRC_URI[md5sum] = "b9876882186499583428b14cf5c0e29c"
+SRC_URI[sha256sum] = "21fb65e740b6265512c82232b4ad8f75c19ac84c216830112656274eb8e375fb"
+
+S = "${WORKDIR}/DBD-SQLite-${PV}"
+
+inherit cpan
+
+BBCLASSEXTEND = "native"
+
+do_install_append() {
+    if [ ${PERL_DBM_TEST} = "1" ]; then
+        install -m 755 -D ${WORKDIR}/sqlite-perl-test.pl ${D}/${bindir}/sqlite-perl-test.pl
+    fi
+}
+