[PATCH] gnu: Add ipcalc.

  • Done
  • quality assurance status badge
Details
3 participants
  • Daniel Schäfer
  • Ludovic Courtès
  • Mathieu Othacehe
Owner
unassigned
Submitted by
Daniel Schäfer
Severity
normal
D
D
Daniel Schäfer wrote on 23 Oct 2019 15:44
(address . guix-patches@gnu.org)
a44c1913-9030-1c1b-879c-981708b6bdc1@danielschaefer.me
Hi,
here's my first patch to guix - please let me know whether everything's okay.
It adds the ipcalc package which can calculate IP ranges. Example:

$ /gnu/store/7jw45m8d1hcaihnr7978qqg1didl048a-ipcalc-0.41/bin/ipcalc 192.168.0.1/24
Address: 192.168.0.1 11000000.10101000.00000000. 00000001
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.0.0/24 11000000.10101000.00000000. 00000000
HostMin: 192.168.0.1 11000000.10101000.00000000. 00000001
HostMax: 192.168.0.254 11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255 11000000.10101000.00000000. 11111111
Hosts/Net: 254 Class C, Private Internet


* gnu/packages/ipcalc.scm (ipcalc): New file.
---
gnu/packages/ipcalc.scm | 61 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
create mode 100644 gnu/packages/ipcalc.scm

