Giter Site home page Giter Site logo

vaeth / portage-bashrc-mv Goto Github PK

View Code? Open in Web Editor NEW
30.0 7.0 9.0 150 KB

Provide support for /etc/portage/bashrc.d and /etc/portage/package.cflags for the portage package manager (Gentoo Linux)

Home Page: http://www.mathematik.uni-wuerzburg.de/~vaeth/gentoo/index.html#portage-bashrc

Shell 100.00%
gentoo portage cflags patches hacks initscript

portage-bashrc-mv's Introduction

portage-bashrc-mv

(C) Martin Väth The license of this project is the GNU Public License GPL-2. SPDX-License-Identifier: GPL-2.0-only

The portage-bashrc-mv project is meant to be used with the gentoo portage system and serves two purposes.

  1. It provides support for an /etc/portage/bashrc.d directory in which you can define functions which are executed during emerge phases.
  2. It provides the following functionality in /etc/portage/bashrc.d
    • Support for an /etc/portage/package.cflags file (or directory) in which you can easily execute tasks or modify variables like CFLAGS on a per-package basis. This is similar to using /etc/portage/env but has a more convenient syntax for e.g. modifying CFLAGS. There is also a special flag filtering for non-GNU compilers (mainly clang). Moreover, pgo (profile-guided optimization) is supported.
    • Support for removing undesired .la files before installation
    • Support for removing undesired locales before installation
    • Support for CCACHE_* variables.
    • Output of time information and title bar if app-portage/portage-utilsand app-shells/runtitle (the latter from the mv overlay) are installed.

See bashrc.d/README for more details.

For installation, just copy bashrc and bashrc.d into /etc/portage. There is also an ebuild in the mv repository (available by app-select/eselect-repository or app-portage/layman).

portage-bashrc-mv's People

Contributors

alessandro-barbieri avatar automorphism88 avatar blackteahamburger avatar jannik2099 avatar jiblime avatar peter-levine avatar telans avatar vaeth avatar

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

portage-bashrc-mv's Issues

Sandboxed PGO raise access-deny

Step to reproduce:

  • layman -a mv
  • echo 'app-portage/eix PGO=true' >> /etc/portage/package.cflags
  • emerge --oneshot app-portage/eix

Crash after several error, at the end of the source configuration, when it tries to mkdir /var/cache/pgo. After mkdir it manually, it will fail to mkdir /var/cache/pgo/app-portage:eix-0.29.3.

Adding support for `RUSTFLAGS`

This ticket is meant more to see if the maintainer is willing for the list of FLAGS variables to be expanded more so than a request for the maintainer himself to implement said expansion.

Basically, I would like to at least try and implement support for RUSTFLAGS (which was not present the last time I checked, though I could be mistaken) at a slightly later date once I have ample free time to pour into the effort. However, I would first like to know if the addition would be accepted (assuming the code quality is up to snuff and all) before going about doing it.

Have a nice day!

Adding `NOFILTER` environment variables for `GNU` and `NONGNU`

Even though I've set all of the NOFILTER environment variables listed in the bashrc.d README to 1, both in make.conf and in the command line, -fno-plt and -fno-semantic-interposition still get filtered out when using Clang; the only workaround is to comment out the relevant section of 10-flag.sh. I'm using version 21.1 of the package. Due to one of the things mentioned in my other ticket, my laptop will be effectively unavailable for a few days, but I should be able to look into this further myself as soon as it is done.

So, after rereading the README again, I realised that there is no way to disable FLAG_FILTER_NONGNU and feel a bit silly now 😅. So yeah, this is a feature request now. Also, the two flags mentioned above work just fine with Clang 16, though my testing has admittedly been limited due to not noticing this behaviour literally until an hour ago, so I'm not sure why they're still in the list at this point.


