Package: npm2deb Version: 0.3.0-12 Severity: normal Tags: patch Dear Maintainer,
When I try to run: npm2deb create @babel/parser the command fails: ... File "/usr/lib/python3/dist-packages/npm2deb/__init__.py", line 260, in create_links orig = _os.path.normpath(self.json['bin'][script]) ~~~~~~~~~~~~~~~~^^^^^^^^ TypeError: string indices must be integers, not 'str' The reason of this error is that: self.json['bin'] == './bin/babel-parser.js' in this particular case. Here is a patch which restores the expected behavior: -----------------8<------------------------------------- diff --git a/npm2deb/__init__.py b/npm2deb/__init__.py index ee3f29a..e2974da 100644 --- a/npm2deb/__init__.py +++ b/npm2deb/__init__.py @@ -255,9 +255,16 @@ and may not include tests.\n""") links = [] dest = self.debian_dest if 'bin' in self.json: - for script in self.json['bin']: - orig = _os.path.normpath(self.json['bin'][script]) - links.append("%s/%s usr/bin/%s" % (dest, orig, script)) + if isinstance(self.json['bin'], list): + for script in self.json['bin']: + orig = _os.path.normpath(self.json['bin'][script]) + links.append("%s/%s /usr/bin/%s" % + (self.name, orig, script)) + else: + script = self.json['bin'] + orig = _os.path.normpath(self.json['bin']) + links.append("%s/%s /usr/bin/%s" % + (self.name, orig, script)) if len(links) > 0: content = '\n'.join(links) utils.create_debian_file('links', content) -----------------8<------------------------------------- Best regards, Georges. -- System Information: Debian Release: trixie/sid APT prefers stable APT policy: (700, 'stable'), (650, 'testing'), (500, 'stable-updates'), (500, 'stable-security'), (500, 'oldstable-updates'), (500, 'oldstable-security'), (500, 'oldoldstable'), (500, 'unstable'), (500, 'oldstable') Architecture: amd64 (x86_64) Kernel: Linux 4.19.0-25-amd64 (SMP w/4 CPU threads) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages npm2deb depends on: ii devscripts 2.23.7 ii node-github-url-from-git 1.5.0+~1.5.1-1 ii npm 9.2.0~ds1-2 ii python3 3.11.6-1 ii python3-apt 2.7.5 ii python3-dateutil 2.8.2-3 npm2deb recommends no packages. npm2deb suggests no packages. -- no debconf information
diff --git a/debian/changelog b/debian/changelog index 75564f7..da54cd4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +npm2deb (0.3.0-12.1) unstable; urgency=medium + + * NMU: fix an issue when self.json['bin'] is not a list. + + -- Georges Khaznadar <georg...@debian.org> Tue, 13 Feb 2024 18:57:29 +0100 + npm2deb (0.3.0-12) unstable; urgency=medium * Update standards version to 4.6.1, no changes needed. diff --git a/npm2deb/__init__.py b/npm2deb/__init__.py index ee3f29a..e2974da 100644 --- a/npm2deb/__init__.py +++ b/npm2deb/__init__.py @@ -255,9 +255,16 @@ and may not include tests.\n""") links = [] dest = self.debian_dest if 'bin' in self.json: - for script in self.json['bin']: - orig = _os.path.normpath(self.json['bin'][script]) - links.append("%s/%s usr/bin/%s" % (dest, orig, script)) + if isinstance(self.json['bin'], list): + for script in self.json['bin']: + orig = _os.path.normpath(self.json['bin'][script]) + links.append("%s/%s /usr/bin/%s" % + (self.name, orig, script)) + else: + script = self.json['bin'] + orig = _os.path.normpath(self.json['bin']) + links.append("%s/%s /usr/bin/%s" % + (self.name, orig, script)) if len(links) > 0: content = '\n'.join(links) utils.create_debian_file('links', content)