HOWTO Compile GCC (gcc v4.8, gcc v4.9) on Fedora 20

To build gcc on Fedora 20, you’ll need some extra packages beyond the base install.

tl;dr

sudo yum install -y {gmp,mpfr,libmpc}{,-devel} libstdc++{,-static,-devel}.{i686,x86_64} libstdc++-docs glibc{,-devel,-headers}.{x86_64,i686}
./configure --prefix=$sandbox/gcc
make all install

Note that on RHEL6, there is a subtle difference: the glibc-headers.{x86_64.i686} packages cannot coexist.

sudo yum install -y {gmp,mpfr,libmpc}{,-devel} libstdc++{,-static,-devel}.{i686,x86_64} libstdc++-docs glibc{,-devel}.{x86_64,i686} glibc-headers

Details

Multiple Precision Numbers

sudo yum install -y {gmp,mpfr,libmpc}{,-devel}

Failure Modes

Absent the 32-bit development packages GCC will not compile. The error that you’ll see will indicate that /usr/include/gnu/stub-32.h is missing. Many of the diagnostic sites on the interwebs will indicate that this is because you are attempting to build a too-recent GCC on a too-ancient Linux distro. This is not the case here: GCC v4.8.4 and Fedora 20 (both are well within their service windows).

The issue has to do with the 32-bit development packages not being installed by default. Install the packages and the problem is remediated.

Indication

