[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#824967: RFS: budgie-desktop/10.2.5-1 [ITP]



Many thanks Paul for your review - even though you do not wish to sponsor this, your review has been very valuable.

I've addressed your comments as discussed below.

Looking on the mentors / mypackages webpage it says that the watch file I've included does not work.  This is very strange because I ran a uscan and it correctly downloaded the upstream release file:

uscan --force-download --verbose
uscan info: uscan (version 2.16.2ubuntu3) See uscan(1) for help
uscan info: Scan watch files in .
uscan info: Check debian/watch and debian/changelog in .
uscan info: package="budgie-desktop" version="10.2.5-1" (as seen in debian/changelog)
uscan info: package="budgie-desktop" version="10.2.5" (no epoch/revision)
uscan info: ./debian/changelog sets package="budgie-desktop" version="10.2.5"
uscan info: Process ./debian/watch (package=budgie-desktop version=10.2.5)
uscan info: Last orig.tar.* tarball version (from debian/changelog): 10.2.5
uscan info: Last orig.tar.* tarball version (dversionmangled): 10.2.5
uscan info: Requesting URL:
   https://github.com/solus-project/budgie-desktop/releases
uscan info: Matching pattern:
   (?:(?:https://github.com)?\/solus\-project\/budgie\-desktop\/releases)?.*/?(\d{2}\.\d.\d)\.tar\.xz
uscan info: Found the following matching hrefs on the web page (newest first):
   /solus-project/budgie-desktop/releases/download/v10.2.5/budgie-desktop-10.2.5.tar.xz (10.2.5) index=10.2.5-4
   /solus-project/budgie-desktop/releases/download/v10.2.4/budgie-desktop-10.2.4.tar.xz (10.2.4) index=10.2.4-4
   /solus-project/budgie-desktop/releases/download/v10.2.3/budgie-desktop-10.2.3.tar.xz (10.2.3) index=10.2.3-4
   /solus-project/budgie-desktop/releases/download/v10.2.2/budgie-desktop-10.2.2.tar.xz (10.2.2) index=10.2.2-4
   /solus-project/budgie-desktop/releases/download/v10.2.1/budgie-desktop-10.2.1.tar.xz (10.2.1) index=10.2.1-4
uscan info: Matching target for downloadurlmangle: https://github.com/solus-project/budgie-desktop/releases/download/v10.2.5/budgie-desktop-10.2.5.tar.xz
uscan info: Upstream URL (downloadurlmangled):
   https://github.com/solus-project/budgie-desktop/releases/download/v10.2.5/budgie-desktop-10.2.5.tar.xz
uscan info: Newest upstream tarball version selected for download (uversionmangled): 10.2.5
uscan info: Download filename (filenamemangled): budgie-desktop-10.2.5.tar.xz
uscan: Newest version of budgie-desktop on remote site is 10.2.5, local version is 10.2.5
uscan info:    => Package is up to date for from
      https://github.com/solus-project/budgie-desktop/releases/download/v10.2.5/budgie-desktop-10.2.5.tar.xz
uscan info:    => Forcing download as requested
uscan info: Downloading upstream package: budgie-desktop-10.2.5.tar.xz
uscan info: Requesting URL:
   https://github.com/solus-project/budgie-desktop/releases/download/v10.2.5/budgie-desktop-10.2.5.tar.xz
uscan info: Successfully downloaded package: budgie-desktop-10.2.5.tar.xz
uscan info: Start checking for common possible upstream OpenPGP signature files
uscan info: End checking for common possible upstream OpenPGP signature files
uscan info: Missing OpenPGP signature.
uscan info: New orig.tar.* tarball version (oversionmangled): 10.2.5
uscan info: Executing internal command:
   mk-origtargz --package budgie-desktop --version 10.2.5 --compression gzip --directory .. --copyright-file debian/copyright ../budgie-desktop-10.2.5.tar.xz
uscan info: New orig.tar.* tarball version (after mk-origtargz): 10.2.5
uscan info: Successfully symlinked ../budgie-desktop-10.2.5.tar.xz to ../budgie-desktop_10.2.5.orig.tar.xz.
uscan info: Scan finished


The remaining review comments and how I addressed them now follows:

> Does upstream have an opinion on having older versions of Budgie in
> Debian stable, which gets supported for 5 years now that we have LTS.

I've asked this question upstream: https://github.com/solus-project/budgie-desktop/issues/446

In summary - users are requested to upgrade.  Moving forward, the maintainer intends to branch the project at the next major release and will backport stuff where necessary (e.g. critical issues).  This will be very useful for Debian to identify issues to include in updates.

> I would suggest using diffoscope to compare the broken build with the
> working one, you might discover the reason for this brokenness.

This did not reveal any specific build issues.


> The package fails to build because gtk+3.0 3.20.5-1 is not yet built in Debian:

I presume this is a transition issue for Sid as it moves to GTK+3.20


> There are many hardcoded library dependencies, they shouldn't be
> needed as ${shlibs:Depends} will take care of them, unless these
> libraries are loaded using dlopen instead of linking. If they are
> loaded with dlopen, a ${dlopen:Depends} substvar and a script to
> generate it would be better than hardcoding them.

The dependencies are been cleaned up.  No libraries are included.  The minimal necessary dependencies have been left - these are required for the desktop system to start successfully

> debian/copyright is missing some copyright holders.

This has been substantially revised

> I think the ftp-masters will want debian/copyright to be more specific
> about which files are LGPL and which are GPL.

The copyright now identifies LGPL vs GPL.  I also asked upstream https://github.com/solus-project/budgie-desktop/issues/447 and upstream recommend the following:
grep -R "Lesser General" | cut -d : -f 1 | uniq | grep -v LICENSE

> I note that the upstream tarball contains generated files (*.c *.vapi
> *.css *.png *.html). I personally think these need to be removed from
> the upstream tarball and VCS if present in either of those and always
> created at build time. If upstream doesn't want to do that an
> acceptable workaround would be to remove these files in `debian/rules
> clean` and in `debian/rules build` before autoreconf/configure are
> run. Alternatively you could use the gitub-generated tarballs which
> only contain what is in git. Looks like you will need to package some
> more build-deps here though, like gulp-sass.

I asked this upstream: https://github.com/solus-project/budgie-desktop/issues/448

In the debian/clean I've removed the build artifacts that upstream have recommended here https://github.com/solus-project/budgie-desktop/issues/446#issuecomment-221378660

> The imports/natray/ and gvc/ directories appear to be embedded code
> copies from one of GNOME/cinnamon/MATE/cairo-dock-plug-ins/something.
> They should be removed from all of these including budgie and packaged
> separately. Until that happens the security team need to be notified
> about the embedded code copy, which they track.

> $ apt-file search -iIdsc na-tray
> https://wiki.debian.org/EmbeddedCodeCopies

I asked about this via a hangout session with upstream.  The maintainer pointed me at this https://bugzilla.redhat.com/show_bug.cgi?id=1170875  - TL;DR  - copied code is allowed due to no stable API

In summary "
There's no system version -- gnome-control-center, gnome-settings-daemon and gnome-shell all bundle libgnome-volume-control using git submodules:

https://mail.gnome.org/archives/commits-list/2012-November/msg06793.html
https://bugzilla.gnome.org/show_bug.cgi?id=686488

(just checked and indeed there is no standalone libgnome-volume-control lib).

Ah, OK, that's why I couldn't find it. According to [1] the submodule does not have a stable api and is supposed to be "linked" wherever it is needed. So including it in budgie-desktop is allowed by the packaging guidelines, as a "copy library". [1] https://mail.gnome.org/archives/gnomecc-list/2012-October/msg00003.html"

> Please add DEP-3 headers to the patches, particularly the
> Origin/Forwarded headers should point at URLs.

> The first line of nm-applet.diff looks a bit strange.

This has been done.

> The debian-watch-file-is-missing lintian tag should not be overridden
> since upstream has a git repo with tags and tarballs that can be used
> with uscan and debian/watch.

override has been removed

> Please file bugs on lintian about the
> dep5-copyright-license-name-not-unique and postinst-must-call-ldconfig
> false positives.

This has been removed since the package has been reworked.

> The binary-without-manpage lintian tag should not be overridden since
> it is true. Just ignore it until a manual page exists.

Override has been removed

> It would be great if upstream could sign their commits, tags and
> releases with OpenPGP:

Upstream are already signing their commits.  Tags/releases are not going to be signed.

> Why do you disable the ibus systray icon?

I've removed this gsettings override

> I'm not sure the gnome-settings overrides are appropriate.

This has been tidied - only one vital override exists - this is needed to display the GNOME appmenu correctly in the window decoration.

> I wonder if the gsettings overrides should be renamed to
> budgie-desktop.gsettings-override so it is only installed for one
> package?

This has been renamed

> Usually in debian/control the version numbers in dependency relations
> have a space before them:

Space has been added.

>I like to wrap-and-sort the debian/ directory using this command:

> wrap-and-sort --short-indent --wrap-always --sort-binary-packages
> --trailing-comma

Done.

> I'm not sure that Section: gnome is appropriate, could you explain
> your reasoning here?

I've moved to misc since I didnt see any other obvious Sid section available.  Please advise if there is a better more appropriate section for GNOME/GTK+3 based desktop systems such as budgie-desktop

> The Vcs-Browser field is reserved for the Debian packaging VCS, not
> upstream. See below for a solution for upstream.

Removed

> I would suggest setting the Homepage here instead of to github:

> https://solus-project.com/budgie/

Home-page updated.

> I note there are several stamp files that probably aren't meant to be
> in the upstream tarball:

This does not any material difference - these files are not installed - see the maintainers comments here: https://github.com/solus-project/budgie-desktop/issues/448

> There are some files in the upstream VCS that are missing from the
> upstream tarball, I wonder if that is intentional.

Apparently yes - according to the maintainer as linked above.

> A typo in theme/README.md: obejct

This is not installed - source only issue.

> Please add some upstream metadata: https://wiki.debian.org/UpstreamMetadata

Added upstream metadata


>$ sudo apt-get install -t experimental check-all-the-things
> $ check-all-the-things

On the whole these findings were based on C issues - however this is due as far as I can gather due to the Vala compiler - so not something upstream can deal with.

> # Not sure why but autodep8 doesn't like your debian/control:
> $ autodep8
> grep-dctrl: debian/control:48: expected a colon.

This seems to be fixed now.

> # These should be created at build time instead
> $ find -type f \( -iname '*.png' -o -iname '*.gif' -o -iname '*.jpg'
> -o -iname '*.jpeg' \) -exec grep -iF inkscape {} +
> <lots>

Maintainer has indicated otherwise  - see link above

> $ codespell --quiet-level=3
> <lots>

Vala to C compiler issues - not an upstream matter.


On 22 May 2016 at 06:22, Paul Wise <pabs@debian.org> wrote:
On Sun, May 22, 2016 at 6:38 AM, foss.freedom wrote:

> https://mentors.debian.net/debian/pool/main/b/budgie-desktop/budgie-desktop_10.2.5-1.dsc

I've included a review below.

> budgie-desktop is the flagship desktop system for Solus.  Solus is an tier 1
> distro using its own packaging mechanism eopkg.  Solus supports only its own
> distro (naturally) in a 64bit intel based system only.  The maintainer does
> accept bug-reports for other distro's as long as it is reproducible in Solus
> and/or the maintainer considers that the wider use of its desktop
> environment would be enhanced.

Does upstream have an opinion on having older versions of Budgie in
Debian stable, which gets supported for 5 years now that we have LTS.

>   To produce a debian package that works in debian and ubuntu I have used a
> more traditional rules based package rather than a simpler debhelper
> auto-build mechanism.  I have had to do it this way because debhelper does
> not produce binaries that actually work on a Ubuntu based platform - the
> desktop system fails to launch at logon.  The failure is silent - there is
> no obvious reason why debhelper autobuild fails to produce a working
> solution.

I would suggest using diffoscope to compare the broken build with the
working one, you might discover the reason for this brokenness.

> The patches incorporated are required for specifically Debian and Ubuntu and
> are used in budgie-remix itself.

I don't intend to sponsor this but here is a review:

Things that I personally think should be fixed before this package can
be uploaded:

The package fails to build because gtk+3.0 3.20.5-1 is not yet built in Debian:

 libgtk-3-0 : Depends: libgtk-3-common (>= 3.20.5-1) which is a
virtual package and is not provided by any available package
https://buildd.debian.org/status/package.php?p=gtk+3.0&suite=unstable

There are many hardcoded library dependencies, they shouldn't be
needed as ${shlibs:Depends} will take care of them, unless these
libraries are loaded using dlopen instead of linking. If they are
loaded with dlopen, a ${dlopen:Depends} substvar and a script to
generate it would be better than hardcoding them.

debian/copyright is missing some copyright holders.

I think the ftp-masters will want debian/copyright to be more specific
about which files are LGPL and which are GPL.

I note that the upstream tarball contains generated files (*.c *.vapi
*.css *.png *.html). I personally think these need to be removed from
the upstream tarball and VCS if present in either of those and always
created at build time. If upstream doesn't want to do that an
acceptable workaround would be to remove these files in `debian/rules
clean` and in `debian/rules build` before autoreconf/configure are
run. Alternatively you could use the gitub-generated tarballs which
only contain what is in git. Looks like you will need to package some
more build-deps here though, like gulp-sass.

The imports/natray/ and gvc/ directories appear to be embedded code
copies from one of GNOME/cinnamon/MATE/cairo-dock-plug-ins/something.
They should be removed from all of these including budgie and packaged
separately. Until that happens the security team need to be notified
about the embedded code copy, which they track.

$ apt-file search -iIdsc na-tray
https://wiki.debian.org/EmbeddedCodeCopies

Things that I think would be nice to fix:

Please add DEP-3 headers to the patches, particularly the
Origin/Forwarded headers should point at URLs.

http://dep.debian.net/deps/dep3/

The first line of nm-applet.diff looks a bit strange.

The debian-watch-file-is-missing lintian tag should not be overridden
since upstream has a git repo with tags and tarballs that can be used
with uscan and debian/watch.

https://github.com/solus-project/budgie-desktop/releases
https://wiki.debian.org/debian/watch#GitHub

Please file bugs on lintian about the
dep5-copyright-license-name-not-unique and postinst-must-call-ldconfig
false positives.

The binary-without-manpage lintian tag should not be overridden since
it is true. Just ignore it until a manual page exists.

It would be great if upstream could sign their commits, tags and
releases with OpenPGP:

https://wiki.debian.org/Creating%20signed%20GitHub%20releases
https://wiki.debian.org/debian/watch#Cryptographic_signature_verification
https://help.riseup.net/en/security/message-security/openpgp/best-practices

I wonder what happens when you have both budgie and GNOME installed,
will the GNOME change?

Why do you disable the ibus systray icon?

I'm not sure the gnome-settings overrides are appropriate.

I wonder if the gsettings overrides should be renamed to
budgie-desktop.gsettings-override so it is only installed for one
package?

Usually in debian/control the version numbers in dependency relations
have a space before them:

- libgnome-bluetooth-dev (>=3.16),
+ libgnome-bluetooth-dev (>= 3.16),

I like to wrap-and-sort the debian/ directory using this command:

wrap-and-sort --short-indent --wrap-always --sort-binary-packages
--trailing-comma

I'm not sure that Section: gnome is appropriate, could you explain
your reasoning here?

The Vcs-Browser field is reserved for the Debian packaging VCS, not
upstream. See below for a solution for upstream.

I would suggest setting the Homepage here instead of to github:

https://solus-project.com/budgie/

You might want to test debian/compat 10:

https://lists.debian.org/debian-devel/2016/04/msg00018.html

I note there are several stamp files that probably aren't meant to be
in the upstream tarball:

$ find -iname *.stamp | wc -l
19

There are some files in the upstream VCS that are missing from the
upstream tarball, I wonder if that is intentional.

A typo in theme/README.md: obejct

Please add some upstream metadata: https://wiki.debian.org/UpstreamMetadata

Automatic checks:

$ sudo apt-get install -t experimental check-all-the-things
$ check-all-the-things

# Not sure why but autodep8 doesn't like your debian/control:
$ autodep8
grep-dctrl: debian/control:48: expected a colon.
...

# This command checks style. While a consistent style
# is a good idea, people who have different style
# preferences will want to ignore some of the output.
# Do not bother adding non-upstreamable patches for this.
$ find -type f \( -iname '*.sh' -o -iname '*.bash' \) -exec bashate
--ignore E002,E003 {} +
E010: Do not on same line as for: 'for i in `cat $INDEX`'
 - ./theme/render-assets.sh : L10
E001: Trailing Whitespace: 'do '
 - ./theme/render-assets.sh : L11
E001: Trailing Whitespace: '    && $OPTIPNG -o7 --quiet $ASSETS_DIR/$i.png '
 - ./theme/render-assets.sh : L20
E001: Trailing Whitespace: '    && $OPTIPNG -o7 --quiet $ASSETS_DIR/$i@2.png '
 - ./theme/render-assets.sh : L31
5 bashate error(s) found

# These should be created at build time instead
$ find -type f \( -iname '*.png' -o -iname '*.gif' -o -iname '*.jpg'
-o -iname '*.jpeg' \) -exec grep -iF inkscape {} +
<lots>

$ codespell --quiet-level=3
<lots>

# This command checks code complexity. While simple
# code is a good idea, complex code can be needed.
# Do not bother adding non-upstreamable patches for this.
$ find -type f -iname '*.c' -exec complexity {} +
<lots>

$ debmake -k
I: set parameters
I: compare debian/copyright with the source
<lots>

# Please check if these directories contain embedded code/data copies.
# Please remove any embedded copies from the upstream VCS and tarballs.
# https://wiki.debian.org/EmbeddedCodeCopies
$ find -type d -name 'vendor*' -o -name '*rd*party' -o -name contrib
-o -name imports
./imports

$ find \( -name .git -o -name .svn -o -name .bzr -o -name CVS -o -name
.hg -o -name _darcs -o -name _FOSSIL_ -o -name .sgdrawer \) -prune -o
-empty -print
./docs/budgie-desktop-overrides.txt

$ fdupes -q -r . | grep -vE
'/(\.(git|svn|bzr|hg|sgdrawer)|_(darcs|FOSSIL_)|CVS)(/|$)' | cat -s
<lots>

$ flawfinder -Q -c .
<lots>

$ find -type f \( -iname '*.po' -o -iname '*.pot' \) -exec POFileSpell {} +
<lots>

# check if these can be switched to https://
$ grep -rF http: .
<lots>

$ find -type f \( -iname '*.po' -o -iname '*.pot' -o -iname '*.mo' -o
-iname '*.gmo' \) -exec i18nspector {} +
<lots>

$ find -type f \( -iname '*.c' -o -iname '*.cc' -o -iname '*.cxx' -o
-iname '*.cpp' -o -iname '*.h' -o -iname '*.hh' -o -iname '*.hxx' -o
-iname '*.hpp' \) -exec include-what-you-use {} \;
<lots, probably lots of false positives>

$ license-reconcile
<lots, some false positives>

$ licensecheck --check=. --recursive --copyright . | grep --text -F
'GENERATED FILE'
<lots>

$ licensecheck --check=. --recursive --copyright . | grep --text -F
'with incorrect FSF address'
<lots>

$ find -type f \( -iname '*.sh' -o -iname '*.bash' -o -iname '*.zsh'
\) -exec shellcheck {} +
<lots>

$ find -type d \( -iname .bzr -o -iname .git -o -iname .hg -o -iname
.svn -o -iname CVS -o -iname RCS -o -iname SCCS -o -iname _MTN -o
-iname _darcs -o -iname .pc -o -iname .cabal-sandbox -o -iname .cdv -o
-iname .metadata -o -iname CMakeFiles -o -iname _build -o -iname
_sgbak -o -iname autom4te.cache -o -iname blib -o -iname cover_db -o
-iname node_modules -o -iname '~.dep' -o -iname '~.dot' -o -iname
'~.nib' -o -iname '~.plst' \) -prune -o -type f ! \( -iname '*.bak' -o
-iname '*.swp' -o -iname '#.*' -o -iname '#*#' -o -iname 'core.*' -o
-iname '*~' -o -iname '*.gif' -o -iname '*.jpg' -o -iname '*.jpeg' -o
-iname '*.png' -o -iname '*.min.js' -o -iname '*.js.map' -o -iname
'*.js.min' -o -iname '*.min.css' -o -iname '*.css.map' -o -iname
'*.css.min' \) -exec spellintian --picky {} +
<lots, some might be relevant>

$ grep -riE 'fixme|todo|hack|xxx|broken' .
<lots, some useful>

$ find -type f -iname '*.xml' -exec xmllint --noout --nonet {} +
<lots>

--
bye,
pabs

https://wiki.debian.org/PaulWise


Reply to: