Git Product home page Git Product logo

manjaro-tools's Introduction

manjaro-tools's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

manjaro-tools's Issues

[buildiso] deletes image-folders on re-run

Seems clears workdir on re-run. Within ManjaroISO we have the option to remove for example xfce-image and call buildiso once again. As root-image was already created it skips that step and continues with xfce-image. This feature is missing within manjaro-tools. Therefore we have to add an option to disable workdir clearing.

Packages need rebuild

After we release manjaro-tools-0.9.5.7, we should rebuild the livecd packages and the iso profiles.
Should I tag those packages 0.9.0-pre1 or something or as 0.8.11-2 ?

Fails while building packages

The error I get is

sudo: error in /etc/sudo.conf, line 0 while loading plugin `sudoers_policy'
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0
sudo: fatal error, unable to load plugins

[buildpkg|buildiso] add switch to clean pkg cache

As we added pkg cache to both binaries we should also add a switch to clean that cache up. Soon or later you might have a full harddrive cos of caching outdated packages in several places (pacman cache , etc).

Buildpkg deletes files in home folder

I have stopped filing bugs in general, but this one is serious in my opinion, so here goes:

$ buildpkg -p openrc-systemdcompat/ -a i686 -b unstable -cw
==> Cleaning up ...
removed '/mnt/datalinux2/manjaro-tools/cache/unstable/i686/openrc-core-0.13.8-2-i686.pkg.tar.xz.sig'
removed '/mnt/datalinux2/manjaro-tools/cache/unstable/i686/openrc-core-0.13.8-2-i686.pkg.tar.xz'
removed '/mnt/datalinux2/manjaro-tools/cache/unstable/i686/consolekit-0.9.2-2-i686.pkg.tar.xz'
removed '/mnt/datalinux2/manjaro-tools/cache/unstable/i686/polkit-consolekit-0.112-2-i686.pkg.tar.xz'
removed '/mnt/datalinux2/manjaro-tools/cache/unstable/i686/upower-pm-utils-0.9.23-4-i686.pkg.tar.xz'
removed '/home/aaditya/Documents/testdisk.log'
removed '/home/aaditya/derby.log'
removed '/home/aaditya/.VirtualBox/selectorwindow.log'
removed '/home/aaditya/.VirtualBox/VBoxSVC.log'
rm: cannot remove '/home/aaditya/.log': Is a directory
removed '/home/aaditya/weka.log'
removed '/home/aaditya/.wine/winetricks.log'
removed '/home/aaditya/Desktop/pacman.log'
removed '/home/aaditya/testdisk.log'
removed '/home/aaditya/.weechat/weechat.log'
removed '/home/aaditya/.inxi/inxi.log'
removed '/home/aaditya/.inxi/inxi.1.log'
removed '/home/aaditya/.inxi/inxi.2.log'
$ buildpkg -p openrc-systemdcompat/ -a i686 -b unstable -cw -q
[sudo] password for aaditya: 
==> manjaro-tools
  -> version: 0.9.6.1
  -> user_config: /home/aaditya/.config/manjaro-tools.conf
==> PROFILE:
  -> buildsets: default
  -> buildset_pkg: openrc-systemdcompat/
  -> is_buildset: false
==> OPTIONS:
  -> arch: i686
  -> branch: unstable
  -> chroots_pkg: /mnt/datalinux2/manjaro-tools/buildpkg
==> ARGS:
  -> clean_first: true
  -> wipe_clean: true
  -> namcap: false
  -> sign: false
  -> makepkg_args: 
==> PATHS:
  -> work_dir: /mnt/datalinux2/manjaro-tools/buildpkg/unstable/i686
  -> sets_dir_pkg: /etc/manjaro-tools/sets/pkg
  -> cache_dir_pkg: /mnt/datalinux2/manjaro-tools/cache/unstable/i686
  -> build_mirror: http://mirror.netzspielplatz.de/manjaro/packages/unstable
==> BLACKLIST:
  -> blacklist_trigger: eudev upower-pm-utils eudev-systemdcompat
  -> blacklist: libsystemd
==> PKG:
  -> base_packages: base-devel
==> BUILD QUEUE:
  -> openrc-systemdcompat/

[scripts] fancy reaction if you add wrong switches

For example if you use buildpkg -pv package like in the wiki you get weird output as -v is not supported anymore. The script should break when some is wrongly entered.

For example some issue with mkset:

[phil@manjaro pacman.d]$ mkset -c
/usr/bin/mkset: option requires an argument -- c
/usr/bin/mkset: option requires an argument -- c
/usr/bin/mkset: line 105: load_sets: command not found
==> Available sets: 

Unable to build packages

The error is as follows:

$ buildpkg -p openrc-base/
==> Updating chroot for [testing] (x86_64)...
/usr/bin/chroot-run: illegal option -- L
Usage: chroot-run [options] working-dir [run arguments]
A wrapper around chroot. Provides support for pacman.

 options:
    -C <file>     Location of a pacman config file
    -M <file>     Location of a makepkg config file
    -S <file>     Location of a pacman-mirrors config file
    -c <dir>      Set pacman cache
    -r <list>     Bind mountargs ro
    -w <list>     Bind mountargs rw
                  List format [src1:target1,...,srcN:targetN]
    -h            This message
==> ERROR: Aborting...

Some information:

$ buildpkg -q -p openrc-base/
==> manjaro-tools
  -> version: 0.9.5.6
  -> user_config: /home/aaditya/.config/manjaro-tools.conf
==> OPTIONS:
  -> arch: x86_64
  -> branch: testing
  -> chroots: /home/aaditya/DataLinux2/manjaro-tools
==> ARGS:
  -> mkchrootpkg_args: -r /home/aaditya/DataLinux2/manjaro-tools/testing/x86_64
  -> makepkg_args: 
  -> clean_first: false
  -> wipe_clean: false
  -> namcap: false
  -> sign: false
==> PATHS:
  -> chrootdir: /home/aaditya/DataLinux2/manjaro-tools/testing/x86_64
  -> profiledir: /home/aaditya/.config/sets
  -> pkg_dir: /home/aaditya/DataLinux2/manjaro-tools/pkgs/testing/x86_64
  -> pacman_conf: /usr/share/manjaro-tools/pacman-default.conf
  -> makepkg_conf: /usr/share/manjaro-tools/makepkg-x86_64.conf
  -> mirrors_conf: /usr/share/manjaro-tools/pacman-mirrors-testing.conf
==> BLACKLIST:
  -> blacklist_trigger: eudev lib32-eudev upower-pm-utils eudev-systemdcompat lib32-eudev-systemdcompat lib32-eudev upower-pm-utils eudev-systemdcompat lib32-eudev-systemdcompat lib32-eudev upower-pm-utils eudev-systemdcompat lib32-eudev-systemdcompat
  -> blacklist: libsystemd
==> SETS:
  -> profiles: default|lxdm-consolekit|openrc-artoo
  -> profile: openrc-base/
  -> is_profile: false
==> Build queue:
  -> openrc-base/

[openrc/systemd] mkiso fails to umount dev within desktop-image

Seems somehow when an openrc-host is used to build install-medias it somehow fails to umount the dev target:

(760/760) installing subversion [#######################################] 100%
Optional dependencies for subversion
    libgnome-keyring: for GNOME Keyring for auth credentials [installed]
     kdebase-runtime: for KWallet for auth credentials
     bash-completion: for svn bash completion
     python2: for some hook scripts [installed]
     java-environment: for Java support
     ruby: for some hook scripts
 umount: /srv/manjaroiso/xfce/x86_64/xfce-image/dev: target is busy
         (In some cases useful info about processes that
          use the device is found by lsof(8) or fuser(1).)

buildiso failure conflicting files (calamares)

any ideas?

manjaro-tools version: r541.7619636-1

:: Synchronizing package databases...
 core is up to date
 manjaro-livecd-repo is up to date
 kf5-apps is up to date
 extra is up to date
 community is up to date
 multilib is up to date
resolving dependencies...
looking for conflicting packages...

Packages (5) boost-1.57.0-2  yaml-cpp-0.5.1-1  calamares-0.17.7-1  manjaro-livecd-cli-installer-r42.9960b19-1  manjaro-livecd-systemd-r42.9960b19-1

Total Installed Size:  145.61 MiB

:: Proceed with installation? [Y/n] 
(5/5) checking keys in keyring                                                                                    [####################################################################] 100%
(5/5) checking package integrity                                                                                  [####################################################################] 100%
(5/5) loading package files                                                                                       [####################################################################] 100%
(5/5) checking for file conflicts                                                                                 [####################################################################] 100%
error: failed to commit transaction (conflicting files)
calamares: /opt/buildiso/plasma5/kde5/x86_64/livecd-image/usr/lib64 exists in filesystem
Errors occurred, no packages were upgraded.
==> ERROR: Failed to install packages to new root
==> ERROR: Failed to install all packages
==> ERROR: Failed to retrieve one or more packages!
==> ERROR: Please check you Packages-Livecd file! Exiting.
[anex@manjaro kde5]$ 

[buildiso] generate log and shasum files for each build

Devtools have the option to create log files and also display what is going on to a terminal. We can use this code to create automatically log files for each build. After iso image creation we should automatically create shasum files.

[buildiso] ERROR: Please check your Packages-xfce file! Exiting.

(386/386) installing ttf-droid                     [######################] 100%
Updating font cache... done.
Generating locales...
Generation complete.
  -> Cleaning up what we can
==> ERROR: Please check your Packages-xfce file! Exiting.

Why Packages-xfce if it is Packages-Xfce ?!?

[systemd-profiles] live-session bootup hangs due network issue

Somehow we have an ntpd service issue. This service simply fails to start. Also it seems we have some other issue makeing the bootup hang. Might be mirror related or any other service trying to connect to the internet.

However, if you disable network it boots up as normal. Have to check if we have the same issue also with ManjaroISO.

[buildiso] generate log

Redirect build log to log if it is either not run in terminal, or copy terminal output to log file.

[buildpkg] create chroot for multilib

As of now if we create lib32 packages we have to recreate x86_64 chroot. Else we would have normal gcc and not gcc-multilib. I would rather create a chroot called multilib for that case.

[buildiso] set -w switch by default?

Currently, we need to use -w switch everytime, or we get this mkiso error message:

==> Making bootable image
==> ERROR: Image /build/manjaro-tools/iso/manjaro-xfce-0.9.0-x86_64.iso already exists.
==> ERROR: Aborting...

[mkchroot] revisit locale-gen

By default we have followed locale.conf

LANG=en_US.utf8
LC_COLLATE=C

Somehow we end up with:

LANG=C

This is wrong and needs another look. Also it might create lot of issues during live-session bootup.

Sets get created in root directory?

$ mkset -c i3
[sudo] password for aaditya: 
==> Creating [/i3.set] ...
  -> Adding i3-git
  -> Adding i3bar-icons
  -> Adding i3blocks

But it is not present in /etc/manjaro-tools/set, but rather in /i3.set

Did not stop at xfce image even though it failed to build correctly

In previous manjaroiso it would stop if some image was not built correctly, but in the new one it seems to go on..

error: failed to commit transaction (unexpected error)
Errors occurred, no packages were upgraded.
==> ERROR: Failed to install packages to new root
warning: database file for 'multilib' does not exist
warning: database file for 'infinality-bundle' does not exist
==> Done
==> Prepare pkgs-image
  -> mount root-image
  -> -mount xfce-image
Root      : /run/media/aaditya/DataLinux2/manjarobuild/xfce/i686/pkgs-image/
Conf File : pacman-i686.conf
DB Path   : /run/media/aaditya/DataLinux2/manjarobuild/xfce/i686/pkgs-image/var/lib/pacman/
Cache Dirs: /run/media/aaditya/DataLinux2/manjarobuild/xfce/i686/pkgs-image/opt/livecd/pkgs/  
Lock File : /run/media/aaditya/DataLinux2/manjarobuild/xfce/i686/pkgs-image/var/lib/pacman/db.lck
Log File  : /run/media/aaditya/DataLinux2/manjarobuild/xfce/i686/pkgs-image/var/log/pacman.log
GPG Dir   : /etc/pacman.d/gnupg/
Targets   : xorg-drivers  xf86-video-ati  xf86-video-intel  xf86-video-nouveau  ati-dri  intel-dri  nouveau-dri  bumblebee  primus  linux314-bbswitch  linux314-broadcom-wl  linux314-rt3562sta  linux314-r8168  virtualbox-guest-utils-openrc  linux314-virtualbox-guest-modules  libxaw  libxpm  libxvmc  pangox-compat  open-vm-tools
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 openrc-eudev is up to date
:: There are 34 members in group xorg-drivers:
:: Repository extra
   1) xf86-input-evdev  2) xf86-input-joystick  3) xf86-input-keyboard
   4) xf86-input-mouse  5) xf86-input-synaptics  6) xf86-input-vmmouse
   7) xf86-input-void  8) xf86-video-ark  9) xf86-video-ast  10) xf86-video-ati
   11) xf86-video-cirrus  12) xf86-video-dummy  13) xf86-video-fbdev
   14) xf86-video-geode  15) xf86-video-glint  16) xf86-video-i128
   17) xf86-video-intel  18) xf86-video-mach64  19) xf86-video-mga
   20) xf86-video-modesetting  21) xf86-video-neomagic  22) xf86-video-nouveau
   23) xf86-video-nv  24) xf86-video-openchrome  25) xf86-video-r128
   26) xf86-video-savage  27) xf86-video-siliconmotion  28) xf86-video-sis
   29) xf86-video-tdfx  30) xf86-video-trident  31) xf86-video-v4l
   32) xf86-video-vesa  33) xf86-video-vmware  34) xf86-video-voodoo

Output generated seems to be an ISO with half the normal size (probably due to xfce-image being missing in it)..

[buildiso] should error out when no profile was found

Example:

==> BUILD QUEUE:
/usr/bin/buildiso: line 82: cd: xfce-minimal: No such file or directory
 --> Profile: [xfce-minimal] ...
ls: cannot access Packages*: No such file or directory
cat: displaymanager: No such file or directory
cat: initsys: No such file or directory
  -> initsys: 
  -> displaymanager: 
  -> pacman_conf: /usr/share/manjaro-tools/pacman-multilib.conf
  -> work_dir: /opt/buildiso/xfce-minimal/x86_64
  -> iso_file: manjaro--0.9.0-dev-x86_64.iso
  -> start_openrc: cronie cupsd metalog dbus consolekit acpid
  -> start_openrc_live: bluetooth NetworkManager

artoo having issue with latest git pull

When you change something this much can you update the devel readme please?

build error?

[anex@manjaro kde5]$ buildiso -h
Usage: buildiso [options]
    -p <profile>       Set or profile [default: ]
    -a <arch>          Arch [default: x86_64]
    -b <branch>        Branch [default: unstable]
    -r <dir>           Chroots directory
                       [default: /opt/buildiso]
    -v                 Verbose iso compression
    -q                 Query settings and pretend build
    -c                 Disable clean work dir and target dir iso
    -A                 Disable auto configure services
    -B                 Build images only
    -G                 Generate iso only
                       Requires pre built images
    -P                 Disable clean pkgs cache
    -L                 Disable clean lng cache
    -h                 This help


[anex@manjaro kde5]$ sudo buildiso -vq -p kde5
/usr/bin/buildiso: line 154: cd: kde5: No such file or directory
==> manjaro-tools
  -> version: 0.9.6
  -> manjaro_tools_conf: /etc/manjaro-tools/manjaro-tools.conf
==> PROFILE:
  -> buildsets: default
  -> buildset_iso: kde5
  -> is_buildset: false
  -> initsys: systemd 
  -> displaymanager: sddm
==> OPTIONS:
  -> arch: x86_64
  -> branch: unstable
  -> chroots_iso: /opt/buildiso
==> ARGS:
  -> clean_first: true
  -> auto_svc_conf: true
  -> custom_pac_conf: 
==> PATHS:
  -> work_dir: /opt/buildiso/kde5/x86_64
  -> iso_dir: /var/cache/manjaro-tools/iso
  -> pacman_conf: pacman-multilib.conf
  -> pacman_mirrors: /usr/share/manjaro-tools/pacman-mirrors-unstable.conf
==> IMAGES SETTINGS:
  -> manjaro_kernel: linux318
  -> manjaro_version: 2015.01
  -> plymouth_theme: manjaro-elegant
  -> start_systemd: cronie org.cups.cupsd.service tlp tlp-sleep bluetooth NetworkManager ModemManager sddm
==> ISO SETTINGS:
  -> iso_label: MJRO090
  -> iso_version: 0.9.0-dev-0114
  -> manjaroiso: manjaroiso
  -> code_name: Bellatrix
  -> img_name: manjaro
  -> install_dir: manjaro
  -> iso_file: /var/cache/manjaro-tools/iso/manjaro-kde-0.9.0-dev-0114-x86_64.iso
  -> compression: xz
==> LIVECD:
  -> username: manjaro
  -> password: manjaro
  -> addgroups: video,audio,power,disk,storage,optical,network,lp,scanner
  -> hostname: manjaro
  -> start_systemd_live: bluez NetworkManager ModemManager
[anex@manjaro kde5]$ sudo buildiso -v -p kde5
/usr/bin/buildiso: line 154: cd: kde5: No such file or directory
==> Cleaning [/var/cache/manjaro-tools/xorg] ...
==> Cleaning [/var/cache/manjaro-tools/lng] ...
==> Prepare [Base installation] (root-image)
==> ERROR: pacman config file '-M' does not exist
==> ERROR: Invalid command name /usr/share/manjaro-tools/pacman-mirrors-unstable.conf
usage mkiso [options] command <command options>
 general options:
    -f                Force overwrite of working files/squashfs image/bootable image
    -p PACKAGE(S)     Additional package(s) to install, can be used multiple times
    -C <file>         Config file for pacman. Default -M
    -L <label>        Set a label for the disk
    -P <publisher>    Set a publisher for the disk
    -A <application>  Set an application name for the disk
    -a <arch>         Set an architecture for the disk (example: i686)
    -c <compressor>   Set SquashFS compression type: gzip, xz or lzo. Default xz
                      NOTES:
                            xz: needs Linux >= 2.6.35 - you can add '-x' for better compression
                            lzo:  needs Linux >= 2.6.36
    -D <install_dir>  Set an install_dir. All files will by located here on ISO (except for isolinux)
                      Default manjaro
                      NOTE: Max 8 characters, use only [a-z0-9]
    -i <image_folder> Set an image_folder for installing selected packages to.
                      Default root-image
    -d                Create default user directory /home/manjaro
    -v                Enable verbose output
    -M                Pass pacman-morrors.conf
    -h                This message
 commands:
   create <dir>
      create a base directory layout to work with
      includes all specified packages
   iso <dir> <image name>
      build an iso image from the working dir
==> ERROR: Please check you Packages file! Exiting.
[anex@manjaro kde5]$ 

[buildiso] make displaymanager settings more dynamic

The reason for this, lightdm autologin doesn't work if I provide a lightdm.conf in profile.

Problem here, I want to use the lxqt greeter, which needs greeter settings set.

the displaymanager file in profile could be expanded with a theme variable or we put it in manjaro-tools.conf.
Thats a special case for non gtk greeter, as lightdm defaults to gtk greeters.

Apart from that, lightdm needs VT7 on openrc which can be easily done in code.

Is lightdm the only DM which needs such specific stuff to fix autologin issues?

cant build iso manjaro-tools.conf isnt respected

[anex@manjaro kde5]$ sudo buildiso -vCq
/etc/manjaro-tools/manjaro-tools.conf: line 31: syntax error near unexpected token `)'
/etc/manjaro-tools/manjaro-tools.conf: line 31: `'eudev-systemdcompat' 'lib32-eudev-systemdcompat')'
==> manjaro-tools
  -> version: 0.9.5.7
  -> manjaro_tools_conf: /etc/manjaro-tools/manjaro-tools.conf
  -> iso_profile: kde5
  -> initsys: systemd 
==> OPTIONS:
  -> arch: x86_64
  -> branch: unstable
  -> work_dir: /home/anex/git/manjaro-tools-iso-profiles-KF5/kde5/kde5/x86_64
  -> target_dir: /home/anex/git/manjaro-tools-iso-profiles-KF5/kde5
==> ARGS:
  -> clean_first: true
  -> auto_svc_conf: true
  -> high_compression: true
  -> clean_cache_pkgs: true
  -> clean_cache_lng: true
  -> images_only: false
  -> iso_only: false
  -> custom_pac_conf: true
==> PATHS:
  -> cache_pkgs: /var/cache/manjaro-tools/pkgs
  -> cache_lng: /var/cache/manjaro-tools/lng
  -> pacman_conf: /home/anex/git/manjaro-tools-iso-profiles-KF5/kde5/pacman-multilib.conf
  -> pacman_mirrors: /usr/share/manjaro-tools/pacman-mirrors-unstable.conf
==> IMAGES SETTINGS:
  -> manjaro_kernel: linux317
  -> manjaro_version: 2015.01
  -> displaymanager: sddm
  -> plymouth_theme: manjaro-elegant
  -> start_systemd: cronie cupsd tlp tlp-sleep
==> ISO SETTINGS:
  -> iso_label: MJRO0090-dev-1222
  -> iso_version: 0.9.0-dev-1222
  -> manjaroiso: manjaroiso
  -> code_name: Bellatrix
  -> img_name: manjaro
  -> install_dir: manjaro
  -> iso_file: /home/anex/git/manjaro-tools-iso-profiles-KF5/kde5/manjaro-kde-0.9.0-dev-1222-x86_64.iso
==> LIVECD:
  -> username: manjaro
  -> password: manjaro
  -> addgroups: video,audio,power,disk,storage,optical,network,lp,scanner
  -> hostname: manjaro
  -> start_systemd_live: bluez NetworkManager ModemManager

[branch] install-media defaults to stable branch

Sure we use branches on creating our images, but is it wanted to default on stable rather than the branch we build our install-media on? We might call this after root-image creation:

cp "${PKGDATADIR}/pacman-mirrors-${branch}.conf" "${work_dir}/root-image/etc/pacman-mirrors.conf"

Otherwise we can add another switch if other options are wanted ...

Displaymanager settings on images

Should the Dm be configured on DE image or on livecd image?

I think calamares does this for the install, but what about thus and cli?

new mounting of aufs images leaves unmounted stuff

After a second try on xfce-minimal in this case, which failed first try due to netkit-bsd not in repos, the second run produces this:

==> Removing [/build/buildiso/xfce-minimal/x86_64] ...
rm: cannot remove '/build/buildiso/xfce-minimal/x86_64/xfce-image': Device or resource busy
rm: cannot remove '/build/buildiso/xfce-minimal/x86_64/root-image': Device or resource busy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.