As an aside, would you be opposed to there being a catch-all NOFILTER environment variable with which to disable any and all automatic flag filtering? I can't imagine that I'm the only person using gentooLTO who only uses package.cflags merely as a convenient way to add or remove flags per package without having any idea what else this project does, including automatic flag filtering, so this would be a nice addition if accepted. For reference, gentooLTO has this project as one of its dependences, as the maintainer uses package.cflags to filter out problematic flags per package as issues are reported (though hasn't been very active recently, leading me to uninstalling the package providing the overrides and simply doing that stuff myself locally).


Have a nice day!

flag.sh: "-fstack-check" always added when using clang

FlagReplaceAllFlags '-fstack-check*' '-fstack-check'

i guess this is meant to replace flags like -fstack-check=all with just -fstack-check for clang compatibility but it's unconditionally enabling stack checking for me (i don't want it)

you can test it by doing CC=clang CFLAGS=-O2 emerge -1 portage-bashrc-mv and looking at the flags it prints

category/package /-flag1/-flag2 in package.cflags does the same thing where it always adds -flag2 (i expected it would add -flag2 only if -flag1 was present)

using portage-bashrc-mv-19.1 and bash-4.4_p23-r1

How to disable Polly flags

In my make.conf, I've set my *FLAGS to include "-mllvm -polly", which is causing a package to break.

I'm trying to add "media-libs/openal +mllvm +polly" to /etc/portage/package.cflags/polly, but the flags remain active. What am I doing wrong here?

x11-misc/polybar build fails: Permission denied in /home/ccache

Using lto-overlay. While trying to build polybar got few errors like this:

 * ACCESS DENIED:  mkstemp64:    /home/ccache/tmp/tmp.cpp_stdout.XXXXXX
 * ACCESS DENIED:  symlink:      /home/ccache/4/5/stats.lock
ccache: error: Failed to create temporary file for /home/ccache/tmp/tmp.cpp_stdout.XXXXXX: Permission denied

Followed by this:

F: mkstemp64
S: deny
P: /home/ccache/tmp/tmp.cpp_stdout.XXXXXX
A: /home/ccache/tmp/tmp.cpp_stdout.XXXXXX
R: /home/ccache/tmp/tmp.cpp_stdout.XXXXXX
C: /usr/bin/ccache /usr/bin/x86_64-pc-linux-gnu-g++ -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/lib64/libffi/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/uuid -I/usr/include/libpng16 -I/var/tmp/portage/x11-misc/polybar-3.4.3/work/polybar-3.4.3/include -I/var/tmp/portage/x11-misc/polybar-3.4.3/work/polybar-3.4.3_build/generated-sources -I/var/tmp/portage/x11-misc/polybar-3.4.3/work/polybar-3.4.3/lib/concurrentqueue/include -I/var/tmp/portage/x11-misc/polybar-3.4.3/work/polybar-3.4.3/lib/xpp/include -march=native -O3 -fno-semantic-interposition -fipa-pta -flto=3 -fno-plt -fgraphite-identity -floop-nest-optimize -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -Wall -Wextra -Wpedantic -pthread -std=c++14 -o CMakeFiles/poly.dir/adapters/alsa/mixer.cpp.o -c /var/tmp/portage/x11-misc/polybar-3.4.3/work/polybar-3.4.3/src/adapters/alsa/mixer.cpp 

All other builds are just fine.

# ll /home/ccache/
total 28
drwxrwsr-x 14 root    portage   147 янв 21 16:46 0
drwxrwsr-x 11 root    portage   120 янв 21 16:46 1
drwxrwsr-x  9 root    portage   102 янв 21 16:46 2
drwxrwsr-x 15 root    portage   156 янв 21 16:46 3
drwxrwsr-x 16 root    portage   165 янв 21 16:46 4
drwxrwsr-x 15 root    portage   156 янв 21 16:46 5
drwxrwsr-x 12 root    portage   129 янв 21 16:46 6
drwxrwsr-x 16 root    portage   165 янв 21 16:46 7
drwxrwsr-x 16 root    portage   165 янв 22 21:43 8
drwxrwsr-x 16 root    portage   165 янв 21 16:46 9
drwxrwsr-x 13 root    portage   138 янв 29 16:28 a
drwxrwsr-x  3 portage portage    25 мая 23  2020 app-office
drwxrwsr-x 14 root    portage   147 янв 21 16:46 b
drwxrwsr-x 12 root    portage   129 янв 21 16:46 c
-rw-rw-r--  1 root    portage   312 мая 22  2020 ccache.conf
drwxrwsr-x 12 root    portage   129 янв 21 16:46 d
drwxrwsr-x  4 portage portage    39 окт 25 17:27 dev-qt
drwxrwsr-x 14 root    portage   147 янв 21 16:46 e
drwxrwsr-x 16 root    portage   165 янв 21 16:46 f
drwxrwsr-x  2 root    portage     6 янв 21 16:46 tmp
drwxrwsr-x  3 portage portage    22 мая 23  2020 www-client

