Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 548812 - net-p2p/classified-ads is internet messaging system done right - new package
Summary: net-p2p/classified-ads is internet messaging system done right - new package
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: Normal enhancement (vote)
Assignee: Antti Järvinen
URL: http://katiska.org/classified_ads/
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-05-06 22:47 UTC by Antti Järvinen
Modified: 2015-07-13 07:11 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
new ebuild file for classified ads version 0.07 (classified-ads-0.07.ebuild,971 bytes, text/plain)
2015-05-06 22:47 UTC, Antti Järvinen
Details
metadata file for classified ads (metadata.xml,1.58 KB, text/xml)
2015-05-06 22:48 UTC, Antti Järvinen
Details
build log (classified-ads-0.07_build.log,10.55 KB, text/x-log)
2015-05-29 04:43 UTC, Ian Delaney (RETIRED)
Details
Version of the ebuild with clearer dependencies (classified-ads-0.07.ebuild,988 bytes, text/plain)
2015-06-10 16:44 UTC, Antti Järvinen
Details
Ebuild with support for test suite and doxygen-generated documentation (classified-ads-0.07.ebuild,1.91 KB, text/plain)
2015-06-15 22:01 UTC, Antti Järvinen
Details
Classified ads ebuild file with latest corrections (classified-ads-0.07.ebuild,2.02 KB, text/plain)
2015-06-24 19:43 UTC, Antti Järvinen
Details
Metadata for classified ads, with some corrections (metadata.xml,1.70 KB, text/xml)
2015-06-24 19:44 UTC, Antti Järvinen
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Antti Järvinen 2015-05-06 22:47:47 UTC
Created attachment 402796 [details]
new ebuild file for classified ads version 0.07

Dear Sirs,

I'm attaching an ebuild file for "Classified ads" in a hope that others too 
will find it useful. It is my own attempt to handle human-to-human
communications inside internet, from end-users perspective. As a long-time
internet-user this is to-day more or less the way I see how messaging
should happen. Features of the program include, but are not limited to:
 * Sending and retrieving messages public and private, between humans
   or inside groups
 * No need for server-side support of any kind
 * Minimal hassle for the end-user
 * No need for contracts with any service-operators, not counting your ISP
 * Identification of message senders while allowing some withdrawal of
   personal details
 * Text-based search of public posting
 * Unfortunately no text-based or mobile UI yet, only Qt.
 * Early stage of development ; while basic functions seem to be all right
   there is surely bugs, "features" and 2 million fatal errors. 

As developer and user of the program I naturally could maintain it for gentoo
too. In attached (incomplete) metadata.xml the maintainer section is
empty. 

--
Antti Järvinen, Oulu, Finland
Comment 1 Antti Järvinen 2015-05-06 22:48:33 UTC
Created attachment 402798 [details]
metadata file for classified ads
Comment 2 Brian Evans (RETIRED) gentoo-dev 2015-05-07 02:00:37 UTC
CC'ing proxy-maintainers as the poster is the program author.

Perhaps you can work with them to get this in portage.
Comment 3 Ian Delaney (RETIRED) gentoo-dev 2015-05-20 07:46:48 UTC
yes, once the author declares an interest in being proxy maintainer, well that's what the proxy-maint herd is here for. It appears to be who will make the first move. Currently the status of assignee is maintainer-wanted@gentoo.org and that's a very deep hole.  As an author he all but qualifies as a credible candidate.
Comment 4 Ian Delaney (RETIRED) gentoo-dev 2015-05-29 04:43:04 UTC
Created attachment 404238 [details]
build log

On running the ebuild with deps emerged:

$ ebuild classified-ads-0.07.ebuild clean compile

yields several lines of error pointing mainly to the header /usr/include/natpmp.h

[I] net-libs/libnatpmp
     Available versions:  20110808-r1 20130911 (~)20131126 (~)20140401-r1 {static-libs}
     Installed versions:  20140401-r1(11:50:56 29/05/15)(-static-libs)

2014 04 01 is over a year old now.  I suspect this library has moved on and you have probably utilised the source form the repo. If so, this libnatpmp requires either a release or a new snapshot.  The maintainer of this package is blueness@gentoo.org.
Comment 5 Antti Järvinen 2015-06-10 16:44:53 UTC
Created attachment 404908 [details]
Version of the ebuild with clearer dependencies

Please test this new version of the ebuild file. This is exactly same version than previously, it builds the same sw version but now it requires same versions of libnatpmp and miniupnpc that I have in my box (where the sw is compiling and working as expected).