...more gcc configure output...
make[5]: Entering directory `/build/gcc/gcc-4.8.4/x86_64-unknown-linux-gnu/32/libgcc'
# If this is the top-level multilib, build all the other
# multilibs.
DEFINES='' HEADERS='../../.././libgcc/config/i386/value-unwind.h' \
        ../../.././libgcc/mkheader.sh > tmp-libgcc_tm.h
/bin/sh ../../.././libgcc/../move-if-change tmp-libgcc_tm.h libgcc_tm.h
echo timestamp > libgcc_tm.stamp
/build/gcc/gcc-4.8.4/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/build/gcc/gcc-4.8.4/host-x86_64-unknown-linux-gnu/gcc/ -B/build/gcc/x86_64-unknown-linux-gnu/bin/ -B/build/gcc/x86_64-unknown-linux-gnu/lib/ -isystem /build/gcc/x86_64-unknown-linux-gnu/include -isystem /build/gcc/x86_64-unknown-linux-gnu/sys-include    -g -O2 -m32 -O2  -g -O2 -DIN_GCC   -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fpic -mlong-double-80 -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector   -fpic -mlong-double-80 -I. -I. -I../../../host-x86_64-unknown-linux-gnu/gcc -I../../.././libgcc -I../../.././libgcc/. -I../../.././libgcc/../gcc -I../../.././libgcc/../include -I../../.././libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS  -DUSE_TLS -o _muldi3.o -MT _muldi3.o -MD -MP -MF _muldi3.dep -DL_muldi3 -c ../../.././libgcc/libgcc2.c -fvisibility=hidden -DHIDE_EXPORTS
In file included from /usr/include/features.h:388:0,
                 from /usr/include/stdio.h:27,
                 from ../../.././libgcc/../gcc/tsystem.h:87,
                 from ../../.././libgcc/libgcc2.c:27:
/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory # include <gnu/stubs-32.h> ^
compilation terminated.
make[5]: *** [_muldi3.o] Error 1
make[5]: Leaving directory `/build/gcc/gcc-4.8.4/x86_64-unknown-linux-gnu/32/libgcc'
make[4]: *** [multi-do] Error 1
make[4]: Leaving directory `/build/gcc/gcc-4.8.4/x86_64-unknown-linux-gnu/libgcc'
make[3]: *** [all-multi] Error 2
make[3]: Leaving directory `/build/gcc/gcc-4.8.4/x86_64-unknown-linux-gnu/libgcc'
make[2]: *** [all-stage1-target-libgcc] Error 2
make[2]: Leaving directory `/build/gcc/gcc-4.8.4'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/build/gcc/gcc-4.8.4'
make: *** [all] Error 2

Correct Advice

$ sudo yum 'install' '-y' 'libstdc++.x86_64' 'libstdc++.i686' 'libstdc++-devel.x86_64' 'libstdc++-devel.i686' 'libstdc++-docs.x86_64' 'libstdc++-docs.i686' 'libstdc++-docs' 'glibc-devel.i686' 'glibc-devel.x86_64' 'glibc-headers.i686' 'glibc-headers.x86_64'

Witness /usr/include/gnu/stubs-32.h installed:

$ find /usr/include/gnu -type f -print | xargs ls -l
-rw-r--r--. 1 root root 1263 Sep 26 09:06 /usr/include/gnu/libc-version.h
-rw-r--r--. 1 root root 4844 Sep 26 09:06 /usr/include/gnu/lib-names.h
-rw-r--r--. 1 root root 537 Sep 26 09:08 /usr/include/gnu/stubs-32.h
-rw-r--r--. 1 root root  604 Sep 26 09:08 /usr/include/gnu/stubs-64.h
-rw-r--r--. 1 root root  384 Sep 26 09:06 /usr/include/gnu/stubs.h

Incorrect Advice

Commentariat of /usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory in Stack Overdlow; 2012-01-20.

<quote>Header file gnu/stubs-32.h is under /usr/include/i386-linux-gnu/ but the install script tries to find it in /usr/include/, try this quick fix to complete the installation:

sudo ln -s /usr/include/i386-linux-gnu/gnu/stubs-32.h /usr/include/gnu/stubs-32.h

</quote>

Especially, there is no need to make that symbolic link on your own.

Also misleading is:

Trouble compiling modern GCC with antique glibc; In Server Fault; 2013-07-17.

dbd-modules | mod_log_dbd, mod_vhost_dbd (Apache CustomLog to an SQL database)

dbd-modules – writing Apache logs straight into a (SQL) database

Mentions

Configuration

The CustomLog format must be a comma-separated list of mod_log_config “%” directives.

CustomLog   logs/access.sql     "%h, %l, %u, %{%Y-%m-%d %H:%M:%S}t, %r, %>s, %b"
DBDLog      logs/access.sql    "INSERT INTO log_table (Host, Rname, User, Tstmp, Request, Status, Bytes) VALUES (%s, %s, %s, %s, %s, %s, %s)"

Via: backfill

Broken

DBDLog can use the name of a statement as its SQL parameter. This name must have been previously defined by a DBDPrepareSQL directive. For example:

LogFormat      "%V, %r"  dbFormat
DBDPrepareSQL  "INSERT INTO log_table (Server, Url) VALUES (%s, %s)"  dbLog
...
CustomLog logs/access.sql  dbFormat
DBDLog    logs/access.sql  dbLog  UseNULLs

This functionality seems to never have been implemented. What the code actually does in this instance is to take the label (dbLog) and attempt to prepare that as a SQL statement on-site. Of course that fails as it isn’t proper SQL. Your /var/log/httpd/error_log will show a critical failure as follows:

[Wed Jan 21 09:38:43.830818 2015] [dbd:error] [pid 11383] (20014)Internal error: AH00632: failed to prepare SQL statements: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'dbLog' at line 1
[Wed Jan 21 09:38:43.831314 2015] [dbd:error] [pid 11383] (20014)Internal error: AH00633: failed to initialise
[Wed Jan 21 09:38:43.831378 2015] [dbd:crit] [pid 11383] (20014)Internal error: AH00636: child init failed!

The workaround is to state the SQL statemen at the site of the DBDLog rather than to try to reference a statement that was prepared by mod_dbd in its DBDPrepareSQL statement.
The code that does not implement this functionality is around line 399 of mod_log_dbd.c.

/* process DBDLog directive */
static const char *setAccessLogQuery(cmd_parms *cmd, void *mconfig, 
                                     const char *name, const char *sql, const char *usenull)
{   
    static long label_num = 0;
    log_dbd_file *file = apr_pcalloc(cmd->pool, sizeof(log_dbd_file));
    log_dbd_svr_conf *conf = 
        (log_dbd_svr_conf *) ap_get_module_config(cmd->server->module_config,
                                              &log_dbd_module);
    if (!dbd_prepare_fn || !dbd_acquire_fn)
        return "mod_dbd must be enabled to use mod_log_dbd";

    if (!log_set_writer_init_fn || !log_set_writer_fn) 
        return "mod_log_config must be enabled to use mod_log_dbd";

    file->stmt_sql = sql;
    file->stmt_label = apr_pstrcat(cmd->pool, "log_dbd_", 
                                   apr_ltoa(cmd->pool, ++label_num), NULL);
    dbd_prepare_fn(cmd->server, sql, file->stmt_label);

    ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, cmd->server,
        "mod_log_dbd: Prepared query (stmt: %s) from: %s",
        file->stmt_label, sql);

    apr_hash_set(conf->files, name, APR_HASH_KEY_STRING, file);

    if (usenull) {
        if(!apr_strnatcasecmp(usenull, "UseNULLs"))
            file->useNull = 1;
        else
             return apr_pstrcat(cmd->pool, "mod_log_dbd: unrecognized option: ",
                                    usenull, NULL);
    }
    return NULL;
}

Building

Instructions

General Recipe

apxs -c mod_vhost_dbd.c
apxs -i mod_vhost_dbd.la
apxs -c mod_log_dbd.c
apxs -i mod_log_dbd.la

Actual Recipe

Executed on Fedora 16, with Apache v2.2.

$ cd /views
$ mkdir com.googlecode.dbd-modules
$ cd com.googlecode.dbd-modules
$ unzip ./dbd-modules-1.0.6.zip 
Archive:  /dbd-modules-1.0.6.zip
  inflating: Makefile.win            
  inflating: mod_log_dbd.c           
  inflating: mod_log_dbd.rc          
  inflating: mod_vhost_dbd.c         
  inflating: mod_vhost_dbd.rc        
  inflating: COPYING                 
  inflating: NOTICE                  
$ apxs -c mod_log_dbd.c
/usr/lib/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -pthread -I/usr/include/httpd  -I/usr/include/apr-1   -I/usr/include/apr-1   -c -o mod_log_dbd.lo mod_log_dbd.c && touch mod_log_dbd.slo
mod_log_dbd.c: In function 'esq':
mod_log_dbd.c:99:5: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
mod_log_dbd.c: In function 'write_log':
mod_log_dbd.c:338:29: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
mod_log_dbd.c:256:23: warning: variable 'rconf' set but not used [-Wunused-but-set-variable]
mod_log_dbd.c: In function 'log_writer_init':
mod_log_dbd.c:367:19: warning: unused variable 'file' [-Wunused-variable]
/usr/lib/apr-1/build/libtool --silent --mode=link gcc -o mod_log_dbd.la  -rpath /usr/lib/httpd/modules -module -avoid-version    mod_log_dbd.lo
$ sudo apxs -i mod_log_dbd.la
/usr/lib/httpd/build/instdso.sh SH_LIBTOOL='/usr/lib/apr-1/build/libtool' mod_log_dbd.la /usr/lib/httpd/modules
/usr/lib/apr-1/build/libtool --mode=install cp mod_log_dbd.la /usr/lib/httpd/modules/
libtool: install: cp .libs/mod_log_dbd.so /usr/lib/httpd/modules/mod_log_dbd.so
libtool: install: cp .libs/mod_log_dbd.lai /usr/lib/httpd/modules/mod_log_dbd.la
libtool: install: cp .libs/mod_log_dbd.a /usr/lib/httpd/modules/mod_log_dbd.a
libtool: install: chmod 644 /usr/lib/httpd/modules/mod_log_dbd.a
libtool: install: ranlib /usr/lib/httpd/modules/mod_log_dbd.a
libtool: finish: PATH="/sbin:/bin:/usr/sbin:/usr/bin:/sbin" ldconfig -n /usr/lib/httpd/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/lib/httpd/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib/httpd/modules/mod_log_dbd.so

Self-Hosted OpenID

Background

Folklore

Promotions

Availabilities

Apache HTTPD culture

WordPress Culture

General Identity Services

WSO2 Identity Server

  • Apache 2.0 License; open source.
  • Available from RPM Fusion
    • Fedora 16
    • Fedora 18
    • … & onward.
Package Description
wso2-axis2 WSO2 modified Apache Axis2/C
wso2-axis2-devel WSO2′s version of Apache Axis2/C development files
wso2-axis2-http-server WSO2′s axis basic http server
wso2-axis2-modules Modules for the WSO2 modified Apache Axis2/C
wso2-rampart-devel WSO2′s version of Apache Rampart/C development files
wso2-sandesha2-devel WSO2′s version of Apache Sandesha2/C development files
wso2-savan-devel WSO2′s version of Apache Savan/C development files
wso2-wsf-cpp WSO2 Web Services Framework for C++
wso2-wsf-cpp-debuginfo Debug information for package wso2-wsf-cpp
wso2-wsf-cpp-devel WSO2 Web Services Framework for C++ development files
wso2-wsf-cpp-security WSO2 Security for Web Services Framework for C++
wso2-wsf-cpp-security-devel WSO2 Security for Web Services Framework for C++
mod_wso2-axis2 An Apache HTTPD module which adds axis2 support
wso2-rampart A security module for Apache Axis2/C
wso2-sandesha2 A C implementation of WS-ReliableMessaging specification
wso2-savan A C implementation of the WS-Eventing specification
wso2-wsclient A web service client

Closed

  • Google Profile URL; c.f. +WendellBaker, the original (gensymed)
    Terms of Use

    • [Google] reserves the right to reclaim custom URLs or remove them for any reason, and without notice.
    • Custom URLs are free for now, but [Google] may start charging a fee for them.

Practice

OpenID Delegation

<head>
...etc...
<link rel="openid.server=" href="http://openid.baker.org/">
<link rel="openid.delegate" href="http://note-to-self.baker.com/">
...etc...
</head>

Terms

  • RP (Relying Party)
  • OP (OpenID Provider)

Actualities


Source: some blog


Source: OpenID Connect

OpenID vs. Pseudo-Authentication using OAuth
Source: Jimi Wales’ Wiki

Logitech Harmony – Home Automation Hub & Remote Control

WATCHOUT – this is a Windows-only product.
You will be required to use Windows to reflash the firmware before you can use it.
It does not work with Linux, only Windows

followup


Logitech 915-000237 Harmony Ultimate Home Touch Screen Remote for 15 Home Entertainment and Automation Devices
Logitech 915-000237 Harmony Ultimate Home Touch Screen Remote for 15 Home Entertainment and Automation Devices; $350+SHT.

  • Limtied to 15 home entertainment devices and unlimited home automation devices.

Logitech 915-000238 Harmony Home Hub for Smartphone Control of 8 Home Entertainment and Automation Devices
Logitech 915-000238 Harmony Home Hub for Smartphone Control of 8 Home Entertainment and Automation Devices; $100+SHT.

  • Limited to 8 home entertainment devices and unlimited home automation devices
  • Harmony Home Hub is NOT compatible with any Harmony remotes at this time. Compatibility will be available in early 2015.

Danger

  • There are items branded Harmony which are not compatible with each other.

Questions

  • What’s a home entertainment device?
  • What’s a home automation device?
  • Is this one of those “control your home from Harmony’s Data Centers (in the cloud, in EU?)” sort of a thing?
    Or is this one of those “control your home via your own LAN” sort of at thing?

MyHarmony Portal, Harmony API

Maybe accessible to “developers” (the consuming public).

Harmony API

  • Harmony API
    • RESTful
    • OAuth 2.
  • Control with Harmony badge.

Via: backfill.

Number Of Martech Companies Doubles To 2,000 In 2015 | ChiefMartec, Martech, MarketingLand

Number Of Martech Companies Doubles To 2,000 In 2015; (ChiefMartec); In Marketing Land; 2015-01-12.
Teaser: Social media and content marketing are among the biggest categories for marketing technology companies, while influence marketing, performance & attribution emerge.

Infographic: The 2015 Marketing Technology Landscape; staff; In Marketing Land; 2015-01-12.
Teaser: The number of martech companies has doubled from 2014, rising to nearly 2,000 in 2015. See them all by category!

Mentions

… in rough order of appearance.

Performance & Attribution

Influencer Marketing

interactive-content-martech

Interactive Content

Marketing Stack

Conference

Web & Digital Marketing Convergence: Digital Marketing Workshop | W3C

Web & Digital Marketing Convergence; Digital Marketing Workshop, W3C, sponsored by Nielsen; Tampa FL; 2015-09-17 & 2015-09-18.

tl;dr → learning the industry

PresentationS

Papers

Referenced

Via: backfill.

Bibliography of the Web Transparency & Accountability Project (WebTAP)

Bibliography


Recent & Highlights

2014

  • Mathias Lecuyer, Guillaume Ducoffe, Francis Lan, Andrei Papancea, Theofilos Petsios, Riley Spahn, Augustin Chaintreau, Roxana Geambasu; XRay: Increasing the Web’s Transparency with Differential Correlation; In Proceedings of the USENIX Security Symposium; San Diego, CA; 2014-08. also arXiv:1407.2323, 2014-07-09, 18 pages.
    previously noted.
  • Marjan Falahrastegar, Hamed Haddadi, Steve Uhlig, Richard Mortier.
    The rise of panopticons: Examining region-specific third-party web tracking.
    In Traffic Monitoring and Analysis, pages 104-114. Springer, 2014. paywall.
    tl;dr there are (3rd party) trackers US, UK, AU, CN, EG, IR, SY
  • Thomas Vissers, Nick Nikiforakis, Nataliia Bielova, and Wouter Joosen.
    Crying wolf? on the price discrimination of online airline tickets.
    In HotPETS, 2014.
  • Abdelberi Chaabane, Yuan Ding, Ratan Dey, Mohamed Ali Kaafar, Keith Ross, et al.
    A closer look at third-party OSN applications: Are they leaking your personal information?
    In Passive and Active Measurement Conference, 2014.
  • Michael Carl Tschantz, Amit Datta, Anupam Datta, Jeannette M. Wing.
    A methodology for information flow experiments.
    Technical Report arXiv:1405.2376, 2014-05-10 (2014-05-13); 45 pages.
    tl;dr Information Flow Analysis (IFA), causal inference for Web Data Usage Detection (WDUD)
  • Xinyu Xing, Wei Meng, Dan Doozan, Nick Feamster, Wenke Lee, Alex C Snoeren.
    Exposing inconsistent web search results with Bobble.
    In Some Venue. 2014.
  • Paul Barford, Igor Canadi, Darja Krushevskaja, Qiang Ma, S Muthukrishnan.
    Adscape: Harvesting and analyzing online display ads.
    In Proceedings of the 23rd International Conference on the World Wide Web (WWW); 2014; pages 597-608; landing. arXiv:1407.0788.
    previously filled; tl;dr interest targeting, generally; retargeting for e-commerce

2013

Via: backfill

Spamness for Thunderbird (requires a folder rebuild)

Spamntess for Thunderbird: (sometimes) Does. Not. Work.  But if it did, it would be great!

Sees to work on some folders, but not on others.  Even with the folder rebuild. But, specifically, it isn’t working with inbox where  it is needed the most (because after inbox you have, by definition, refiled the mail so you pretty much know whether it’s spam or not).

thunderbird-24.5.0-1.fc19.x86_64

Recall that Thunderbird is consciously uncoupling from Mozilla (long live Thunderbird!).
c.f. Thunderbird Reorganizes at the 2014 Toronto Summit; In Their Blog; 2014-11-25.


HOWTO – Get (Apache) httpd to read from NFS filesystems under enforcing SElinux

setsebool -P httpd_use_nfs 1

Recall

  • If the -P option is given, all pending values are written to the policy file on disk. So they will be persistent across reboots.

Actualities

$ sudo getsebool httpd_use_nfs
httpd_use_nfs --> off
$ sudo setsebool -P httpd_use_nfs 1
...much time passes...
$ getsebool httpd_use_nfs
httpd_use_nfs --> on

References

HOWTO – Modify the commit message in a Subversion repository

svn propset -r NUMBER --revprop svn:log "new log message" SVNURL
svn propset -r NUMBER --revprop svn:log --file messagefile SVNURL

Precondition

  • Ensure that the repository has been configured to allow for revprop-specific changes.

Actualities

[as Subversion Administrator (whatever that means to you)]

$ cd .../subversion_repository_filesystem/hooks
$ mv pre-revprop-change.tmpl pre-revprop-change
$ chmod a+x pre-revprop-change

[as yourself]

$ svn propset -r 34 --revprop svn:log --file better-commit-message.log  svn+ssh://svn.local/vault/trunk
property 'svn:log' set on repository revision 34
$ svn log
------------------------------------------------------------------------
r34 | wbaker | 2015-01-02 13:01:44 -0800 (Fri, 02 Jan 2015) | 9 lines

...blah blah blah...

References

HOWTO – Create your own yum repository

Not that hard really … hardly worth a notice

Recipe

Sketch for populating the repository … (you get the idea)

$ sudo yum install -y createrepo
$ mkdir /someplace
$ cp *.rpm /someplace
$ cd /somplace
$ createrepo

It’s that last step of createrepo that creates the published index of the repository

Describe the repository … (you get the idea, Fedora 25 is as-yet fictitions)

$ cat /etc/yum.repos.d/areas-fedora.repo
[areas-fedora-16]
name = /areas/fedora, Fedora 25, all
baseurl = file:///areas/fedora/25/repo
enabled = 1
gpgcheck = 1
gpgkey = file:///areas/fedora/25/repo/pki
sslverify = 0
cost = 1

Promotions

References

Fedora Documentation [Fedora 21]

Red Hat Documentation [RHEL6]