F*FLAGS

Thank you for adding handling of F*FLAGS, however it doesn't seem to be having the intended effect:

 * Package:    sci-libs/scipy-1.1.0
 * Repository: gentoo
 * Maintainer: [email protected]
 * USE:        abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_python2_7 python_targets_python3_6 userland_GNU
 * FEATURES:   network-sandbox preserve-libs sandbox userpriv usersandbox
 * /etc/portage/package.cflags/myhacks.conf -> sci-libs/scipy: F*FLAGS-="${GRAPHITE}" F*FLAGS-=-fgraphite-identity
 * /etc/portage/package.cflags/ltoworkarounds.conf -> sci-libs/scipy: *FLAGS-=-flto*
 * FEATURES='assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr'
 * CFLAGS='-march=native -pipe -O3 -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -fuse-linker-plugin -falign-functions=24 -Wl,-O1 -Wl,--as-needed'
 * CXXFLAGS='-march=native -pipe -O3 -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -fuse-linker-plugin -falign-functions=24 -Wl,-O1 -Wl,--as-needed'
 * FFLAGS='-march=native -pipe -O3 -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -fuse-linker-plugin -falign-functions=24 -Wl,-O1 -Wl,--as-needed'
 * FCFLAGS='-march=native -pipe -O3 -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -fuse-linker-plugin -falign-functions=24 -Wl,-O1 -Wl,--as-needed'
 * F77FLAGS='-march=native -pipe -O3 -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -fuse-linker-plugin -falign-functions=24 -Wl,-O1 -Wl,--as-needed'
 * LDFLAGS='-Wl,-O1 -Wl,--as-needed'
 * MAKEOPTS='-j36 -l36'
 * gcc (Gentoo 9.2.0-r2 p3) 9.2.0
 * Linux BMO 5.0.17-gentoo #5 SMP Thu Jun 27 09:42:27 PDT 2019 x86_64 Intel(R) Core(TM) i9-7980XE CPU @ 2.60GHz GenuineIntel GNU/Linux

as you can see my FFLAGS, etc are unaffected. but the directive sci-libs/scipy *FLAGS-="${GRAPHITE}" is respected. I suspect portage is assigning CFLAGS to FFLAGS at the last minute.

LDFLAGS always deduplicated

In continuation of the -mllvm flag, the release did not fix the problem, since for some reason only LDFLAGS was deduplicated, I did a little debugging of the function that adds these arguments without duplicates, the results look like this

FlagAddNodupArgPar: LDFLAGS

FlagAddNodupArgPar: LDFLAGS
FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version 
FlagAddNodupArgPar: -march=native

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native 
FlagAddNodupArgPar: -mtune=native

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native 
FlagAddNodupArgPar: -O3

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 
FlagAddNodupArgPar: -pipe

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe 
FlagAddNodupArgPar: -fstack-protector-strong

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong 
FlagAddNodupArgPar: -flto=thin

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong 
FlagAddNodupArgPar: -ffat-lto-objects

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects 
FlagAddNodupArgPar: -fopenmp

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp 
FlagAddNodupArgPar: -fplugin=LLVMPolly.so

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm 
FlagAddNodupArgPar: -Xclang=-polly

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly 
FlagAddNodupArgPar: -Xclang=-polly-parallel

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel 
FlagAddNodupArgPar: -Xclang=-polly-vectorizer=stripmine

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine 
FlagAddNodupArgPar: -Xclang=-polly-enable-mse

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse 
FlagAddNodupArgPar: -Xclang=-polly-run-dce

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce 
FlagAddNodupArgPar: -pthread

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread 
FlagAddNodupArgPar: -fPIC

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC 
FlagAddNodupArgPar: -g

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -march=native

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -mtune=native

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -O3

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -pipe

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -fstack-protector-strong

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -flto=thin

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -ffat-lto-objects

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -fopenmp

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -fplugin=LLVMPolly.so

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-polly

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-polly-parallel

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-polly-vectorizer=stripmine

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-polly-enable-mse

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-polly-run-dce

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -pthread

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -fPIC

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -g