If you experience problems like reported by Ian above, please attach contents of the files /usr/include/miniupnpc/declspec.h and /usr/include/declspec.h into your comment because mismatch between these files is suspected cause for previously reported compilation woes. 

Thanks in advance,

--
Antti Järvinen
Comment 6 Ian Delaney (RETIRED) gentoo-dev 2015-06-12 04:33:36 UTC
between net-libs/libnatpmp
     Available versions:  20130911 (~)20131126 (~)20140401-r1

the package builds with 20130911 (~)20131126

making a need for a bordering of < 20140401-r1, optionally ! 20140401-r1

        =net-libs/libnatpmp-20130911
        <net-libs/libnatpmp-20140401

While this is adequate to add to portage as is, by your own hand, you have included a doc build and a testsuite.  I normally commit fully prepared and equipped ebuilds to provide all a package offers.  Can you prepare a test phase for classified-ads-0.07/test> The running of testca.pro for me yielded 

./testca.pro: line 1: SOURCES: command not found
./testca.pro: line 21: HEADERS: command not found
./testca.pro: line 42: CONFIG: command not found
./testca.pro: line 43: CONFIG: command not found
./testca.pro: line 44: QT: command not found
./testca.pro: line 45: LIBS: command not found
./testca.pro: line 46: unix:INCLUDEPATH: command not found
./testca.pro: line 47: QMAKE_CXXFLAGS: command not found

and the required qmake-qt4 is not present in my system. I am not versed in qt. Likely I missed where it says how to run the testsuite but I expected what I did try to work.

Similarly there is a doc build by doxygen.

work/classified-ads-0.07/doc
Doxyfile  ads-search.png  interactions.txt  profilecomment.png  scenarios.txt.

If you REALLY don't wish for these to be made part of the ebuild, your call, otherwise I would work to have them added.
Comment 7 Antti Järvinen 2015-06-15 22:01:54 UTC
Created attachment 405204 [details]
Ebuild with support for test suite and doxygen-generated documentation

