FTBFS: Syncing the latest from Debian would fix it

Bug #1873646 reported by Ross Gammon
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
gpick (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

The version of gpick in Focal {0.2.6~rc1-1} fails to build from source, I think due to a bug in building with scons which was connected to the switch from Python 2 to Python 3.

I have uploaded a test version of the latest package in Debian {0.2.6~rc1-3} to my ppa and it builds fine:
https://launchpad.net/%7Erosco2/+archive/ubuntu/testing

I am not a user of the package, but I am reporting this bug in a Live session of the last Focal Daily ISO for Ubuntu Studio, and both the old version and test version seem to run fine.

Perhaps this could wait until after release (maybe an SRU with only the scons patch)? But the other changes are mainly Debian packaging QA stuff which should do no harm (except maybe for the addition of an autopkgtest). Unfortunately, the Debian Developer forgot to close the FTBFS in the changelog. That bug is here:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=947564

If the Release Team agree, I will sync it now.

diff -Nru gpick-0.2.6~rc1/debian/changelog gpick-0.2.6~rc1/debian/changelog
--- gpick-0.2.6~rc1/debian/changelog 2019-09-08 22:49:44.000000000 +0000
+++ gpick-0.2.6~rc1/debian/changelog 2020-04-19 09:32:17.000000000 +0000
@@ -1,3 +1,39 @@
+gpick (0.2.6~rc1-3ubuntu1~ppa1) focal; urgency=medium
+
+ * Test latest Debian release in ppa
+
+ -- Ross Gammon <email address hidden> Sun, 19 Apr 2020 11:32:17 +0200
+
+gpick (0.2.6~rc1-3) unstable; urgency=medium
+
+ * debian/tests
+ + testsuite process with xvfb X server
+ * debian/control
+ + Remove libdbus-glib-1-dev under Build-Depends (Closes: #955844)
+ * debian/salsa-ci
+ + Add variables to customizing REPROTEST process
+ * debian/patches
+ + 07_environment_variable_version.patch
+
+ -- Elías Alejandro Año Mendoza <email address hidden> Tue, 07 Apr 2020 12:07:03 -0500
+
+gpick (0.2.6~rc1-2) unstable; urgency=medium
+
+ * Update Standards-Version to 4.5.0
+ * debian/control
+ + Add Rules-Requires-Root: no
+ * debian/tests
+ + Add to perform a simple test
+ * debian/upstream
+ + Add DEP-12 metadata
+ * debian/salsa-ci
+ + Add configuration file
+ * debian/patches
+ + 05_scons_python3.patch
+ + 06_fix_python_indentation.patch
+
+ -- Elías Alejandro Año Mendoza <email address hidden> Mon, 23 Mar 2020 20:12:37 -0500
+
 gpick (0.2.6~rc1-1) unstable; urgency=medium

   * New upstream release
diff -Nru gpick-0.2.6~rc1/debian/control gpick-0.2.6~rc1/debian/control
--- gpick-0.2.6~rc1/debian/control 2019-09-08 22:49:44.000000000 +0000
+++ gpick-0.2.6~rc1/debian/control 2020-04-07 17:07:03.000000000 +0000
@@ -3,10 +3,11 @@
 Priority: optional
 Maintainer: Elías Alejandro Año Mendoza <email address hidden>
 Build-Depends: debhelper-compat (= 12), scons, libcairo2 (>=1.6),
- libglib2.0-0 (>=2.16), libdbus-glib-1-dev (>=0.76), libgtk2.0-dev (>= 2.12),
- liblua5.2-dev (>= 5.2), libboost-dev, libexpat1-dev, lemon, flex, ragel, gettext,
+ libglib2.0-0 (>=2.16), libgtk2.0-dev (>= 2.12), liblua5.2-dev (>= 5.2),
+ libboost-dev, libexpat1-dev, lemon, flex, ragel, gettext,
  libboost-test-dev, libboost-system-dev, libboost-filesystem-dev
-Standards-Version: 4.4.0.1
+Standards-Version: 4.5.0
+Rules-Requires-Root: no
 Homepage: http://www.gpick.org
 Vcs-Git: https://salsa.debian.org/elias-guest/gpick.git
 Vcs-Browser: https://salsa.debian.org/elias-guest/gpick
diff -Nru gpick-0.2.6~rc1/debian/patches/01_reproducible_build.patch gpick-0.2.6~rc1/debian/patches/01_reproducible_build.patch
--- gpick-0.2.6~rc1/debian/patches/01_reproducible_build.patch 2019-09-08 22:49:44.000000000 +0000
+++ gpick-0.2.6~rc1/debian/patches/01_reproducible_build.patch 2020-04-07 17:07:03.000000000 +0000
@@ -13,17 +13,21 @@
  import SCons
  import re
  import string
-@@ -186,10 +187,11 @@ class GpickEnvironment(SConsEnvironment)
+@@ -186,11 +187,12 @@ class GpickEnvironment(SConsEnvironment)
      commit_date = time.gmtime(int(os.environ.get('SOURCE_DATE_EPOCH', time.time())))
      rev_date = time.strftime("%Y-%m-%d", commit_date)
      rev_time = time.strftime("%H:%M:%S", commit_date)
-+ build_date = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH',time.time())))
- self.Replace(
- GPICK_BUILD_REVISION = rev_hash,
+- self.Replace(
+- GPICK_BUILD_REVISION = rev_hash,
 - GPICK_BUILD_DATE = rev_date,
 - GPICK_BUILD_TIME = rev_time,
-+ GPICK_BUILD_DATE = build_date.strftime("%Y-%m-%d"),
-+ GPICK_BUILD_TIME = build_date.strftime("%H:%M:%S"),
- );
+- );
++ build_date = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH',time.time())))
++ self.Replace(
++ GPICK_BUILD_REVISION = rev_hash,
++ GPICK_BUILD_DATE = build_date.strftime("%Y-%m-%d"),
++ GPICK_BUILD_TIME = build_date.strftime("%H:%M:%S"),
++ );

  def RegexEscape(str):
+ return str.replace('\\', '\\\\')
diff -Nru gpick-0.2.6~rc1/debian/patches/05_scons_python3.patch gpick-0.2.6~rc1/debian/patches/05_scons_python3.patch
--- gpick-0.2.6~rc1/debian/patches/05_scons_python3.patch 1970-01-01 00:00:00.000000000 +0000
+++ gpick-0.2.6~rc1/debian/patches/05_scons_python3.patch 2020-04-07 17:07:03.000000000 +0000
@@ -0,0 +1,116 @@
+Description: it allows support scons with python3
+ Fix building error because scons scripts doesn't
+ support python3
+Author: Dominique Leuenberger <email address hidden>
+Last-Updated: 2020-03-23
+
+--- gpick.orig/SConscript
++++ gpick/SConscript
+@@ -49,19 +49,19 @@ env.AddCustomBuilders()
+ env.GetVersionInfo()
+
+ try:
+- umask = os.umask(022)
++ umask = os.umask(0o022)
+ except OSError: # ignore on systems that don't support umask
+ pass
+
+-if os.environ.has_key('CC'):
++if 'CC' in os.environ:
+ env['CC'] = os.environ['CC']
+-if os.environ.has_key('CFLAGS'):
++if 'CFLAGS' in os.environ:
+ env['CCFLAGS'] += SCons.Util.CLVar(os.environ['CFLAGS'])
+-if os.environ.has_key('CXX'):
++if 'CXX' in os.environ:
+ env['CXX'] = os.environ['CXX']
+-if os.environ.has_key('CXXFLAGS'):
++if 'CXXFLAGS' in os.environ:
+ env['CXXFLAGS'] += SCons.Util.CLVar(os.environ['CXXFLAGS'])
+-if os.environ.has_key('LDFLAGS'):
++if 'LDFLAGS' in os.environ:
+ env['LINKFLAGS'] += SCons.Util.CLVar(os.environ['LDFLAGS'])
+
+ if not env.GetOption('clean'):
+@@ -97,7 +97,7 @@ if not env.GetOption('clean'):
+ Decider('MD5-timestamp')
+
+ if not env['TOOLCHAIN'] == 'msvc':
+- if not (os.environ.has_key('CFLAGS') or os.environ.has_key('CXXFLAGS') or os.environ.has_key('LDFLAGS')):
++ if not ('CFLAGS' in os.environ or 'CXXFLAGS' in os.environ or 'LDFLAGS' in os.environ):
+ if env['DEBUG']:
+ env.Append(
+ CPPFLAGS = ['-Wall', '-g3', '-O0'],
+Index: gpick/source/SConscript
+===================================================================
+--- gpick.orig/source/SConscript
++++ gpick/source/SConscript
+@@ -50,7 +50,7 @@ if local_env['BUILD_TARGET'] == 'win32':
+ else:
+ local_env.Append(LINKFLAGS = ['/SUBSYSTEM:WINDOWS', '/ENTRY:mainCRTStartup'], CPPDEFINES = ['XML_STATIC'])
+ objects.append(SConscript(['winres/SConscript'], exports='env'))
+-elif local_env['BUILD_TARGET'] == 'linux2':
++elif local_env['BUILD_TARGET'] == 'linux2' or local_env['BUILD_TARGET'] == 'linux':
+ local_env.Append(LIBS=['rt', 'expat'])
+ elif local_env['BUILD_TARGET'].startswith('gnu0'):
+ local_env.Append(LIBS=['rt', 'expat'])
+Index: gpick/tools/gpick.py
+===================================================================
+--- gpick.orig/tools/gpick.py
++++ gpick/tools/gpick.py
+@@ -7,12 +7,12 @@ import re
+ import string
+ import glob
+ import subprocess
+-from lemon import *
+-from flex import *
+-from gettext import *
+-from resource_template import *
+-from ragel import *
+-from template import *
++from tools.lemon import *
++from tools.flex import *
++from tools.gettext import *
++from tools.resource_template import *
++from tools.ragel import *
++from tools.template import *
+ from SCons.Script import *
+ from SCons.Util import *
+ from SCons.Script.SConscript import SConsEnvironment
+@@ -101,9 +101,9 @@ class GpickEnvironment(SConsEnvironment)
+ def ConfirmPrograms(self, conf, programs):
+ conf.AddTests({'CheckProgram': CheckProgram})
+
+- for evar, args in programs.iteritems():
++ for evar, args in programs.items():
+ found = False
+- for name, member_name in args['checks'].iteritems():
++ for name, member_name in args['checks'].items():
+ if conf.CheckProgram(self, name, member_name):
+ found = True;
+ break
+@@ -117,9 +117,9 @@ class GpickEnvironment(SConsEnvironment)
+ def ConfirmLibs(self, conf, libs):
+ conf.AddTests({'CheckPKG': CheckPKG})
+
+- for evar, args in libs.iteritems():
++ for evar, args in libs.items():
+ found = False
+- for name, version in args['checks'].iteritems():
++ for name, version in args['checks'].items():
+ if conf.CheckPKG(name + ' ' + version):
+ self[evar]=name
+ found = True;
+@@ -156,9 +156,9 @@ class GpickEnvironment(SConsEnvironment)
+ self.AddPostAction(i, Chmod(i, perm))
+ return dir
+
+- InstallProgram = lambda self, dir, source: GpickEnvironment.InstallPerm(self, dir, source, 0755)
+- InstallData = lambda self, dir, source: GpickEnvironment.InstallPerm(self, dir, source, 0644)
+- InstallDataAutoDir = lambda self, dir, relative_dir, source: GpickEnvironment.InstallPermAutoDir(self, dir, relative_dir, source, 0644)
++ InstallProgram = lambda self, dir, source: GpickEnvironment.InstallPerm(self, dir, source, 0o0755)
++ InstallData = lambda self, dir, source: GpickEnvironment.InstallPerm(self, dir, source, 0o0644)
++ InstallDataAutoDir = lambda self, dir, relative_dir, source: GpickEnvironment.InstallPermAutoDir(self, dir, relative_dir, source, 0o0644)
+
+ def GetSourceFiles(self, dir_exclude_pattern, file_exclude_pattern):
+ dir_exclude_prog = re.compile(dir_exclude_pattern)
diff -Nru gpick-0.2.6~rc1/debian/patches/06_fix_python_indentation.patch gpick-0.2.6~rc1/debian/patches/06_fix_python_indentation.patch
--- gpick-0.2.6~rc1/debian/patches/06_fix_python_indentation.patch 1970-01-01 00:00:00.000000000 +0000
+++ gpick-0.2.6~rc1/debian/patches/06_fix_python_indentation.patch 2020-04-07 17:07:03.000000000 +0000
@@ -0,0 +1,16 @@
+Description: it allows fix indentation error
+ Fix indentation error into SConscript
+Author: Elías Alejandro Año Mendoza <email address hidden>
+Last-Updated: 2020-03-23
+
+--- gpick.orig/source/dbus/SConscript
++++ gpick/source/dbus/SConscript
+@@ -9,7 +9,7 @@ local_env = env.Clone()
+ if not local_env.GetOption('clean') and not env['TOOLCHAIN'] == 'msvc':
+ if not env['USE_GTK3']:
+ local_env.ParseConfig('pkg-config --cflags $GIO_PC')
+- else:
++ else:
+ local_env.ParseConfig('pkg-config --cflags $GTK_PC')
+
+ if not env['BUILD_TARGET'] == 'win32':
diff -Nru gpick-0.2.6~rc1/debian/patches/07_environment_variable_version.patch gpick-0.2.6~rc1/debian/patches/07_environment_variable_version.patch
--- gpick-0.2.6~rc1/debian/patches/07_environment_variable_version.patch 1970-01-01 00:00:00.000000000 +0000
+++ gpick-0.2.6~rc1/debian/patches/07_environment_variable_version.patch 2020-04-07 17:07:03.000000000 +0000
@@ -0,0 +1,26 @@
+Description: Setting missing environment variables
+ Update values for environment variables to get information
+ about version and revision
+Author: Elías Alejandro Año Mendoza <email address hidden>
+Last-Updated: 2020-04-07
+
+--- gpick.orig/source/version/SConscript
++++ gpick/source/version/SConscript
+@@ -2,12 +2,15 @@
+
+ import os
+ import sys
++import time
++import datetime
+
+ Import('*')
+ local_env = env.Clone()
++build_date = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time())))
+
+-local_env.Append(CPPDEFINES = {'BUILD_DATE': env['GPICK_BUILD_DATE'],
+- 'BUILD_REVISION': env['GPICK_BUILD_REVISION'],
++local_env.Append(CPPDEFINES = {'BUILD_DATE': build_date.strftime("%Y-%m-%d"),
++ 'BUILD_REVISION': 'unknown',
+ 'BUILD_PLATFORM': sys.platform,
+ 'BUILD_VERSION': env['GPICK_BUILD_VERSION'],
+ })
diff -Nru gpick-0.2.6~rc1/debian/patches/series gpick-0.2.6~rc1/debian/patches/series
--- gpick-0.2.6~rc1/debian/patches/series 2019-09-08 22:49:44.000000000 +0000
+++ gpick-0.2.6~rc1/debian/patches/series 2020-04-07 17:07:03.000000000 +0000
@@ -1,3 +1,6 @@
 01_reproducible_build.patch
 02_desktop_file.patch
 04_appdata_file_path.patch
+05_scons_python3.patch
+06_fix_python_indentation.patch
+07_environment_variable_version.patch
diff -Nru gpick-0.2.6~rc1/debian/salsa-ci.yml gpick-0.2.6~rc1/debian/salsa-ci.yml
--- gpick-0.2.6~rc1/debian/salsa-ci.yml 1970-01-01 00:00:00.000000000 +0000
+++ gpick-0.2.6~rc1/debian/salsa-ci.yml 2020-04-07 17:07:03.000000000 +0000
@@ -0,0 +1,7 @@
+include:
+ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
+ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
+
+variables:
+ SALSA_CI_REPROTEST_ARGS: --variations=-build_path
+ SALSA_CI_REPROTEST_ENABLE_DIFFOSCOPE: 1
diff -Nru gpick-0.2.6~rc1/debian/tests/control gpick-0.2.6~rc1/debian/tests/control
--- gpick-0.2.6~rc1/debian/tests/control 1970-01-01 00:00:00.000000000 +0000
+++ gpick-0.2.6~rc1/debian/tests/control 2020-04-07 17:07:03.000000000 +0000
@@ -0,0 +1,3 @@
+Tests: version
+Depends: gpick, xvfb, xauth
+Restrictions: allow-stderr
diff -Nru gpick-0.2.6~rc1/debian/tests/version gpick-0.2.6~rc1/debian/tests/version
--- gpick-0.2.6~rc1/debian/tests/version 1970-01-01 00:00:00.000000000 +0000
+++ gpick-0.2.6~rc1/debian/tests/version 2020-04-07 17:07:03.000000000 +0000
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -e
+
+xvfb-run -a gpick --version
diff -Nru gpick-0.2.6~rc1/debian/upstream/metadata gpick-0.2.6~rc1/debian/upstream/metadata
--- gpick-0.2.6~rc1/debian/upstream/metadata 1970-01-01 00:00:00.000000000 +0000
+++ gpick-0.2.6~rc1/debian/upstream/metadata 2020-04-07 17:07:03.000000000 +0000
@@ -0,0 +1,7 @@
+Name: gpick
+Cite-As: gpick
+Contact: https://github.com/thezbyg/gpick/issues
+Repository: https://github.com/thezbyg/gpick.git
+Repository-Browse: https://github.com/thezbyg/gpick
+Bug-Database: https://github.com/thezbyg/gpick/issues
+Bug-Submit: https://github.com/thezbyg/gpick/issues

Ross Gammon (rosco2)
description: updated
Revision history for this message
Steve Langasek (vorlon) wrote :

This didn't get done for focal, but groovy now has the newer gpick.

Changed in gpick (Ubuntu):
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.