push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
Per https://bodhi.fedoraproject.org/updates/FEDORA-2022-dc47174c36:
This update fixes a failure to build with source with bash 5.2. Bash's
`patsub_replacement` feature makes ampersand a special character when doing
variable substitution, which was not previously the case. This update instructs
bash to turn off the new behavior.
The patch itself is adapted from
https://src.fedoraproject.org/rpms/cvc4/blob/f7c24c6ad72a8812d244313f13032fa23d393315/f/cvc4-bash-patsub-replacement.patch.
--- a/src/expr/mkexpr 2020-06-19 10:59:27.000000000 -0600
+++ b/src/expr/mkexpr 2022-10-11 14:28:31.120453409 -0600
@@ -16,6 +16,7 @@
#
copyright=2010-2014
+shopt -u patsub_replacement
filename=`basename "$1" | sed 's,_template,,'`
--- a/src/expr/mkkind 2020-06-19 10:59:27.000000000 -0600
+++ b/src/expr/mkkind 2022-10-11 14:34:17.008996126 -0600
@@ -15,6 +15,7 @@
#
copyright=2010-2014
+shopt -u patsub_replacement
filename=`basename "$1" | sed 's,_template,,'`
--- a/src/expr/mkmetakind 2020-06-19 10:59:27.000000000 -0600
+++ b/src/expr/mkmetakind 2022-10-11 14:34:32.248020036 -0600
@@ -18,6 +18,7 @@
#
copyright=2010-2014
+shopt -u patsub_replacement
cat <<EOF
/********************* */

View File

@@ -0,0 +1,65 @@
From 7f1016ceab9b0f57a935bd51ca6df3d18439b472 Mon Sep 17 00:00:00 2001
From: Will Dietz <w@wdtz.org>
Date: Tue, 17 Oct 2017 22:57:02 -0500
Subject: [PATCH] use fenv instead of non-standard fpu_control
---
core/Main.cc | 8 ++++++--
simp/Main.cc | 8 ++++++--
utils/System.h | 2 +-
3 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/core/Main.cc b/core/Main.cc
index 2b0d97b..8ad95fb 100644
--- a/core/Main.cc
+++ b/core/Main.cc
@@ -78,8 +78,12 @@ int main(int argc, char** argv)
// printf("This is MiniSat 2.0 beta\n");
#if defined(__linux__)
- fpu_control_t oldcw, newcw;
- _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
+ fenv_t fenv;
+
+ fegetenv(&fenv);
+ fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */
+ fenv.__control_word |= 0x200; /* _FPU_DOUBLE */
+ fesetenv(&fenv);
printf("WARNING: for repeatability, setting FPU to use double precision\n");
#endif
// Extra options:
diff --git a/simp/Main.cc b/simp/Main.cc
index 2804d7f..39bfb71 100644
--- a/simp/Main.cc
+++ b/simp/Main.cc
@@ -79,8 +79,12 @@ int main(int argc, char** argv)
// printf("This is MiniSat 2.0 beta\n");
#if defined(__linux__)
- fpu_control_t oldcw, newcw;
- _FPU_GETCW(oldcw); newcw = (oldcw & ~_FPU_EXTENDED) | _FPU_DOUBLE; _FPU_SETCW(newcw);
+ fenv_t fenv;
+
+ fegetenv(&fenv);
+ fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */
+ fenv.__control_word |= 0x200; /* _FPU_DOUBLE */
+ fesetenv(&fenv);
printf("WARNING: for repeatability, setting FPU to use double precision\n");
#endif
// Extra options:
diff --git a/utils/System.h b/utils/System.h
index 1758192..c0ad13a 100644
--- a/utils/System.h
+++ b/utils/System.h
@@ -22,7 +22,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
#define Minisat_System_h
#if defined(__linux__)
-#include <fpu_control.h>
+#include <fenv.h>
#endif
#include "mtl/IntTypes.h"
--
2.14.2

View File