FlagAddNodupArgPar: CFLAGS
FlagAddNodupArgPar: CXXFLAGS
FlagAddNodupArgPar: CPPFLAGS
FlagAddNodupArgPar() {
	local argpar addres addf addvar dups
	dups=$1
	shift
	argpar=$1
	shift
	addvar=$1
	shift
	eval addres=\$$addvar
+	echo "FlagAddNodupArgPar: $addvar"
	FlagCombineParameters "$argpar" addf "$@"
	eval "set -- a $addf"
	shift
	for addf
	do
+		echo "FlagAddNodupArgPar: $addres $dups"
+		echo "FlagAddNodupArgPar: $addf"
		case " $addres $dups " in
		*[[:space:]]"$addf"[[:space:]]*)
			continue;;
		esac
		addres=$addres${addres:+\ }$addf
	done
	eval $addvar=\$addres
}

If I understand correctly, then case " $addres $dups in" ignores the list of flags that can be left as is
It's also worth clarifying that this only happens with LDFLAGS, other flags remain correct, they pass this function, but do not cause a traversal via for

Compilation time estimation doesn't seem to work as intended in 20-title.sh

The displayed compilation is the first compilation time.

qlop now shows both unmerge and merge history. Option -m shows only merges.
$sec is set using the first merge. Any reasons you don't use qlop -aCMm to get an average?

Or you could use something like this, to get average over the last 5 merges.
qlop -tCMm chromium | tail -n 5 | awk '{ total += $4; count++ } END { if (count!= 0) print int(total/count) }'

filter GCC illegal flags

Request fo a feature that is the converse of the NONGNU feature that filters flags illegal for GCC
namely:
-mllvm
-polly*
-fsanitize=cfi
-fsanitize=safe-stack
-flto=thin

Unclear how to reach `post_pkg_postinst()` equality via `BashrcdPhase postinst`?

Hi. I'm looking to automatically git commit all /etc changes, meaning I need to execute as late as possible, probably after pkg_postinst().

Many packages, like https://github.com/gentoo-mirror/gentoo/blob/stable/app-text/docbook-xml-dtd/docbook-xml-dtd-4.5-r2.ebuild#L52 use pkg_postinst phase to run various configuration file change actions.

BashrcdPhase postinst seems to execute its callback before package. Is this intentional?

I seem to have 2 options:

A) BashrcdPhase postinst set a "reached postinst" flag variable, BashrcdPhase clean to execute git operations

B) Just use Portage native post_pkg_postinst() function

Is option A possible even?

{+, -}'{VARIABLE}' has no effect in /etc/portage/package.cflags

/etc/portage/make.conf:

source /etc/portage/make.conf.lto.defines

CFLAGS="-march=native -Ofast ${GRAPHITE} ${DEVIRTLTO} ${IPAPTA} ${SEMINTERPOS} ${FLTO} -fuse-linker-plugin -pipe"
CXXFLAGS="${CFLAGS}"
LDFLAGS="${LDFLAGS} -fuse-ld=mold"
...

/etc/portage/make.conf.lto.defines:

FLTO="-flto=${NTHREADS}"
GRAPHITE="-fgraphite-identity -floop-nest-optimize"
IPAPTA="-fipa-pta"
SEMINTERPOS="-fno-semantic-interposition"
DEVIRTLTO="-fdevirtualize-at-ltrans"

/etc/portage/package.cflags/plasma-systemmonitor.conf:

kde-plasma/plasma-systemmonitor +'${DEVIRTLTO}'

