Skip to content
This repository was archived by the owner on Apr 12, 2021. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs-channels
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 692a8cabbcc5
Choose a base ref
...
head repository: NixOS/nixpkgs-channels
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 63a3564987d3
Choose a head ref
  • 18 commits
  • 12 files changed
  • 10 contributors

Commits on Jan 13, 2020

  1. rocksdb: enable USE_RTTI=1

    This is required for programs using rocksdb and and typeinfo.
    
    Otherwise, linking them fails with errors like this (that's ceph):
    
    /nix/store/cg0k49h66nkdqx6ccwnqr0i4q0fnfznc-binutils-2.31.1/bin/ld: ../../lib/libos.a(RocksDBStore.cc.o):(.data.rel.ro._ZTIN12RocksDBStore14RocksWBHandlerE[_ZTIN12RocksDBStore14RocksWBHandlerE]+0x10): undefined reference to `typeinfo for rocksdb::WriteBatch::Handler'
    /nix/store/cg0k49h66nkdqx6ccwnqr0i4q0fnfznc-binutils-2.31.1/bin/ld: ../../lib/libos.a(RocksDBStore.cc.o):(.data.rel.ro._ZTIN12RocksDBStore19MergeOperatorRouterE[_ZTIN12RocksDBStore19MergeOperatorRouterE]+0x10): undefined reference to `typeinfo for rocksdb::AssociativeMergeOperator'
    /nix/store/cg0k49h66nkdqx6ccwnqr0i4q0fnfznc-binutils-2.31.1/bin/ld: ../../lib/libos.a(RocksDBStore.cc.o):(.data.rel.ro._ZTIN12RocksDBStore19MergeOperatorLinkerE[_ZTIN12RocksDBStore19MergeOperatorLinkerE]+0x10): undefined reference to `typeinfo for rocksdb::AssociativeMergeOperator'
    /nix/store/cg0k49h66nkdqx6ccwnqr0i4q0fnfznc-binutils-2.31.1/bin/ld: ../../lib/libos.a(RocksDBStore.cc.o):(.data.rel.ro._ZTI17CephRocksdbLogger[_ZTI17CephRocksdbLogger]+0x10): undefined reference to `typeinfo for rocksdb::Logger'
    /nix/store/cg0k49h66nkdqx6ccwnqr0i4q0fnfznc-binutils-2.31.1/bin/ld: ../../lib/libos.a(BlueRocksEnv.cc.o):(.data.rel.ro._ZTI12BlueRocksEnv[_ZTI12BlueRocksEnv]+0x10): undefined reference to `typeinfo for rocksdb::EnvWrapper'
    /nix/store/cg0k49h66nkdqx6ccwnqr0i4q0fnfznc-binutils-2.31.1/bin/ld: ../../lib/libos.a(BlueRocksEnv.cc.o):(.data.rel.ro._ZTI23BlueRocksSequentialFile[_ZTI23BlueRocksSequentialFile]+0x10): undefined reference to `typeinfo for rocksdb::SequentialFile'
    /nix/store/cg0k49h66nkdqx6ccwnqr0i4q0fnfznc-binutils-2.31.1/bin/ld: ../../lib/libos.a(BlueRocksEnv.cc.o):(.data.rel.ro._ZTI25BlueRocksRandomAccessFile[_ZTI25BlueRocksRandomAccessFile]+0x10): undefined reference to `typeinfo for rocksdb::RandomAccessFile'
    /nix/store/cg0k49h66nkdqx6ccwnqr0i4q0fnfznc-binutils-2.31.1/bin/ld: ../../lib/libos.a(BlueRocksEnv.cc.o):(.data.rel.ro._ZTI21BlueRocksWritableFile[_ZTI21BlueRocksWritableFile]+0x10): undefined reference to `typeinfo for rocksdb::WritableFile'
    /nix/store/cg0k49h66nkdqx6ccwnqr0i4q0fnfznc-binutils-2.31.1/bin/ld: ../../lib/libos.a(BlueRocksEnv.cc.o):(.data.rel.ro._ZTI17BlueRocksFileLock[_ZTI17BlueRocksFileLock]+0x10): undefined reference to `typeinfo for rocksdb::FileLock'
    
    (cherry picked from commit 781d85c)
    flokli authored and srhb committed Jan 13, 2020
    Copy the full SHA
    0f48aae View commit details
  2. ceph: fix build and cleanup expression

    correct platforms. ceph currently doesn't build on aarch64-linux. So
    let's not lie in meta.platforms.
    
    ceph: fix multiple output
    We currently just move $out/share/ceph/mgr to
    $lib/lib/ceph, and then remove all references to $out with a find
    command.
    
    I checked $out, the only reference to $out is in
    $lib/lib/ceph/libceph-common.so.0, coming from src/common/options.cc:
    https://github.com/ceph/ceph/blob/master/src/common/options.cc#L5050:
    
    >  Option("mgr_module_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
    >  .set_default(CEPH_DATADIR "/mgr")
    >  .add_service("mgr")
    >  .set_description("Filesystem path to manager modules."),
    
    Just removing the reference might break some behaviour - it should point
    to $lib/ceph/mgr instead.
    
    We can fix this in a much more elegant fashion by just passing a custom
    CMAKE_INSTALL_DATADIR to the build system.
    
    ceph: fix outdated Boost::python substitutions
    
    Instead of substituting in CMakeLists.txt files, one now needs to set
    MGR_PYTHON_VERSION.
    
    ceph: clean up PYTHONPATH wrapping
    
    Set `pythonPath` instead of exporting PYTHONPATH.
    
    Use `toPythonPath` to construct the PYTHONPATH where we need manual
    wrapping. There's no ceph-volume, only ceph-mgr.
    
    ceph: set doCheck = false explicitly
    
    and describe why.
    
    ceph: patch more shebangs
    
    ceph: use system-provided gtest and rocksdb
    (cherry picked from commit 05590b3)
    flokli authored and srhb committed Jan 13, 2020
    Copy the full SHA
    23a6575 View commit details
  3. ceph: 14.2.4 -> 14.2.5

    (cherry picked from commit c373fc3)
    srhb committed Jan 13, 2020
    Copy the full SHA
    543f12c View commit details
  4. ceph: 14.2.5 -> 14.2.6

    (cherry picked from commit fe4d213)
    srhb committed Jan 13, 2020
    Copy the full SHA
    938da23 View commit details
  5. nixos/ceph: Rename old ceph test and add new multi-node test

    Rename the old ceph test to ceph-single-node and add a new test
    ceph-multi-node. The ceph-single-node represents a dev cluster whereas
    ceph-multi-node is closer to a prod cluster.
    
    (cherry picked from commit 9165201)
    lejonet authored and srhb committed Jan 13, 2020

    Unverified

    This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
    Copy the full SHA
    e4c2df3 View commit details
  6. nixos/ceph: Rewrite old single-node test with new framework

    (cherry picked from commit 6ac9d1f)
    lejonet authored and srhb committed Jan 13, 2020

    Unverified

    This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
    Copy the full SHA
    9fdba84 View commit details
  7. Copy the full SHA
    73475e9 View commit details

Commits on Jan 14, 2020

  1. nixos/ceph: Rename old ceph test and add new multi-node test to all-t…

    …ests.nix
    
    (cherry picked from commit 5fbf0cf)
    lejonet authored and srhb committed Jan 14, 2020

    Unverified

    This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
    Copy the full SHA
    87c5282 View commit details

Commits on Jan 16, 2020

  1. signal-desktop: 1.29.4 -> 1.29.5

    Changelog: https://github.com/signalapp/Signal-Desktop/releases/tag/v1.29.5
    (cherry picked from commit 8d5ec33)
    Reason: Avoid an expired (unusable) build in the stable release
    (Signal-Desktop builds expire after 90 days).
    primeos committed Jan 16, 2020

    Verified

    This commit was signed with the committer’s verified signature.
    primeos Michael Weiss
    Copy the full SHA
    fdf7e83 View commit details

Commits on Jan 17, 2020

  1. Copy the full SHA
    1cadf63 View commit details
  2. Merge pull request #77821 from taku0/flashplayer-32.0.0.314-release-1…

    …9.09
    
    [19.09] flashplayer: 32.0.0.293 -> 32.0.0.314
    7c6f434c authored Jan 17, 2020

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    e2b3f8b View commit details
  3. Merge pull request #77849 from primeos/signal-desktop-backport

    [19.09] signal-desktop: 1.29.4 -> 1.29.5 (backport)
    primeos authored Jan 17, 2020

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    d7292e7 View commit details
  4. signal-desktop: 1.29.5 -> 1.29.6

    (cherry picked from commit e6ed469)
    Reason: Avoid an expired (unusable) build in the stable release
    (Signal-Desktop builds expire after 90 days).
    rht authored and primeos committed Jan 17, 2020

    Partially verified

    This commit is signed with the committer’s verified signature.
    primeos’s contribution has been verified via GPG key.
    We cannot verify signatures from co-authors, and some of the co-authors attributed to this commit require their commits to be signed.
    Copy the full SHA
    6a4a10f View commit details
  5. Merge pull request #77949 from primeos/signal-desktop-backport

    [19.09] signal-desktop: 1.29.5 -> 1.29.6 (backport)
    primeos authored Jan 17, 2020

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    aa1151c View commit details
  6. skanlite: use qt5's mkDerivaiton

    (cherry picked from commit 4b20959)
    worldofpeace committed Jan 17, 2020
    Copy the full SHA
    ed422d8 View commit details
  7. skanlite: don't set enableParallelBuilding

    it's default on
    
    (cherry picked from commit ac96ba0)
    worldofpeace committed Jan 17, 2020
    Copy the full SHA
    b7e1cdd View commit details
  8. fish: fix systemctl completion

    gebner committed Jan 17, 2020
    Copy the full SHA
    09aa1b2 View commit details

Commits on Jan 18, 2020

  1. Merge pull request #77605 from srhb/ceph-backport-14.2.6

    Backport: Ceph 14.2.6
    nh2 authored Jan 18, 2020

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    63a3564 View commit details
3 changes: 2 additions & 1 deletion nixos/tests/all-tests.nix
Original file line number Diff line number Diff line change
@@ -37,7 +37,8 @@ in
buildbot = handleTest ./buildbot.nix {};
cadvisor = handleTestOn ["x86_64-linux"] ./cadvisor.nix {};
cassandra = handleTest ./cassandra.nix {};
ceph = handleTestOn ["x86_64-linux"] ./ceph.nix {};
ceph-single-node = handleTestOn ["x86_64-linux"] ./ceph-single-node.nix {};
ceph-multi-node = handleTestOn ["x86_64-linux"] ./ceph-multi-node.nix {};
certmgr = handleTest ./certmgr.nix {};
cfssl = handleTestOn ["x86_64-linux"] ./cfssl.nix {};
chromium = (handleTestOn ["x86_64-linux"] ./chromium.nix {}).stable or {};
274 changes: 274 additions & 0 deletions nixos/tests/ceph-multi-node.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,274 @@
import ./make-test.nix ({pkgs, lib, ...}:

let
generateCephConfig = { daemonConfig }: {
enable = true;
global = {
fsid = "066ae264-2a5d-4729-8001-6ad265f50b03";
monInitialMembers = "a";
monHost = "192.168.1.1";
};
} // daemonConfig;

generateHost = { pkgs, cephConfig, networkConfig, ... }: {
virtualisation = {
memorySize = 1536;
emptyDiskImages = [ 20480 ];
vlans = [ 1 ];
};

networking = networkConfig;

environment.systemPackages = with pkgs; [
bash
sudo
ceph
xfsprogs
netcat-openbsd
];

boot.kernelModules = [ "xfs" ];

services.ceph = cephConfig;

# So that we don't have to battle systemd when bootstraping
systemd.targets.ceph.wantedBy = lib.mkForce [];
};

networkMonA = {
dhcpcd.enable = false;
interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
{ address = "192.168.1.1"; prefixLength = 24; }
];
firewall = {
allowedTCPPorts = [ 6789 3300 ];
allowedTCPPortRanges = [ { from = 6800; to = 7300; } ];
};
};
cephConfigMonA = generateCephConfig { daemonConfig = {
mon = {
enable = true;
daemons = [ "a" ];
};
mgr = {
enable = true;
daemons = [ "a" ];
};
}; };

networkOsd0 = {
dhcpcd.enable = false;
interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
{ address = "192.168.1.2"; prefixLength = 24; }
];
firewall = {
allowedTCPPortRanges = [ { from = 6800; to = 7300; } ];
};
};
cephConfigOsd0 = generateCephConfig { daemonConfig = {
osd = {
enable = true;
daemons = [ "0" ];
};
}; };

networkOsd1 = {
dhcpcd.enable = false;
interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
{ address = "192.168.1.3"; prefixLength = 24; }
];
firewall = {
allowedTCPPortRanges = [ { from = 6800; to = 7300; } ];
};
};
cephConfigOsd1 = generateCephConfig { daemonConfig = {
osd = {
enable = true;
daemons = [ "1" ];
};
}; };

networkOsd2 = {
dhcpcd.enable = false;
interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
{ address = "192.168.1.4"; prefixLength = 24; }
];
firewall = {
allowedTCPPortRanges = [ { from = 6800; to = 7300; } ];
};
};
cephConfigOsd2 = generateCephConfig { daemonConfig = {
osd = {
enable = true;
daemons = [ "2" ];
};
}; };
in {
name = "basic-multi-node-ceph-cluster";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ lejonet ];
};

nodes = {
monA = generateHost { pkgs = pkgs; cephConfig = cephConfigMonA; networkConfig = networkMonA; };
osd0 = generateHost { pkgs = pkgs; cephConfig = cephConfigOsd0; networkConfig = networkOsd0; };
osd1 = generateHost { pkgs = pkgs; cephConfig = cephConfigOsd1; networkConfig = networkOsd1; };
osd2 = generateHost { pkgs = pkgs; cephConfig = cephConfigOsd2; networkConfig = networkOsd2; };
};

testScript = { ... }: ''
startAll;
$monA->waitForUnit("network.target");
$osd0->waitForUnit("network.target");
$osd1->waitForUnit("network.target");
$osd2->waitForUnit("network.target");
# Create the ceph-related directories
$monA->mustSucceed(
"mkdir -p /var/lib/ceph/mgr/ceph-a",
"mkdir -p /var/lib/ceph/mon/ceph-a",
"chown ceph:ceph -R /var/lib/ceph/",
"mkdir -p /etc/ceph",
"chown ceph:ceph -R /etc/ceph"
);
$osd0->mustSucceed(
"mkdir -p /var/lib/ceph/osd/ceph-0",
"chown ceph:ceph -R /var/lib/ceph/",
"mkdir -p /etc/ceph",
"chown ceph:ceph -R /etc/ceph"
);
$osd1->mustSucceed(
"mkdir -p /var/lib/ceph/osd/ceph-1",
"chown ceph:ceph -R /var/lib/ceph/",
"mkdir -p /etc/ceph",
"chown ceph:ceph -R /etc/ceph"
);
$osd2->mustSucceed(
"mkdir -p /var/lib/ceph/osd/ceph-2",
"chown ceph:ceph -R /var/lib/ceph/",
"mkdir -p /etc/ceph",
"chown ceph:ceph -R /etc/ceph"
);
# Bootstrap ceph-mon daemon
$monA->mustSucceed(
"sudo -u ceph ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'",
"sudo -u ceph ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'",
"sudo -u ceph ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring",
"monmaptool --create --add a 192.168.1.1 --fsid 066ae264-2a5d-4729-8001-6ad265f50b03 /tmp/monmap",
"sudo -u ceph ceph-mon --mkfs -i a --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring",
"sudo -u ceph touch /var/lib/ceph/mon/ceph-a/done",
"systemctl start ceph-mon-a"
);
$monA->waitForUnit("ceph-mon-a");
$monA->mustSucceed("ceph mon enable-msgr2");
# Can't check ceph status until a mon is up
$monA->succeed("ceph -s | grep 'mon: 1 daemons'");
# Start the ceph-mgr daemon, it has no deps and hardly any setup
$monA->mustSucceed(
"ceph auth get-or-create mgr.a mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-a/keyring",
"systemctl start ceph-mgr-a"
);
$monA->waitForUnit("ceph-mgr-a");
$monA->waitUntilSucceeds("ceph -s | grep 'quorum a'");
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: a(active,'");
# Send the admin keyring to the OSD machines
$osd0->mustSucceed("nc -vlkN 6800 > /etc/ceph/ceph.client.admin.keyring &");
$osd1->mustSucceed("nc -vlkN 6800 > /etc/ceph/ceph.client.admin.keyring &");
$osd2->mustSucceed("nc -vlkN 6800 > /etc/ceph/ceph.client.admin.keyring &");
$osd0->waitForOpenPort("6800");
$osd1->waitForOpenPort("6800");
$osd2->waitForOpenPort("6800");
$monA->mustSucceed(
"nc 192.168.1.2 6800 < /etc/ceph/ceph.client.admin.keyring",
"nc 192.168.1.3 6800 < /etc/ceph/ceph.client.admin.keyring",
"nc 192.168.1.4 6800 < /etc/ceph/ceph.client.admin.keyring"
);
# Bootstrap OSDs
$osd0->mustSucceed(
"mkfs.xfs /dev/vdb",
"mount /dev/vdb /var/lib/ceph/osd/ceph-0",
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-0/keyring --name osd.0 --add-key AQBCEJNa3s8nHRAANvdsr93KqzBznuIWm2gOGg==",
"echo '{\"cephx_secret\": \"AQBCEJNa3s8nHRAANvdsr93KqzBznuIWm2gOGg==\"}' | ceph osd new 55ba2294-3e24-478f-bee0-9dca4c231dd9 -i -",
);
$osd1->mustSucceed(
"mkfs.xfs /dev/vdb",
"mount /dev/vdb /var/lib/ceph/osd/ceph-1",
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-1/keyring --name osd.1 --add-key AQBEEJNac00kExAAXEgy943BGyOpVH1LLlHafQ==",
"echo '{\"cephx_secret\": \"AQBEEJNac00kExAAXEgy943BGyOpVH1LLlHafQ==\"}' | ceph osd new 5e97a838-85b6-43b0-8950-cb56d554d1e5 -i -"
);
$osd2->mustSucceed(
"mkfs.xfs /dev/vdb",
"mount /dev/vdb /var/lib/ceph/osd/ceph-2",
"ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-2/keyring --name osd.2 --add-key AQAdyhZeIaUlARAAGRoidDAmS6Vkp546UFEf5w==",
"echo '{\"cephx_secret\": \"AQAdyhZeIaUlARAAGRoidDAmS6Vkp546UFEf5w==\"}' | ceph osd new ea999274-13d0-4dd5-9af9-ad25a324f72f -i -"
);
# Initialize the OSDs with regular filestore
$osd0->mustSucceed(
"ceph-osd -i 0 --mkfs --osd-uuid 55ba2294-3e24-478f-bee0-9dca4c231dd9",
"chown -R ceph:ceph /var/lib/ceph/osd",
"systemctl start ceph-osd-0",
);
$osd1->mustSucceed(
"ceph-osd -i 1 --mkfs --osd-uuid 5e97a838-85b6-43b0-8950-cb56d554d1e5",
"chown -R ceph:ceph /var/lib/ceph/osd",
"systemctl start ceph-osd-1"
);
$osd2->mustSucceed(
"ceph-osd -i 2 --mkfs --osd-uuid ea999274-13d0-4dd5-9af9-ad25a324f72f",
"chown -R ceph:ceph /var/lib/ceph/osd",
"systemctl start ceph-osd-2"
);
$monA->waitUntilSucceeds("ceph osd stat | grep -e '3 osds: 3 up[^,]*, 3 in'");
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: a(active,'");
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
$monA->mustSucceed(
"ceph osd pool create multi-node-test 100 100",
"ceph osd pool ls | grep 'multi-node-test'",
"ceph osd pool rename multi-node-test multi-node-other-test",
"ceph osd pool ls | grep 'multi-node-other-test'"
);
$monA->waitUntilSucceeds(
"ceph -s | grep '1 pools, 100 pgs'",
"ceph osd pool set multi-node-other-test size 2"
);
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
$monA->waitUntilSucceeds("ceph -s | grep '100 active+clean'");
$monA->mustFail(
"ceph osd pool ls | grep 'multi-node-test'",
"ceph osd pool delete multi-node-other-test multi-node-other-test --yes-i-really-really-mean-it"
);
# As we disable the target in the config, we still want to test that it works as intended
$osd0->mustSucceed("systemctl stop ceph-osd-0");
$osd1->mustSucceed("systemctl stop ceph-osd-1");
$osd2->mustSucceed("systemctl stop ceph-osd-2");
$monA->mustSucceed(
"systemctl stop ceph-mgr-a",
"systemctl stop ceph-mon-a"
);
$monA->succeed("systemctl start ceph.target");
$monA->waitForUnit("ceph-mon-a");
$monA->waitForUnit("ceph-mgr-a");
$osd0->succeed("systemctl start ceph.target");
$osd0->waitForUnit("ceph-osd-0");
$osd1->succeed("systemctl start ceph.target");
$osd1->waitForUnit("ceph-osd-1");
$osd2->succeed("systemctl start ceph.target");
$osd2->waitForUnit("ceph-osd-2");
$monA->succeed("ceph -s | grep 'mon: 1 daemons'");
$monA->waitUntilSucceeds("ceph -s | grep 'quorum a'");
$monA->waitUntilSucceeds("ceph osd stat | grep -e '3 osds: 3 up[^,]*, 3 in'");
$monA->waitUntilSucceeds("ceph -s | grep 'mgr: a(active,'");
$monA->waitUntilSucceeds("ceph -s | grep 'HEALTH_OK'");
'';
})
Loading