@@ -0,0 +1,94 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
cln,
gmp,
git,
swig,
pkg-config,
readline,
libantlr3c,
boost,
jdk,
python3,
antlr3_4,
}:
stdenv.mkDerivation rec {
pname = "cvc4";
version = "1.8";
src = fetchFromGitHub {
owner = "cvc4";
repo = "cvc4";
rev = version;
sha256 = "1rhs4pvzaa1wk00czrczp58b2cxfghpsnq534m0l3snnya2958jp";
};
nativeBuildInputs = [
pkg-config
cmake
];
buildInputs = [
gmp
git
python3.pkgs.toml
readline
swig
libantlr3c
antlr3_4
boost
jdk
python3
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ cln ];
configureFlags = [
"--enable-language-bindings=c,c++,java"
"--enable-gpl"
"--with-readline"
"--with-boost=${boost.dev}"
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ "--with-cln" ];
prePatch = ''
patch -p1 -i ${./minisat-fenv.patch} -d src/prop/minisat
patch -p1 -i ${./minisat-fenv.patch} -d src/prop/bvminisat
'';
patches = [
./cvc4-bash-patsub-replacement.patch
];
postPatch = ''
# Fix missing size_t declarations by adding after pragma once or include guards
sed -i '/#pragma once/a\
#include <cstddef>' src/expr/emptyset.h || sed -i '1i\
#include <cstddef>' src/expr/emptyset.h
sed -i '/#define CVC4__EXPR__EXPR_IOMANIP_H/a\
#include <cstddef>' src/expr/expr_iomanip.h
sed -i '/#define CVC4__UTIL__REGEXP_H/a\
#include <cstddef>' src/util/regexp.h
'';
preConfigure = ''
patchShebangs ./src/
'';
cmakeBuildType = "Production";
meta = with lib; {
description = "High-performance theorem prover and SMT solver";
mainProgram = "cvc4";
homepage = "http://cvc4.cs.stanford.edu/web/";
license = licenses.gpl3;
platforms = platforms.unix;
maintainers = with maintainers; [
vbgl
thoughtpolice
];
};
}

View File

@@ -0,0 +1,71 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
cmake,
flex,
cadical,
symfpu,
gmp,
python3,
gtest,
boost,
jdk,
libpoly,
}:
stdenv.mkDerivation rec {
pname = "cvc5";
version = "1.3.0";
src = fetchFromGitHub {
owner = "cvc5";
repo = "cvc5";
rev = "cvc5-${version}";
hash = "sha256-w8rIGPG9BTEPV9HG2U40A4DYYnC6HaWbzqDKCRhaT00=";
};
nativeBuildInputs = [
pkg-config
cmake
flex
];
buildInputs = [
cadical.dev
symfpu
gmp
gtest
boost
jdk
libpoly
(python3.withPackages (
ps: with ps; [
pyparsing
tomli
]
))
];
preConfigure = ''
patchShebangs ./src/
'';
cmakeBuildType = "Production";
cmakeFlags = [
"-DBUILD_SHARED_LIBS=1"
"-DUSE_POLY=ON"
];
doCheck = true;
meta = with lib; {
description = "High-performance theorem prover and SMT solver";
mainProgram = "cvc5";
homepage = "https://cvc5.github.io";
license = licenses.gpl3Only;
platforms = platforms.unix;
maintainers = with maintainers; [ shadaj ];
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
fetchFromGitHub,
python3,
}:
python3.pkgs.buildPythonApplication rec {
pname = "cve-prioritizer";
version = "1.10.1";
pyproject = true;
src = fetchFromGitHub {
owner = "TURROKS";
repo = "CVE_Prioritizer";
tag = "v${version}";
hash = "sha256-Yy5jVpxb3e2lCpxMaxDdXBGh8by5lmGi+G+kJguA3AA=";
};
build-system = with python3.pkgs; [ setuptools ];
dependencies = with python3.pkgs; [
click
pandas
python-dotenv
requests
termcolor
];
# Project has no tests
doCheck = false;
pythonImportsCheck = [ "cve_prioritizer" ];
meta = {
description = "Vulnerability patching with CVSS, EPSS, and CISA's Known Exploited Vulnerabilities";
homepage = "https://github.com/TURROKS/CVE_Prioritizer";
changelog = "https://github.com/TURROKS/CVE_Prioritizer/releases/tag/${src.tag}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "cve-prioritizer";
};
}

View File

@@ -0,0 +1,59 @@
{
lib,
fetchFromGitHub,
coccinelle,
gnugrep,
python3,
}:
python3.pkgs.buildPythonApplication rec {
pname = "cvehound";
version = "1.2.1";
format = "pyproject";
src = fetchFromGitHub {
owner = "evdenis";
repo = "cvehound";
tag = version;
hash = "sha256-UvjmlAm/8B4KfE9grvvgn37Rui+ZRfs2oTLqYYgqcUQ=";
};
makeWrapperArgs = [
"--prefix PATH : ${
lib.makeBinPath [
coccinelle
gnugrep
]
}"
];
build-system = with python3.pkgs; [
setuptools
];
dependencies = with python3.pkgs; [
lxml
sympy
];
nativeCheckInputs = with python3.pkgs; [
gitpython
psutil
pytestCheckHook
];
# Tries to clone the kernel sources
doCheck = false;
meta = with lib; {
description = "Tool to check linux kernel source dump for known CVEs";
homepage = "https://github.com/evdenis/cvehound";
changelog = "https://github.com/evdenis/cvehound/blob/${src.rev}/ChangeLog";
# See https://github.com/evdenis/cvehound/issues/22
license = with licenses; [
gpl2Only
gpl3Plus
];
maintainers = with maintainers; [ ambroisie ];
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "cvemap";
version = "1.0.0";
src = fetchFromGitHub {
owner = "projectdiscovery";
repo = "cvemap";
tag = "v${version}";
hash = "sha256-pzCLzSsAaoiRrTBENnmyqaSyDnHQdDAcTNyaxpc7mt4=";
};
vendorHash = "sha256-4GW1mgwOXbdiDmQoN1yxVOJC8mXpqkKliabWZzvOff4=";
subPackages = [
"cmd/cvemap/"
];
ldflags = [
"-s"
"-w"
];
meta = {
description = "Tool to work with CVEs";
homepage = "https://github.com/projectdiscovery/cvemap";
changelog = "https://github.com/projectdiscovery/cvemap/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "cvemap";
};
}

View File

@@ -0,0 +1,70 @@
{
lib,
stdenv,
fetchurl,
makeWrapper,
asciidoc,
docbook_xml_dtd_45,
docbook_xsl,
coreutils,
cvs,
diffutils,
findutils,
git,
python3,
rsync,
}:
stdenv.mkDerivation rec {
pname = "cvs-fast-export";
version = "1.63";
src = fetchurl {
url = "http://www.catb.org/~esr/cvs-fast-export/cvs-fast-export-${version}.tar.gz";
sha256 = "sha256-YZF2QebWbvn/N9pLpccudZsFHzocJp/3M0Gx9p7fQ5Y=";
};
strictDeps = true;
nativeBuildInputs = [
makeWrapper
asciidoc
];
buildInputs = [ python3 ];
postPatch = ''
patchShebangs .
'';
preBuild = ''
makeFlagsArray=(
XML_CATALOG_FILES="${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml ${docbook_xsl}/xml/xsl/docbook/catalog.xml"
LIBS=""
prefix="$out"
)
'';
env = lib.optionalAttrs stdenv.cc.isClang {
NIX_CFLAGS_COMPILE = "-Wno-implicit-function-declaration";
};
postInstall = ''
wrapProgram $out/bin/cvssync --prefix PATH : ${lib.makeBinPath [ rsync ]}
wrapProgram $out/bin/cvsconvert --prefix PATH : $out/bin:${
lib.makeBinPath [
coreutils
cvs
diffutils
findutils
git
]
}
'';
meta = with lib; {
description = "Export an RCS or CVS history as a fast-import stream";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ dfoxfranke ];
homepage = "http://www.catb.org/esr/cvs-fast-export/";
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,302 @@
Fix Gnulib's getcwd in chroots.
From Debian bug #456164, http://bugs.debian.org/456164 .
--- cvs-1.12.13.orig/debian/patches/20_readdir_errno
+++ cvs-1.12.13/debian/patches/20_readdir_errno
@@ -0,0 +1,121 @@
+# From Gnulib:
+# http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=0b78641d85af3b72e3b9d94cb7b94e45f3c08ee5
+# We don't need this directly, but it's required so that 21_getcwd_chroot
+# applies cleanly.
+#
+# 2005-10-29 Paul Eggert <eggert@cs.ucla.edu>
+#
+# * getcwd.c (__getcwd): Don't assume that system calls after readdir
+# leave errno alone. Problem reported by Dmitry V. Levin.
+
+--- cvs-1.12.13-old/lib/getcwd.c
++++ cvs-1.12.13/lib/getcwd.c
+@@ -201,6 +201,8 @@ __getcwd (char *buf, size_t size)
+ ino_t dotino;
+ bool mount_point;
+ int parent_status;
++ size_t dirroom;
++ size_t namlen;
+
+ /* Look at the parent directory. */
+ #ifdef AT_FDCWD
+@@ -241,11 +243,20 @@ __getcwd (char *buf, size_t size)
+ goto lose;
+ dotlist[dotlen++] = '/';
+ #endif
+- /* Clear errno to distinguish EOF from error if readdir returns
+- NULL. */
+- __set_errno (0);
+- while ((d = __readdir (dirstream)) != NULL)
++ for (;;)
+ {
++ /* Clear errno to distinguish EOF from error if readdir returns
++ NULL. */
++ __set_errno (0);
++ d = __readdir (dirstream);
++ if (d == NULL)
++ {
++ if (errno == 0)
++ /* EOF on dirstream, which means that the current directory
++ has been removed. */
++ __set_errno (ENOENT);
++ goto lose;
++ }
+ if (d->d_name[0] == '.' &&
+ (d->d_name[1] == '\0' ||
+ (d->d_name[1] == '.' && d->d_name[2] == '\0')))
+@@ -303,48 +314,38 @@ __getcwd (char *buf, size_t size)
+ break;
+ }
+ }
+- if (d == NULL)
+- {
+- if (errno == 0)
+- /* EOF on dirstream, which means that the current directory
+- has been removed. */
+- __set_errno (ENOENT);
+- goto lose;
+- }
+- else
+- {
+- size_t dirroom = dirp - dir;
+- size_t namlen = _D_EXACT_NAMLEN (d);
+
+- if (dirroom <= namlen)
++ dirroom = dirp - dir;
++ namlen = _D_EXACT_NAMLEN (d);
++
++ if (dirroom <= namlen)
++ {
++ if (size != 0)
+ {
+- if (size != 0)
+- {
+- __set_errno (ERANGE);
+- goto lose;
+- }
+- else
+- {
+- char *tmp;
+- size_t oldsize = allocated;
++ __set_errno (ERANGE);
++ goto lose;
++ }
++ else
++ {
++ char *tmp;
++ size_t oldsize = allocated;
+
+- allocated += MAX (allocated, namlen);
+- if (allocated < oldsize
+- || ! (tmp = realloc (dir, allocated)))
+- goto memory_exhausted;
++ allocated += MAX (allocated, namlen);
++ if (allocated < oldsize
++ || ! (tmp = realloc (dir, allocated)))
++ goto memory_exhausted;
+
+- /* Move current contents up to the end of the buffer.
+- This is guaranteed to be non-overlapping. */
+- dirp = memcpy (tmp + allocated - (oldsize - dirroom),
+- tmp + dirroom,
+- oldsize - dirroom);
+- dir = tmp;
+- }
++ /* Move current contents up to the end of the buffer.
++ This is guaranteed to be non-overlapping. */
++ dirp = memcpy (tmp + allocated - (oldsize - dirroom),
++ tmp + dirroom,
++ oldsize - dirroom);
++ dir = tmp;
+ }
+- dirp -= namlen;
+- memcpy (dirp, d->d_name, namlen);
+- *--dirp = '/';
+ }
++ dirp -= namlen;
++ memcpy (dirp, d->d_name, namlen);
++ *--dirp = '/';
+
+ thisdev = dotdev;
+ thisino = dotino;
--- cvs-1.12.13.orig/debian/patches/21_getcwd_chroot
+++ cvs-1.12.13/debian/patches/21_getcwd_chroot
@@ -0,0 +1,172 @@
+# From Gnulib:
+# http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=79c0a43808d9ca85acd04600149fc1a9b75bd1b9
+#
+# 2006-07-03 Paul Eggert <eggert@cs.ucla.edu>
+#
+# Merge from coreutils.
+#
+# 2006-03-19 Jim Meyering <jim@meyering.net>
+#
+# Work even in a chroot where d_ino values for entries in "/"
+# don't match the stat.st_ino values for the same names.
+# * getcwd.c (__getcwd): When no d_ino value matches the target inode
+# number, iterate through all entries again, using lstat instead.
+# Reported by Kenshi Muto in http://bugs.debian.org/355810, and by
+# Zouhir Hafidi in https://bugzilla.redhat.com/bugzilla/190656.
+#
+# * getcwd.c (__getcwd): Clarify a comment.
+# Use memcpy in place of a call to strcpy.
+
+--- cvs-1.12.13-old/lib/getcwd.c
++++ cvs-1.12.13/lib/getcwd.c
+@@ -211,6 +211,7 @@ __getcwd (char *buf, size_t size)
+ int parent_status;
+ size_t dirroom;
+ size_t namlen;
++ bool use_d_ino = true;
+
+ /* Look at the parent directory. */
+ #ifdef AT_FDCWD
+@@ -257,11 +258,26 @@ __getcwd (char *buf, size_t size)
+ NULL. */
+ __set_errno (0);
+ d = __readdir (dirstream);
++
++ /* When we've iterated through all directory entries without finding
++ one with a matching d_ino, rewind the stream and consider each
++ name again, but this time, using lstat. This is necessary in a
++ chroot on at least one system (glibc-2.3.6 + linux 2.6.12), where
++ .., ../.., ../../.., etc. all had the same device number, yet the
++ d_ino values for entries in / did not match those obtained
++ via lstat. */
++ if (d == NULL && errno == 0 && use_d_ino)
++ {
++ use_d_ino = false;
++ rewinddir (dirstream);
++ d = __readdir (dirstream);
++ }
++
+ if (d == NULL)
+ {
+ if (errno == 0)
+- /* EOF on dirstream, which means that the current directory
+- has been removed. */
++ /* EOF on dirstream, which can mean e.g., that the current
++ directory has been removed. */
+ __set_errno (ENOENT);
+ goto lose;
+ }
+@@ -269,58 +285,65 @@ __getcwd (char *buf, size_t size)
+ (d->d_name[1] == '\0' ||
+ (d->d_name[1] == '.' && d->d_name[2] == '\0')))
+ continue;
+- if (MATCHING_INO (d, thisino) || mount_point)
++
++ if (use_d_ino)
+ {
+- int entry_status;
++ bool match = (MATCHING_INO (d, thisino) || mount_point);
++ if (! match)
++ continue;
++ }
++
++ {
++ int entry_status;
+ #ifdef AT_FDCWD
+- entry_status = fstatat (fd, d->d_name, &st, AT_SYMLINK_NOFOLLOW);
++ entry_status = fstatat (fd, d->d_name, &st, AT_SYMLINK_NOFOLLOW);
+ #else
+- /* Compute size needed for this file name, or for the file
+- name ".." in the same directory, whichever is larger.
+- Room for ".." might be needed the next time through
+- the outer loop. */
+- size_t name_alloc = _D_ALLOC_NAMLEN (d);
+- size_t filesize = dotlen + MAX (sizeof "..", name_alloc);
+-
+- if (filesize < dotlen)
+- goto memory_exhausted;
+-
+- if (dotsize < filesize)
+- {
+- /* My, what a deep directory tree you have, Grandma. */
+- size_t newsize = MAX (filesize, dotsize * 2);
+- size_t i;
+- if (newsize < dotsize)
+- goto memory_exhausted;
+- if (dotlist != dots)
+- free (dotlist);
+- dotlist = malloc (newsize);
+- if (dotlist == NULL)
+- goto lose;
+- dotsize = newsize;
+-
+- i = 0;
+- do
+- {
+- dotlist[i++] = '.';
+- dotlist[i++] = '.';
+- dotlist[i++] = '/';
+- }
+- while (i < dotlen);
+- }
+-
+- strcpy (dotlist + dotlen, d->d_name);
+- entry_status = __lstat (dotlist, &st);
++ /* Compute size needed for this file name, or for the file
++ name ".." in the same directory, whichever is larger.
++ Room for ".." might be needed the next time through
++ the outer loop. */
++ size_t name_alloc = _D_ALLOC_NAMLEN (d);
++ size_t filesize = dotlen + MAX (sizeof "..", name_alloc);
++
++ if (filesize < dotlen)
++ goto memory_exhausted;
++
++ if (dotsize < filesize)
++ {
++ /* My, what a deep directory tree you have, Grandma. */
++ size_t newsize = MAX (filesize, dotsize * 2);
++ size_t i;
++ if (newsize < dotsize)
++ goto memory_exhausted;
++ if (dotlist != dots)
++ free (dotlist);
++ dotlist = malloc (newsize);
++ if (dotlist == NULL)
++ goto lose;
++ dotsize = newsize;
++
++ i = 0;
++ do
++ {
++ dotlist[i++] = '.';
++ dotlist[i++] = '.';
++ dotlist[i++] = '/';
++ }
++ while (i < dotlen);
++ }
++
++ memcpy (dotlist + dotlen, d->d_name, _D_ALLOC_NAMLEN (d));
++ entry_status = __lstat (dotlist, &st);
+ #endif
+- /* We don't fail here if we cannot stat() a directory entry.
+- This can happen when (network) file systems fail. If this
+- entry is in fact the one we are looking for we will find
+- out soon as we reach the end of the directory without
+- having found anything. */
+- if (entry_status == 0 && S_ISDIR (st.st_mode)
+- && st.st_dev == thisdev && st.st_ino == thisino)
+- break;
+- }
++ /* We don't fail here if we cannot stat() a directory entry.
++ This can happen when (network) file systems fail. If this
++ entry is in fact the one we are looking for we will find
++ out soon as we reach the end of the directory without
++ having found anything. */
++ if (entry_status == 0 && S_ISDIR (st.st_mode)
++ && st.st_dev == thisdev && st.st_ino == thisino)
++ break;
++ }
+ }
+
+ dirroom = dirp - dir;