After emerging kde-plasma/plasma-systemmonitor with above:

emerge --info kde-plasma/plasma-systemmonitor:

kde-plasma/plasma-systemmonitor-5.27.10::gentoo was built with the following:
USE="-debug"
CFLAGS="-march=native -Ofast -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -fuse-ld=mold"
CXXFLAGS="-march=native -Ofast -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -fuse-ld=mold"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -fuse-ld=mold -march=native -Ofast -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe"

-fdevirtualize-at-ltrans is not removed. +"${DEVIRTLTO}" also has no effect.

Things get even weirder when there are multiple variables within quotes. After emerging with kde-plasma/plasma-systemmonitor +'${DEVIRTLTO} ${GRAPHITE} ${IPAPTA}', emerge --info kde-plasma/plasma-systemmonitor:

kde-plasma/plasma-systemmonitor-5.27.10::gentoo was built with the following:
USE="-debug"
CFLAGS="-march=native -Ofast -fdevirtualize-at-ltrans -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -fuse-ld=mold"
CXXFLAGS="-march=native -Ofast -fdevirtualize-at-ltrans -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -fuse-ld=mold"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -fuse-ld=mold -march=native -Ofast -fdevirtualize-at-ltrans -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe"

Only the first option (in this case is -fdevirtualize-at-ltrans) is not removed.

However, *FLAGS-= works well. With kde-plasma/plasma-systemmonitor *FLAGS-='${DEVIRTLTO} ${GRAPHITE} ${IPAPTA}', emerge --info kde-plasma/plasma-systemmonitor:

kde-plasma/plasma-systemmonitor-5.27.10::gentoo was built with the following:
USE="-debug"
CFLAGS="-march=native -Ofast -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -fuse-ld=mold"
CXXFLAGS="-march=native -Ofast -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -fuse-ld=mold"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -fuse-ld=mold -march=native -Ofast -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe"

I think this should be a bug.

--param and other CFLAGS with arguments cause problems

FlagNodupAdd() in bashrc.d/40-flag.sh also removes "--param" flag as duplicate if there is more than one "--param" since it's actual parameter is delimited by a space.

Example:
... --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=4096 ...
becomes:
... --param l1-cache-size=32 l1-cache-line-size=64 l2-cache-size=4096 ...

There are a few more flags which should be allowed duplicate like the "-include" and "-imacros" (list by no means complete), although it is unlikely someone will specify these.

Revise `FLAG_FILTER_NONGNU`.

Some flags that are there are actually supported by recent versions of clang, but are still filtered out. In particular I'm talking about -ffat-lto-objects and -fcf-protection*.

add PGO to llvm/clang

There are some packages that I've managed to build with PGO using clang that with gcc the profiling phase happens to be incorrect and result in worse performance. An example is webkit-gtk where I've managed to gain about 12 percent more performance in some javascript benchmark like jetstream 2 through clang pgo, where gcc simply gets confused because of the change of directories of the source files that happen during build.
The problem is that you have to run 'llvm-profdata merge" after the data is collected from the instrumented runs, so it also would need to disable sandboxing.

ccache unnecessary

portage hasn't cleared ccache env for a long time (possibly forever?) and this breaks the CCACHE_BASEDIR hack, which must be run in src_configure.

*FLAGS-=-flto* in /etc/portage/package.cflags causes emerge --info not to output LDFLAGS

/etc/portage/make.conf:

source /etc/portage/make.conf.lto.defines

CFLAGS="-march=native -Ofast ${GRAPHITE} ${DEVIRTLTO} ${IPAPTA} ${SEMINTERPOS} ${FLTO} -fuse-linker-plugin -pipe"
CXXFLAGS="${CFLAGS}"
LDFLAGS="${LDFLAGS} -fuse-ld=mold"
...

/etc/portage/make.conf.lto.defines:

FLTO="-flto=${NTHREADS}"
GRAPHITE="-fgraphite-identity -floop-nest-optimize"
IPAPTA="-fipa-pta"
SEMINTERPOS="-fno-semantic-interposition"
DEVIRTLTO="-fdevirtualize-at-ltrans"