Toggle diff (69 lines)
diff --git a/gnu/packages/ipcalc.scm b/gnu/packages/ipcalc.scm
new file mode 100644
index 0000000000..5f83389b25
--- /dev/null
+++ b/gnu/packages/ipcalc.scm
@@ -0,0 +1,61 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Daniel Schaefer <git@danielschaefer.me>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages ipcalc)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages)
+ #:use-module (guix download)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix build-system gnu))
+
+(define-public ipcalc
+ (package
+ (name "ipcalc")
+ (version "0.41")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://jodies.de/ipcalc-archive/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "12if9sm8h2ac0pgwkw835cgyqjxm6h27k4kfn2vfas9krrqwbafx"))))
+ (inputs `(("perl" ,perl)))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; No test suite
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out-bin (string-append
+ (assoc-ref outputs "out")
+ "/bin")))
+ (install-file "ipcalc" out-bin)
+ #t))))))
+ (synopsis "Simple IP network calculator")
+ (description "ipcalc takes an IP address and netmask and calculates the
+ resulting broadcast, network, Cisco wildcard mask, and host
+ range. By giving a second netmask, you can design subnets and
+ supernets. It is also intended to be a teaching tool and
+ presents the subnetting results as easy-to-understand binary
+ values.")
+ (home-page "http://jodies.de/ipcalc")
+ (license gpl2+)))
--
2.23.0
M
M
Mathieu Othacehe wrote on 24 Oct 2019 17:12
(address . guix-patches@gnu.org)(address . 37886@debbugs.gnu.org)
87zhhqyy6y.fsf@gmail.com
Hello Daniel,

Toggle quote (3 lines)
> here's my first patch to guix - please let me know whether everything's okay.
> It adds the ipcalc package which can calculate IP ranges. Example:

Welcome to Guix :) This first patch looks fine, I just have two remarks.

Toggle quote (5 lines)
> new file mode 100644
> index 0000000000..5f83389b25
> --- /dev/null
> +++ b/gnu/packages/ipcalc.scm

I think you can use the existing networking.scm for this tool.

Toggle quote (7 lines)
> + (description "ipcalc takes an IP address and netmask and calculates the
> + resulting broadcast, network, Cisco wildcard mask, and host
> + range. By giving a second netmask, you can design subnets and
> + supernets. It is also intended to be a teaching tool and
> + presents the subnetting results as easy-to-understand binary
> + values.")

The indentation is not correct here. You can use M-q if you are using
emacs or indent.el script otherwise (see:

Can you please send an updated patch?

Thanks,

Mathieu
L
L
Ludovic Courtès wrote on 26 Nov 2019 00:42
(name . Daniel Schäfer)(address . git@danielschaefer.me)
87a78jttef.fsf@gnu.org
Hello Daniel,

Did you have a chance to look into the suggestions Mathieu made?

Thanks in advance! :-)

Ludo’.

Mathieu Othacehe <m.othacehe@gmail.com> skribis:

Toggle quote (30 lines)
> Hello Daniel,
>
>> here's my first patch to guix - please let me know whether everything's okay.
>> It adds the ipcalc package which can calculate IP ranges. Example:
>
> Welcome to Guix :) This first patch looks fine, I just have two remarks.
>
>> new file mode 100644
>> index 0000000000..5f83389b25
>> --- /dev/null
>> +++ b/gnu/packages/ipcalc.scm
>
> I think you can use the existing networking.scm for this tool.
>
>> + (description "ipcalc takes an IP address and netmask and calculates the
>> + resulting broadcast, network, Cisco wildcard mask, and host
>> + range. By giving a second netmask, you can design subnets and
>> + supernets. It is also intended to be a teaching tool and
>> + presents the subnetting results as easy-to-understand binary
>> + values.")
>
> The indentation is not correct here. You can use M-q if you are using
> emacs or indent.el script otherwise (see:
> https://guix.gnu.org/manual/en/html_node/Formatting-Code.html).
>
> Can you please send an updated patch?
>
> Thanks,
>
> Mathieu
D
D
Daniel Schäfer wrote on 1 Dec 2019 17:32
(name . Ludovic Courtès)(address . ludo@gnu.org)
ce191ac2-4a64-65c9-5085-836322082b78@danielschaefer.me
Hello Ludo and Matthieu,

thanks for taking a look. Sorry, I did not receive Matthieu's answer and I'm not subscribed to the patches ML.

It seems that etc/indent-code.el does not correct that particular formatting difference, which I had in my description attribute.
I corrected it manually, according to what the other packages look like.
It's also moved into networking.scm.

off-topic @Ludo, What's the language of your MUA? Ido? (https://en.wiktionary.org/wiki/skribis)

Toggle snippet (90 lines)
From b511c6a206cb61c22f3da3d6682bfc2a37035463 Mon Sep 17 00:00:00 2001
From: Daniel Schaefer <git@danielschaefer.me>
Date: Wed, 23 Oct 2019 15:29:48 +0200
Subject: [PATCH] gnu: Add ipcalc.

* gnu/packages/networking.scm (ipcalc): New variable.
---
gnu/packages/networking.scm | 54 +++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)

diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 1b31314485..13728038d8 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -34,6 +34,7 @@
;;; Copyright © 2019 Tonton <tonton@riseup.net>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
+;;; Copyright © 2019 Daniel Schaefer <git@danielschaefer.me>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -61,6 +62,7 @@
#:use-module (guix build-system go)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
+ #:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages adns)
@@ -2778,3 +2780,55 @@ a service (such as an HTTP or SSH server) on localhost visible to the wider
Internet, even behind NAT or restrictive firewalls. A managed front-end relay
service is available at @url{https://pagekite.net/}, or you can run your own.")
(license license:agpl3+)))
+
+(define-public ipcalc
+ (package
+ (name "ipcalc")
+ (version "0.41")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://jodies.de/ipcalc-archive/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "12if9sm8h2ac0pgwkw835cgyqjxm6h27k4kfn2vfas9krrqwbafx"))))
+ (inputs `(("perl" ,perl)
+ ("tar" ,tar)
+ ("gzip" ,gzip)
+ ("tarball" ,source)))
+ (build-system trivial-build-system) ; no Makefile.PL
+ (arguments
+ '(#:modules ((guix build utils))
+ #:builder (begin
+ (use-modules (guix build utils))
+ (use-modules (srfi srfi-1))
+ (let* ((tarball (assoc-ref %build-inputs "tarball"))
+ (perl (string-append (assoc-ref %build-inputs
+ "perl")
+ "/bin"))
+ (gzip (string-append (assoc-ref %build-inputs
+ "gzip")
+ "/bin/gzip"))
+ (tar (string-append (assoc-ref %build-inputs
+ "tar")
+ "/bin/tar"))
+ (out (assoc-ref %outputs "out"))
+ (bin (string-append out "/bin"))
+ (doc (string-append out "/share/doc/ipcalc")))
+ (copy-file tarball "ipcalc.tar.gz")
+ (invoke gzip "-d" "ipcalc.tar.gz")
+ (invoke tar "xvf" "ipcalc.tar")
+
+ (mkdir-p bin)
+ (install-file "ipcalc-0.41/ipcalc" bin)
+ (patch-shebang (string-append bin "/ipcalc") (list perl))
+ (install-file "ipcalc-0.41/ipcalc" doc)
+ #t))))
+ (synopsis "Simple IP network calculator")
+ (description "ipcalc takes an IP address and netmask and calculates the
+resulting broadcast, network, Cisco wildcard mask, and host range. By giving a
+second netmask, you can design subnets and supernets. It is also intended to be
+a teaching tool and presents the subnetting results as easy-to-understand
+binary values.")
+ (home-page "http://jodies.de/ipcalc")
+ (license gpl2+)))
--
2.23.0

Thanks,
Daniel

On 11/26/19 12:42 AM, Ludovic Courtès wrote:
Toggle quote (41 lines)
> Hello Daniel,
>
> Did you have a chance to look into the suggestions Mathieu made?
> See <https://issues.guix.gnu.org/issue/37886>.
>
> Thanks in advance! :-)
>
> Ludo’.
>
> Mathieu Othacehe <m.othacehe@gmail.com> skribis:
>
>> Hello Daniel,
>>
>>> here's my first patch to guix - please let me know whether everything's okay.
>>> It adds the ipcalc package which can calculate IP ranges. Example:
>>
>> Welcome to Guix :) This first patch looks fine, I just have two remarks.
>>
>>> new file mode 100644
>>> index 0000000000..5f83389b25
>>> --- /dev/null
>>> +++ b/gnu/packages/ipcalc.scm
>>
>> I think you can use the existing networking.scm for this tool.
>>
>>> + (description "ipcalc takes an IP address and netmask and calculates the
>>> + resulting broadcast, network, Cisco wildcard mask, and host
>>> + range. By giving a second netmask, you can design subnets and
>>> + supernets. It is also intended to be a teaching tool and
>>> + presents the subnetting results as easy-to-understand binary
>>> + values.")
>>
>> The indentation is not correct here. You can use M-q if you are using
>> emacs or indent.el script otherwise (see:
>> https://guix.gnu.org/manual/en/html_node/Formatting-Code.html).
>>
>> Can you please send an updated patch?
>>
>> Thanks,
>>
>> Mathieu
M
M
Mathieu Othacehe wrote on 2 Dec 2019 09:10
(name . Daniel Schäfer)(address . git@danielschaefer.me)
878snvkv0b.fsf@gmail.com
Hello Daniel,

Toggle quote (4 lines)
> It seems that etc/indent-code.el does not correct that particular formatting difference, which I had in my description attribute.
> I corrected it manually, according to what the other packages look like.
> It's also moved into networking.scm.

I simplified the builder procedure and removed an explicit reference to
package version. I also fixed the license field and the description.

Anyway, pushed, thanks for your patch :)

Mathieu
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 37886@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 37886
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch