Solved alarm-clock-applet

OP
OP
ILUXA

ILUXA

Aspiring Daemon

Thanks: 372
Messages: 603

#26
So now I know all package dependencies with
pkg info -R deskutils/alarm-clock-applet
Code:
deps {
  atk {
  origin = "[FILE]accessibility/atk[/FILE]";
  version = "2.18.0";
  }
  gtk-update-icon-cache {
  origin = "[FILE]graphics/gtk-update-icon-cache[/FILE]";
  version = "2.24.29";
  }
  pango {
  origin = "[FILE]x11-toolkits/pango[/FILE]";
  version = "1.38.0";
  }
  glib {
  origin = "[FILE]devel/glib20[/FILE]";
  version = "2.46.2";
  }
  gdk-pixbuf2 {
  origin = "[FILE]graphics/gdk-pixbuf2[/FILE]";
  version = "2.32.3";
  }
}


shlibs_required [
  "libgtk-x11-2.0.so.0",
  "libpangoft2-1.0.so.0",
  "libnotify.so.4",
  "libgobject-2.0.so.0",
  "libglib-2.0.so.0",
  "libpango-1.0.so.0",
  "libfreetype.so.6",
  "libgconf-2.so.4",
  "libcairo.so.2",
  "libxml2.so.2",
  "libunique-1.0.so.0",
  "libgdk-x11-2.0.so.0",
  "libintl.so.8",
  "libatk-1.0.so.0",
  "libgstreamer-1.0.so.0",
  "libgmodule-2.0.so.0",
  "libfontconfig.so.1",
  "libgdk_pixbuf-2.0.so.0",
  "libgio-2.0.so.0",
  "libpangocairo-1.0.so.0",
]
So I need to search what ports provide these libs...

grep libnotify.so.4 /usr/ports/*/*/pkg-plist
did not help --
Code:
[b]/sbin/grep: Argument list too long.[/b]
to get rid of "Argument list too long" I need to increase ARG_MAX,
but to increase ARG_MAX i need to recompile kernel.
too bad that there is no equivalent for yum whatprovides / apt-file find.
Maybe I'm doing something wrong and there is a much easier way to do it?
I know that I can search all these libs via Google, but ...

If I'm trying to do something stupid, don't blame me) I wrote that I've never done this kind of stuff.

Makefile
Code:
# $FreeBSD$

PORTNAME=       alarm-clock-applet
PORTVERSION=    0.3.4
CATEGORIES=     deskutils
MASTER_SITES=   http://launchpad.net/alarm-clock/trunk/0.3.4/+download/

MAINTAINER=     ...
COMMENT=        Alarm Clock is a fully-featured alarm clock

LICENSE=        GPLv2

GNU_CONFIGURE=  yes
USES=           gmake
INSTALLS_ICONS= yes

.include <bsd.port.mk>
is fine with ports-mgmt/portlint, and can be successfully built and installed.


And why in Chapter 3. Quick Porting there are nothing about how to specify
Code:
LIB_DEPENDS=
RUN_DEPENDS=
Maybe it's unnecessary?
 
Last edited:

uzsolt

Well-Known Member

Thanks: 49
Messages: 260

#27
If you can build alarm-clock-applet you've installed all needed libraries. So you can run pkg which /usr/local/lib/libnotify*. See pkg-which().

Which package contains specified file? As I know it's not implemented. But maybe you can use for searching lib: pkg search -Q shared-libs-provided -g \* (with grep, less or similar). See pkg-search().
 
OP
OP
ILUXA

ILUXA

Aspiring Daemon

Thanks: 372
Messages: 603

#28
FINALLY!! =)

i think ‐I‐ we did it!)

pkg which helped to find out what packages provides necessary libs.

and ports-mgmt/porttools, especially port test utility from this package, helped me A LOT.
I think, that I wouldn't done this without it, VERY usefull.

here is my Makefile
Code:
# $FreeBSD$

PORTNAME=		alarm-clock-applet
PORTVERSION=		0.3.4
CATEGORIES=		deskutils
MASTER_SITES=		http://launchpad.net/alarm-clock/trunk/0.3.4/+download/

MAINTAINER=		...
COMMENT=		Alarm Clock is a fully-featured alarm clock

LICENSE=		GPLv2
LICENSE_FILE=		${WRKSRC}/COPYING

LIB_DEPENDS=		libgtk-x11-2.0.so:${PORTSDIR}/x11-toolkits/gtk20 \
			libpangoft2-1.0.so:${PORTSDIR}/x11-toolkits/pango \
			libnotify.so:${PORTSDIR}/devel/libnotify \
			libgobject-2.0.so:${PORTSDIR}/devel/glib20 \
			libglib-2.0.so:${PORTSDIR}/devel/glib20 \
			libpango-1.0.so:${PORTSDIR}/x11-toolkits/pango \
			libfreetype.so:${PORTSDIR}/print/freetype2 \
			libgconf-2.so:${PORTSDIR}/devel/gconf2 \
			libcairo.so:${PORTSDIR}/graphics/cairo \
			libxml2.so:${PORTSDIR}/textproc/libxml2 \
			libunique-1.0.so:${PORTSDIR}/x11-toolkits/unique \
			libgdk-x11-2.0.so:${PORTSDIR}/x11-toolkits/gtk20 \
			libintl.so:${PORTSDIR}/devel/gettext-runtime \
			libatk-1.0.so:${PORTSDIR}/accessibility/atk \
			libgstreamer-1.0.so:${PORTSDIR}/multimedia/gstreamer1 \
			libgmodule-2.0.so:${PORTSDIR}/devel/glib20 \
			libfontconfig.so:${PORTSDIR}/x11-fonts/fontconfig \
			libgdk_pixbuf-2.0.so:${PORTSDIR}/graphics/gdk-pixbuf2 \
			libgio-2.0.so:${PORTSDIR}/devel/glib20 \
			libpangocairo-1.0.so:${PORTSDIR}/x11-toolkits/pango