/etc/portage/package.cflags/plasma-systemmonitor.conf:

kde-plasma/plasma-systemmonitor *FLAGS-=-flto*

After emerging kde-plasma/plasma-systemmonitor with above:

emerge --info kde-plasma/plasma-systemmonitor:

kde-plasma/plasma-systemmonitor-5.27.10::gentoo was built with the following:
USE="-debug"
CFLAGS="-march=native -Ofast -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -fuse-ld=mold"
CXXFLAGS="-march=native -Ofast -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -fuse-ld=mold"

LDFLAGS is not output. However, without /etc/portage/package.cflags/plasma-systemmonitor.conf, emerge --info kde-plasma/plasma-systemmonitor:

kde-plasma/plasma-systemmonitor-5.27.10::gentoo was built with the following:
USE="-debug"
CFLAGS="-march=native -Ofast -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -fuse-ld=mold"
CXXFLAGS="-march=native -Ofast -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe -Wl,-O1 -Wl,--as-needed -fuse-ld=mold"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -fuse-ld=mold -march=native -Ofast -fgraphite-identity -floop-nest-optimize -fdevirtualize-at-ltrans -fipa-pta -fno-semantic-interposition -flto=auto -fuse-linker-plugin -pipe"

Is this irrelevant or a bug?

[package.cflags]: Is it posible somhow to set flags depend on USE-flag(s) enabled/disabled?

This should be useful for lto-overlay users when LTO disabled for whole package but problem caused by USE-flag.
Example (https://github.com/InBetweenNames/gentooLTO/blob/ce11e856b832274930d7fca10895f0533a14e891/sys-config/ltoize/files/package.cflags/ltoworkarounds.conf):

app-editors/vim *FLAGS+=-ffat-lto-objects # required for perl USE flag
net-misc/dhcp *FLAGS-=-flto* # Cannot be built with LTO by default, but can if "server" USE is disabled
...

Maybe something like app-editors/vim[perl] *FLAGS+=-ffat-lto-objects or app-editors/vim FOR_USE=perl *FLAGS+=-ffat-lto-objects ?

filter PYTHON_FLAGS

I found that some packages uses the following flags:
PYTHON_CFLAGS
PYTHON_CXXFLAGS
PYTHON_CPPFLAGS
PYTHON_LDFLAGS

causing various problems (they remember flags which I didn't set explicitly ...)
These variables can be stripped too?

Can you add documentation for bugs/cases that necessitate "LDADD/CADD"?

Hello, thank you for the amazing tool. I've been extending its usage for myself and am going through the documentation to better understand it.

Regarding NOCADD:

NOCADD:
For -flto, it is necessary to add CFLAGS and CXXFLAGS to LDFLAGS.
In rare circumstances, this can cause trouble, so we allow optionally
to deactivate this feature.

Can you link bug reports or name packages that cause this to be a necessity? I would like to understand the problem more, and see if it is still a requirement.

I have tested NOCADD=1 emerge -1 dev-qt/qtsql and while it was configured with LDFLAGS='-Wl,-O1 -Wl,--as-needed', emerge --info dev-qt/qtsql actually does not show LDFLAGS having been set for the process (although this remedied itself with the LDFLAGS having been appended to *FLAGS).

Is this an -flto specific problem?

As an aside, does the ReplaceFlags function only apply to user set *FLAGS, or is there a way to make it replace all flags during compilation, similar to how the flag-o-matic.eclass works?

portage-bashrc-mv deduplicates flags

portage-bashrc-mv deduplicates flags when trying to use

-Xclang -mllvm -polly -Xclang -mllvm -other-flag

in LDFLAGS mllvm is deduplicated and only

-Xclang -mllvm -polly -Xclang -other-flag

remains, which is erroneous

LDFLAGS appended to CFLAGS causing build failures

I'm experiencing some strange build failures with musl libc, which @anarchpenguin and I have narrowed down to LDFLAGS becoming appended to CFLAGS in builds. Should this really happen, and is there an option to prevent it, if so, for circumstances where it should not ..

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.