View File

@@ -0,0 +1,77 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
texinfo,
nano,
autoreconfHook,
}:
let
version = "1.12.13";
debianRevision = "real-30";
in
stdenv.mkDerivation {
pname = "cvs";
version = "${version}+${debianRevision}";
src = fetchurl {
url = "mirror://savannah/cvs/source/feature/${version}/cvs-${version}.tar.bz2";
sha256 = "0pjir8cwn0087mxszzbsi1gyfc6373vif96cw4q3m1x6p49kd1bq";
};
patches = [
./getcwd-chroot.patch
(fetchpatch {
url = "https://raw.githubusercontent.com/Homebrew/formula-patches/24118ec737c7/cvs/vasnprintf-high-sierra-fix.diff";
sha256 = "1ql6aaia7xkfq3vqhlw5bd2z2ywka82zk01njs1b2szn699liymg";
})
# Debian Patchset,
# contains patches for CVE-2017-12836 and CVE-2012-0804 among other things
(fetchurl {
url = "http://deb.debian.org/debian/pool/main/c/cvs/cvs_1.12.13+${debianRevision}.diff.gz";
sha256 = "085124619dfdcd3e53c726e049235791b67dcb9f71619f1e27c5f1cbdef0063e";
})
];
hardeningDisable = [
"fortify"
"format"
];
nativeBuildInputs = [
autoreconfHook
texinfo
];
configureFlags = [
"--with-editor=${nano}/bin/nano"
# Required for cross-compilation.
"cvs_cv_func_printf_ptr=yes"
]
++ lib.optionals (stdenv.hostPlatform.libc == "glibc") [
# So that fputs_unlocked is defined
"CFLAGS=-D_GNU_SOURCE"
];
makeFlags = [
"AR=${stdenv.cc.targetPrefix}ar"
]
++ lib.optionals (!stdenv.cc.bintools.isGNU) [
# Don't pass --as-needed to linkers that don't support it
# (introduced in debian patchset)
"cvs_LDFLAGS="
];
doCheck = false; # fails 1 of 1 tests
meta = with lib; {
homepage = "http://cvs.nongnu.org";
description = "Concurrent Versions System - a source control system";
license = licenses.gpl2Plus; # library is GPLv2, main is GPLv1
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,57 @@
{
lib,
fetchurl,
makeWrapper,
pypy2Packages,
cvs,
subversion,
git,
breezy,
installShellFiles,
}:
pypy2Packages.buildPythonApplication rec {
pname = "cvs2svn";
version = "2.5.0";
format = "setuptools";
src = fetchurl {
url = "https://github.com/mhagger/cvs2svn/releases/download/${version}/${pname}-${version}.tar.gz";
sha256 = "1ska0z15sjhyfi860rjazz9ya1gxbf5c0h8dfqwz88h7fccd22b4";
};
nativeBuildInputs = [
makeWrapper
installShellFiles
];
nativeCheckInputs = [
subversion
git
breezy
];
checkPhase = "${pypy2Packages.python.interpreter} run-tests.py";
doCheck = false; # Couldn't find node 'transaction...' in expected output tree
postInstall = ''
for i in bzr svn git; do
wrapProgram $out/bin/cvs2$i \
--prefix PATH : "${lib.makeBinPath [ cvs ]}"
$out/bin/cvs2$i --man > csv2$i.1
installManPage csv2$i.1
done
'';
meta = with lib; {
description = "Tool to convert CVS repositories to Subversion repositories";
homepage = "https://github.com/mhagger/cvs2svn";
maintainers = with maintainers; [
makefu
viraptor
];
platforms = platforms.unix;
license = licenses.asl20;
};
}

View File

@@ -0,0 +1,72 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
cvs,
zlib,
}:
stdenv.mkDerivation rec {
pname = "cvsps";
version = "2.1";
src = fetchurl {
url = "mirror://debian/pool/main/c/cvsps/cvsps_${version}.orig.tar.gz";
sha256 = "0nh7q7zcmagx0i63h6fqqkkq9i55k77myvb8h6jn2f266f5iklwi";
};
# Patches from https://sources.debian.net/src/cvsps/2.1-7/debian/patches
patches = [
(fetchpatch {
url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/01_ignoretrunk.patch";
sha256 = "1gzb97dw2a6bm0bmim7p7wvsn0r82y3a8n22ln6rbbkkd8vlnzcb";
})
(fetchpatch {
url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/02_dynamicbufferalloc.patch";
sha256 = "0dm7azxnw0g9pdqkb3y4y2h047zgrclbh40av6c868wfp2j6l9sc";
})
(fetchpatch {
url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/03_diffoptstypo.patch";
sha256 = "06n8652g7inpv8cgqir7ijq00qw1fr0v44m2pbmgx7ilmna2vrcw";
})
(fetchpatch {
url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/05-inet_addr_fix.patch";
sha256 = "10w6px96dz8bb69asjzshvp787ccazmqnjsggqc4gwdal95q3cn7";
})
(fetchpatch {
url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/fix-makefile";
sha256 = "0m92b55hgldwg6lwdaybbj0n3lw1b3wj2xkk1cz1ywq073bpf3jm";
})
(fetchpatch {
url = "https://sources.debian.net/data/main/c/cvsps/2.1-7/debian/patches/fix-manpage";
sha256 = "0gky14rhx82wv0gj8bkc74ki5xilhv5i3k1jc7khklr4lb6mmhpx";
})
];
buildInputs = [
cvs
zlib
];
installFlags = [ "prefix=$(out)" ];
meta = {
description = "Tool to generate CVS patch set information";
longDescription = ''
CVSps is a program for generating `patchset' information from a
CVS repository. A patchset in this case is defined as a set of
changes made to a collection of files, and all committed at the
same time (using a single "cvs commit" command).
'';
homepage = "https://sourceforge.net/projects/cvsps/";
license = lib.licenses.gpl2;
platforms = lib.platforms.unix;
mainProgram = "cvsps";
};
}

View File

@@ -0,0 +1,116 @@
{
lib,
stdenv,
fetchurl,
makeWrapper,
cvs,
perl,
net-tools,
findutils,
rsync,
coreutils,
diffutils,
}:
stdenv.mkDerivation rec {
pname = "cvsq";
version = "1.11";
src = fetchurl {
url = "http://www.linta.de/~aehlig/cvsq/cvsq-${version}.tgz";
sha256 = "0491k4skk3jyyd6plp2kcihmxxav9rsch7vd1yi697m2fqckp5ws";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
cvs
perl
net-tools
findutils
rsync
coreutils
diffutils
];
makeFlags = [ "prefix=$(out)" ];
postInstall = ''
substituteInPlace $out/bin/cvsq --replace "/bin/sh" "${stdenv.shell}"
substituteInPlace $out/bin/lcvs --replace "/bin/sh" "${stdenv.shell}"
wrapProgram $out/bin/cvsq --prefix PATH : ${
lib.makeBinPath [
cvs
net-tools
findutils
rsync
coreutils
diffutils
]
}
wrapProgram $out/bin/cvsq-branch --prefix PATH : ${
lib.makeBinPath [
cvs
net-tools
findutils
rsync
coreutils
diffutils
]
}
wrapProgram $out/bin/cvsq-merge --prefix PATH : ${
lib.makeBinPath [
cvs
net-tools
findutils
rsync
coreutils
diffutils
]
}
wrapProgram $out/bin/cvsq-switch --prefix PATH : ${
lib.makeBinPath [
cvs
net-tools
findutils
rsync
coreutils
diffutils
]
}
wrapProgram $out/bin/lcvs --prefix PATH : ${
lib.makeBinPath [
cvs
net-tools
findutils
rsync
coreutils
diffutils
]
}
'';
meta = {
description = "Collection of tools to work locally with CVS";
longDescription = ''
cvsq is a collection of tools to work locally with CVS.
cvsq queues commits and other cvs commands in a queue to be executed later,
when the machine is online again. In case of a commit (the default action)
an actual copy of the working directory is made, so that you can continue
editing without affecting the scheduled commit. You can even schedule
several successive commits to the same file and they will be correctly
committed as successive commits at the time of upload. This is different
from an earlier script also named cvsq that you might have seen elsewhere.
lcvs uses rsync to maintain a local copy of a cvs repository. It also
gives a convenient interface to call cvs in such a way that it believes the
current working directory refers to the local copy rather than to the actual
repository. This is useful for commands like log, diff, etc; however it cannot
be used for commits (that's what cvsq is for).
'';
homepage = "https://www.linta.de/~aehlig/cvsq/";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ clkamp ];
platforms = lib.platforms.all;
};
}