GNU_CONFIGURE=		yes
USES=			gmake gettext-tools
USE_GNOME=		gconf2
INSTALLS_ICONS=		yes

OPTIONS_DEFINE=		NLS
NLS_USES=		gettext-runtime
NLS_CONFIGURE_ENABLE=	nls
GCONF_SCHEMAS=		alarm-clock.schemas

.include <bsd.port.mk>
 
OP
OP
ILUXA

ILUXA

Aspiring Daemon

Thanks: 372
Messages: 603

#30
but also i don't think that it will be installed two times.
so it just cosmetic issue imho.
any way, now it's already uploaded it to bugzilla, so if they'll mark it as error -- i'll fix it.

but on the other hand, what, if tomorrow libgdk-x11-2.0.so will become libgdk-x12-2.0.so =)) for example,
but libgdk-x11-2.0.so willl be nowhere in dependencies?
 

uzsolt

Well-Known Member

Thanks: 49
Messages: 260

#31
but also i don't think that it will be installed two times.
Yes, doesn't install two times :)

so it just cosmetic issue imho.
Not just cosmetic. It's important that Makefile will simpliest: it's easier to review, maintain, update, etc.
Check (for example) multimedia/mpv's Makefile: only one LIB_DEPENDS (multimedia/ffmpeg), but:
Code:
$ readelf -d /usr/local/bin/mpv | grep Shared | wc -l
  29
 

sidetone

Aspiring Daemon

Thanks: 343
Messages: 975

#32
I think it's better how it is, because otherwise it pulls in a lot of extra dependencies that are not library related, and it's not organized to what's essentially needed. However, a metaport solely of gtk libraries would work, which I don't think there is one.
 

getopt

Aspiring Daemon

Thanks: 312
Messages: 515

#33
Had a look at the build log https://bugs.freebsd.org/bugzilla/attachment.cgi?id=177190
asking myself if this is the reason that the port still is not approved:
====> Running Q/A tests (stage-qa)
Error: /usr/local/bin/alarm-clock-applet is linked to /usr/local/lib/libgstreamer-1.0.so.0 from multimedia/gstreamer1 but it is not declared as a dependency
Warning: you need LIB_DEPENDS+=libgstreamer-1.0.so:multimedia/gstreamer1
 
OP
OP
ILUXA

ILUXA

Aspiring Daemon

Thanks: 372
Messages: 603

#34
Thanks, if to be honest I didn't fully test tobik's improved version, i'm very lazy :D
But now it is fixed, I'll upload fixed .shar soon.


UPD:
But I think It is not an error!

Because there is
Code:
USE_GSTREAMER1=         yes
in Makefile!

So maybe it is a synth issue?


Also we may only guess, it will be superb if ports tree maintainers tell what is a problem.
For now they are very silent… may be they are just shy? :D
 

marino

Daemon

Thanks: 436
Messages: 1,091

#35
what's more likely? A synth "issue" or the proposed port has a problem?
Or asking another way: how many times have you seen an issue actually attributed to synth?

My point is: look inside. Assuming this is a synth issue is very premature.
 

marino

Daemon

Thanks: 436
Messages: 1,091

#36
the log advises:
Code:
LIB_DEPENDS+=libgstreamer-1.0.so:multimedia/gstreamer1
with USE_GSTREAMER1=yes, did you check make -V LIB_DEPENDS?
 
OP
OP
ILUXA

ILUXA

Aspiring Daemon

Thanks: 372
Messages: 603

#37
LIB_DEPENDS could be trimmed by using the appropriate USE_* flags
So it seems that USE_* flag should replace LIB_DEPENDS ?

if there is
Code:
USE_GSTREAMER1=         yes
in Makefile, it will install gstreamer1 (as far as I know).
So why synth say that I still need to add gstreamer1 to LIB_DEPENDS, if all dependencies are OK?
That was my point.


the log advises:
Code:
LIB_DEPENDS+=libgstreamer-1.0.so:multimedia/gstreamer1
with USE_GSTREAMER1=yes, did you check make -V LIB_DEPENDS?



Guys, if anybody wants to continue this port — you are welcome, send a message to me.
 

marino

Daemon

Thanks: 436
Messages: 1,091

#38
well, you are saying that adding "USE_GSTREAMER1=yes" will cause gstreamer to be added to LIB_DEPENDS, but obviously that's not happening.

LIB_DEPENDS means that the package will require the library package to be installed. USE_GSTREAMER1 may just be setting the BUILD_DEPENDS.

Why do you think USE_GSTREAMER1 creates the LIB_DEPENDS? Did you look at the documentation in Mk/ or are you basically guessing?
I grepped Mk/bsd.gstreamer.mk and I didn't see any LIB_DEPENDS.

I think you need to specify it explicitly.

P.S. I don't think anyone will continue your work, you should see it to completion.
 
OP
OP
ILUXA

ILUXA

Aspiring Daemon

Thanks: 372
Messages: 603

#39
I've uploaded new .shar to bugzilla, with
Code:
LIB_DEPENDS=            libfontconfig.so:x11-fonts/fontconfig \
                        libfreetype.so:print/freetype2 \
                        libnotify.so:devel/libnotify \
                        libunique-1.0.so:x11-toolkits/unique \
                        libgstreamer-1.0.so:multimedia/gstreamer1
we'll see… But it seems OK now, portlint — OK, port test — OK, make describe — OK.
 
Top