Test suite and docs definitely make sense, please find attached ebuild-version that lets you USE="doc" and have FEATURES="test". Miniupnpc versions are now limited at both ends. This is tested with libnatpmp-20140401-r1 and miniupnpc-1.8.
Comment 8 Ian Delaney (RETIRED) gentoo-dev 2015-06-17 05:28:35 UTC
(In reply to Antti Järvinen from comment #7)
> Created attachment 405204 [details]
> Ebuild with support for test suite and doxygen-generated documentation
> 
> Test suite and docs definitely make sense, 

indeed
> please find attached ebuild-version that lets you USE="doc" and have 
> FEATURES="test". Miniupnpc
> versions are now limited at both ends. This is tested with
> libnatpmp-20140401-r1 and miniupnpc-1.8.

Ok well done for getting a working ebuild. Now follows the critique, however, do consider it a learning exercise. As a total beginner you are expected to have the following require 'correction'. The corrections are mostly to have it comply with the protocol of ebuild writing gentoo style. \

1. The SRC_URI. It need be split to 2 lines. It is far too long for a single line which are preferred to keep to >=80 chars or so.

SRC_URI="https://github.com/operatornormal/classified-ads/archive/${PV}.tar.gz -> classified-ads-${PV}.tar.gz
        https://github.com/operatornormal/classified-ads/blob/graphics/preprocessed.tar.gz?raw=true -> classified-ads-graphics-${PV}.tar.gz"

classified-ads == ${PN} so it can be reduced to 

SRC_URI="https://github.com/operatornormal/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
        https://github.com/operatornormal/${PN}/blob/graphics/preprocessed.tar.gz?raw=true -> ${PN}-graphics-${PV}.tar.gz"

and even then both are still very long. You could make a new var to capture part of the string, something like   
REDUCE_VAR="operatornormal/${PN}" but that in itself is somewhat ugly. Above will suffice for now.

2. All test deps can be set in one single ( ):

test? ( dev-libs/libgcrypt
                dev-qt/qttest
                sys-devel/gdb )

Note the indentation, simply a recommended norm.

3.      # preprocessed graphics are unpacked into wrong directory
        # so lets move them into correct location:

leaves me wondering why not shift them to the right place in the actual package, or just add them. Your call really. A more succinct alternative;

mv ../ui/{turt-transparent-128x128.png,turt558.png} ui/
or seeing that's all there is
mv ../ui/* ui/
and an ebuild writing rule has this require `|| die` since it an exe file in the installed system.

4. Doc build.  This ought be shifted to the compile phase

src_compile() {
        qt4-r2_src_compile
        use doc && sh -c "cd doc ; doxygen"
}

While it works, gentoo style writing would have it more like:

src_compile() {
        qt4-r2_src_compile
        if use doc; then
             cd doc || die
             doxygen || die
        fi
}
or 
            doc/doxygen || die

So it's a protocol of ebuild writing style. The requirement of the `|| die` necessitates us of a full if then statement.

5. Test phase
echo test on becomes 'einfo "test on"' and it is a courtesy msg, so it is optional
cd test -> cd test || die
cmds of `mv' require || die
echo test done result = $result -> einfo "test done, result = $result" and again it is an optional courtesy msg. einfo is merely a wrapper of echo.

6. doc install. The helper func dohtml is to be deprecated.
use doc && dohtml -r -> use doc && dodoc -r doc/doxygen.generated/html/

Any space in ebuilds such as
        dev-libs/qjson need be a tab space.  The spaces in the ebuild fluctuate randomly between spaces and tabs.
Look at the qatool repoman. It checks for syntax style and outputs style violations and others under the banner of qa.

In my system I end up with

   RDEPEND.suspect               2
   net-p2p/classified-ads/classified-ads-0.07.ebuild: 'test?' USE conditional in RDEPEND
   net-p2p/classified-ads/classified-ads-0.07.ebuild: 'app-doc/doxygen[dot]'
  dependency.missingslot        3
   net-p2p/classified-ads/classified-ads-0.07.ebuild: RDEPEND: 'dev-libs/openssl' matches more than one slot, please specify an explicit slot and/or use the := or :* slot operator
   net-p2p/classified-ads/classified-ads-0.07.ebuild: RDEPEND: 'dev-libs/libgcrypt' matches more than one slot, please specify an explicit slot and/or use the := or :* slot operator
   net-p2p/classified-ads/classified-ads-0.07.ebuild: RDEPEND: 'dev-qt/qttest' matches more than one slot, please specify an explicit slot and/or use the := or :* slot operator
  ebuild.notadded               1
   net-p2p/classified-ads/classified-ads-0.07.ebuild
  metadata.warning              1
   net-p2p/classified-ads/metadata.xml: unused local USE-description: 'classified-ads'

So RDEPEND="${DEPEND}" causes this trouble all the time. the content of doc? and test? are to be unique to DEPEND. Clearly distinguish runtime deps from build deps and have them listed in the ebuild accordingly.

For now skip over the dependency.missingslot since it has status of a warning not a fatal error. The unused local USE-description: 'classified-ads' shows this use flag entry in metadata.xml is superfluous.

Other than it's 'good'.
Comment 9 Antti Järvinen 2015-06-24 19:43:33 UTC
Created attachment 405698 [details]
Classified ads ebuild file with latest corrections

Ian Delaney wrote:
> Now follows the critique, however..

No prob, thank you for you patience with my reading skills, or lack of.. :)

> 1. The SRC_URI. It need be split to 2 lines.

Ok. still looks kind of ugly. 

> 2. All test deps can be set in one single ( ):

Ok. To silence repoman whining about slots in DEPENDS, I've
specified slot 0 to some libraries there, still seems to be 
compiling without emerging any libraries for second time..

> 3.      # preprocessed graphics are unpacked into wrong directory
>         # so lets move them into correct location:
>
> leaves me wondering why not shift them

Not changed ; Long story but different linux distributions want bitmaps
packaged differently and I'm here re-using the method from rpm packaging.
Portage system seems to handle multiple source packages slightly
differently when compared to rpmbuild ; I'd still like to use 
the same source package(s), so this is why I'm moving the files. 

Greased the copying part anyway a bit, there is no need to list
individual files. 

> 4. Doc build.  This ought be shifted to the compile phase

Ok. 

> 5. Test phase

Ok, or heavily modified. The "echo" parts were more or less debugging
output for me while writing the script. 

> 6. doc install. The helper func dohtml is to be deprecated.

Ok, now "dodoc" is used and seems to do its job. 

>In my system I end up with
>
>   RDEPEND.suspect               2
..

Ok, now I have separate DEPEND/RDEPEND. 

Repoman is mostly quiet. Also changed metadata.xml slightly. Still not
sure about contents about metadata.xml yet but if this ever gets
included, the content is due to change then anyway..
Comment 10 Antti Järvinen 2015-06-24 19:44:42 UTC
Created attachment 405700 [details]
Metadata for classified ads, with some corrections

Here is also updated metadata.xml as repoman had issues with it.
Comment 11 Ian Delaney (RETIRED) gentoo-dev 2015-06-29 05:40:46 UTC
SRC_URI; you can't always avoid all ugliness. Live with it.

See I have made minor syntax touch ups / improvements. They are trivialities;
The deps behind ' test? ' simply go in 1 per line.
I re-ordered so the src_compile() appears prior to src_test(). 
make in `make || die` is a helper function which does not require the `|| die`
Generally use of `die` doesn't require a "msg" but they're nice msgs so I left them.

dodoc -r doc/doxygen.generated/html/*. The * is redundant. The '-r' will recursively sweep thru the /html folder.

metadata.xml; The use flags "test, doc" are global flags in portage and need no entries.  The only change was to remove the un-needed flag "classified-ads".

I've included ~arm  in KEYWORDS however I shall leave this open under IN_PROGRESS in case this is a carry over from a copy paste. You need to have personally runtested this in/on an arm board. If not say here and I shall delete it.

*classified-ads-0.07 (29 Jun 2015)

  29 Jun 2015; Ian Delaney <idella4@gentoo.org> +classified-ads-0.07.ebuild,
  +metadata.xml:
  new package, ebuild authored by upstream author with support from myself,
  added under the proxy-maint herd and author is set to proxy maintain his
  package via the herd. ebuild submitted via bug #548812
Comment 12 Antti Järvinen 2015-07-05 19:46:02 UTC
> The deps behind ' test? ' simply go in 1 per line.

Very fine. 

> I re-ordered so the src_compile() appears prior to src_test(). 

Yes, 

> make in `make || die` is a helper function which does not require 
> the `|| die`
> Generally use of `die` doesn't require a "msg" but they're nice 
> msgs so I left them.

Well ; if they appear in output too.. or hopefully not as they're generally
all error messages. 

> dodoc -r doc/doxygen.generated/html/*. The * is redundant. The 
> '-r' will recursively sweep thru the /html folder.

Yes, 

> metadata.xml; The use flags "test, doc" are global flags in 
> portage and need no entries.  The only change was to remove 
> the un-needed flag "classified-ads".

Ah, misunderstanding. 

> I've included ~arm  in KEYWORDS however I shall leave this 
> open under IN_PROGRESS in case this is a carry over from a 
> copy paste. You need to have personally runtested this in/on 
> an arm board. If not say here and I shall delete it.

Yes, good point. I know the software *builds* on arm but I have not
yet seen it run on actual arm board. So this is a question mark. Amd64 and
32-bit intel I have seen personally and know that they work so I'll
take the arm away from version I'll store for future use until
there is confirmed use from additional hw architectures ; there would
potentially be half-dozen different architectures to support. 

> *classified-ads-0.07 (29 Jun 2015)
>
>  29 Jun 2015; Ian Delaney <idella4@gentoo.org> +classified-ads-0.07.ebuild,
>  +metadata.xml:
>  new package, ebuild authored by upstream author with support from myself,
>  added under the proxy-maint herd and author is set to proxy maintain his
>  package via the herd. ebuild submitted via bug #548812

Oh wow, thank you for everything. I'll need to copy the ebuild also 
back to version control in its current form..

..also how does process continue regarding possible future releases?
They also go through similar "new ebuild" ticket?
Comment 13 Ian Delaney (RETIRED) gentoo-dev 2015-07-13 07:11:29 UTC
  13 Jul 2015; Ian Delaney <idella4@gentoo.org> classified-ads-0.07.ebuild:
  remove keyword arm for now due to lack of required pre-testing

(In reply to Antti Järvinen from comment #12)

> Oh wow, thank you for everything. I'll need to copy the ebuild also 
> back to version control in its current form..
> 

yw.

> ..also how does process continue regarding possible future releases?
> They also go through similar "new ebuild" ticket?

new ebuild is simply a category. Since it's now in portage it's no longer new.

1. To have further arches added to this ebuild, make a bug of a 'keyword request' type. Simply peruse other similar bugs in bugzilla and copy the style or syntax. Add a line or 2 to outline a rationale for arch teams to add the keywords to your package.  CC me so I can CC arches or ask another dev to do for you. CC arches is restricted to those with dev status or with extended permissions. If you REALLY want these just ask and I can ask to get them added on your behalf.
2. For future releases, or bumps, simply make out a bug of type REQUEST in the textbox entitled 'Keywords:' Same deal; peruse bugzilla for request for version bumps and add the proxy-maint herd in CC. Any member of proxy-mainainters project can commit the bump for you.