I have used configure_make and other features of rules_foreign_cc for quite some time. This is a fantastic project. I have run into a simple but old C++ project that is giving me trouble. I suspect it's caused by the use of configure_in_place but that is just a wild guess. I spent a few hours tracing through the code but couldn't figure out a fix.
I am running bazel 3.2.0 on OSX High Sierra with the rules_foreign_cc master branch that has #403 merged. This PR enables running autoreconf via configure_make.
I could of course work around this issue by making a real Bazel project for this simple project. I am submitting this issue in the hopes that fixing a bug or correcting my user error will be an easy task for a rules_foreign_cc expert.
WORKSPACE
workspace(name = "foo")
http_archive(
name = "rules_foreign_cc",
strip_prefix = "rules_foreign_cc-master",
url = "https://github.com/bazelbuild/rules_foreign_cc/archive/master.zip",
)
load("#rules_foreign_cc//:workspace_definitions.bzl", "rules_foreign_cc_dependencies")
rules_foreign_cc_dependencies()
all_content = """filegroup(name = "all", srcs = glob(["**"]), visibility = ["//visibility:public"])"""
http_archive(
name = "md5",
build_file_content = all_content,
strip_prefix = "MD5-master",
url = "https://github.com/devguy-com/MD5/archive/master.zip"
)
BUILD
load("#rules_foreign_cc//tools/build_defs:configure.bzl", "configure_make")
configure_make(
name = "md5",
autoreconf = True,
configure_command = "configure",
configure_in_place = True,
lib_source = "#md5//:all",
make_commands = [
"make libmd5.a",
],
out_lib_dir = "",
static_libraries = ["libmd5.a"],
visibility = ["//visibility:public"],
)
Run Bazel
$ bazel build --sandbox_debug -s --verbose_failures --sandbox_debug md5
Build Output
The complete build output is available online thanks to BuildBuddy.
Pertinent snippets:
1.
export BUILD_LOG="bazel-out/darwin-fastbuild/bin/md5/logs/Configure.log
2.
ERROR: /Users/user/smart/mac/pe-compute/2019-11-30/BUILD:4:15: output
'md5/libmd5.a' was not created
$ cat bazel-out/darwin-fastbuild/bin/md5/logs/Configure.log
/private/var/tmp/_bazel_user/a146b90161b9da4530683d7f8b2053fd/sandbox/darwin-sandbox/12/execroot/exd_edge_compute/external/local_config_cc/wrapped_clang -D_FORTIFY_SOURCE=1 -fstack-protector -fcolor-diagnostics -Wall -Wthread-safety -Wself-assign -fno-omit-frame-pointer -O0 -DDEBUG -std=c++11 -isysroot __BAZEL_XCODE_SDKROOT__ -F__BAZEL_XCODE_SDKROOT__/System/Library/Frameworks -F__BAZEL_XCODE_DEVELOPER_DIR__/Platforms/MacOSX.platform/Developer/Library/Frameworks -mmacosx-version-min=10.12 -no-canonical-prefixes -Wno-builtin-macro-redefined -D__DATE__="redacted" -D__TIMESTAMP__="redacted" -D__TIME__="redacted" -c -o src/md5.o src/md5.cpp
ar cr libmd5.a src/md5.o
ranlib libmd5.a
find: /var/folders/3l/rrlrzd555yl84h_l_nytc4w00000gp/T/tmp.XRqtHHSM/md5: No
such file or directory
Root Cause
The output library libmd5.a is located at
/var/folders/3l/rrlrzd555yl84h_l_nytc4w00000gp/T/tmp.XRqtHHSM.
However, configure_make is looking in that directory's md5 subdirectory.
Using out_lib_dir=".." does not solve the problem. out_lib_dir must be set to an empty string because this particular project creates the library in the project's root directory.
$ ls -l /var/folders/3l/rrlrzd555yl84h_l_nytc4w00000gp/T/tmp.XRqtHHSM
lrwxr-xr-x 1 user staff 139 Jun 10 06:36 BUILD.bazel -> /private/var/tmp/_bazel_user/a146b90161b9da4530683d7f8b2053fd/sandbox/darwin-sandbox/1/execroot/exd_edge_compute/external/md5/BUILD.bazel
lrwxr-xr-x 1 user staff 135 Jun 10 06:36 LICENSE -> /private/var/tmp/_bazel_user/a146b90161b9da4530683d7f8b2053fd/sandbox/darwin-sandbox/1/execroot/exd_edge_compute/external/md5/LICENSE
-rw-r--r-- 1 user staff 2573 Jun 10 06:36 Makefile
lrwxr-xr-x 1 user staff 139 Jun 10 06:36 Makefile.in -> /private/var/tmp/_bazel_user/a146b90161b9da4530683d7f8b2053fd/sandbox/darwin-sandbox/1/execroot/exd_edge_compute/external/md5/Makefile.in
lrwxr-xr-x 1 user staff 134 Jun 10 06:36 README -> /private/var/tmp/_bazel_user/a146b90161b9da4530683d7f8b2053fd/sandbox/darwin-sandbox/1/execroot/exd_edge_compute/external/md5/README
lrwxr-xr-x 1 user staff 137 Jun 10 06:36 WORKSPACE -> /private/var/tmp/_bazel_user/a146b90161b9da4530683d7f8b2053fd/sandbox/darwin-sandbox/1/execroot/exd_edge_compute/external/md5/WORKSPACE
drwxr-xr-x 7 user staff 224 Jun 10 06:36 autom4te.cache
drwxr-xr-x 3 user staff 96 Jun 10 06:36 config
-rw-r--r-- 1 user staff 23872 Jun 10 06:36 config.log
-rwxr-xr-x 1 user staff 32037 Jun 10 06:36 config.status
-rwxr-xr-x 1 user staff 142714 Jun 10 06:36 configure
lrwxr-xr-x 1 user staff 140 Jun 10 06:36 configure.ac -> /private/var/tmp/_bazel_user/a146b90161b9da4530683d7f8b2053fd/sandbox/darwin-sandbox/1/execroot/exd_edge_compute/external/md5/configure.ac
-rw-r--r-- 1 user staff 12560 Jun 10 06:36 libmd5.a
lrwxr-xr-x 1 user staff 139 Jun 10 06:36 rfc1321.txt -> /private/var/tmp/_bazel_user/a146b90161b9da4530683d7f8b2053fd/sandbox/darwin-sandbox/1/execroot/exd_edge_compute/external/md5/rfc1321.txt
drwxr-xr-x 8 user staff 256 Jun 10 06:36 src
drwxr-xr-x 3 user staff 96 Jun 10 06:36 tests
Related
I am trying to connect to my LND node running on AWS (I know it is not the best case scenario for an LND node but this time I had no other way of doing it) from my local running Django Rest Api. The issue is that it cannot find the admin.macaroon file even though the file is in the mentioned directory. Below I am giving some more detailed information:
view.py
class GetInfo(APIView):
def get(self, request):
REST_HOST = "https://ec2-18-195-111-81.eu-central-1.compute.amazonaws.com"
MACAROON_PATH = "/home/ubuntu/.lnd/data/chain/bitcoin/mainnet/admin.macaroon"
# url = "https://ec2-18-195-111-81.eu-central-1.compute.amazonaws.com/v1/getinfo"
TLS_PATH = "/home/ubuntu/.lnd/tls.cert"
url = f"https//{REST_HOST}/v1/getinfo"
macaroon = codecs.encode(open(MACAROON_PATH, "rb").read(), "hex")
headers = {"Grpc-Metadata-macaroon": macaroon}
r = requests.get(url, headers=headers, verify=TLS_PATH)
return Response(json.loads(r.text))
The node is running with no problem on AWS. This is what I get when I run lncli getinfo:
$ lncli getinfo:
{
"version": "0.15.5-beta commit=v0.15.5-beta",
"commit_hash": "c0a09209782b1c62c3393fcea0844exxxxxxxxxx",
"identity_pubkey": "mykey",
"alias": "020d4da213770890e1c1",
"color": "#3399ff",
"num_pending_channels": 0,
"num_active_channels": 0,
"num_inactive_channels": 0,
"uris": [
....
and the permissions are as below:
$ ls -l
total 138404
-rwxrwxr-x 1 ubuntu ubuntu 293 Feb 6 09:38 admin.macaroon
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 5 14:48 bin
drwxr-xr-x 6 ubuntu ubuntu 4096 Jan 27 20:17 bitcoin-22.0
drwxrwxr-x 4 ubuntu ubuntu 4096 Feb 1 16:39 go
-rw-rw-r-- 1 ubuntu ubuntu 141702072 Mar 15 2022 go1.18.linux-amd64.tar.gz
drwxrwxr-x 72 ubuntu ubuntu 4096 Feb 1 16:36 lnd
-rw-rw-r-- 1 ubuntu ubuntu 0 Jan 27 20:13 screenlog.0
The error I get is [Errno 2] No such file or directory:'/home/ubuntu/.lnd/data/chain/bitcoin/mainnet/admin.macaroon'
I guess the problem should be how I need to access the node from my API, but I have no idea how to access an EC2 instance from an external api.
Thank you in advance
I'm trying to use qtsnmp library from this github. I compiled the library and generated the .so file under linux.
qtsnmp
I'm a newbie with qt, and I just pressed import library -> external library and selected the qtsnmp.so from the folder dialog.
Here is my generated .pro file:
#-------------------------------------------------
#
# Project created by QtCreator 2018-02-25T11:26:37
#
#-------------------------------------------------
QT += core
QT -= gui
TARGET = test
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
wrapper.cpp
HEADERS += \
wrapper.h
unix:!macx: LIBS += -L$$PWD/../lib/ -lqtsnmp
INCLUDEPATH += $$PWD/../
DEPENDPATH += $$PWD/../
this is my header file from class wrapper
using namespace QtSnmp;
#ifndef WRAPPER_H
#define WRAPPER_H
class wrapper
{
public:
wrapper();
};
#endif // WRAPPER_H
this is the error: /home/vitro/Downloads/QtSnmp-master/test/wrapper.h:1: error: 'QtSnmp' is not a namespace-name
using namespace QtSnmp;
^
Honestly I don't know what to do, someone would be so kind to help me figure out this issue? I'm supposed to add any extra lines to the .pro file?
these are the files I have in folder from that compiled github:
drwxr-xr-x 3 vitro users 4096 Feb 25 11:18 bin
drwxr-xr-x 2 vitro users 4096 Feb 25 11:59 build-test-Desktop-Debug
drwxr-xr-x 2 vitro users 4096 Feb 25 11:18 lib
-rw-r--r-- 1 vitro users 5055 Feb 25 11:24 Makefile
drwxr-xr-x 7 vitro users 4096 Feb 21 15:06 net-snmp
-rw-r--r-- 1 vitro users 68 Feb 21 15:51 QtSnmp.pro
-rw-r--r-- 1 vitro users 18419 Feb 21 16:07 QtSnmp.pro.user
-rw-r--r-- 1 vitro users 1311 Sep 11 2013 README.md
drwx------ 4 vitro users 4096 Feb 25 11:18 src
drwxr-xr-x 2 vitro users 4096 Feb 25 12:02 test
-rw-r--r-- 1 vitro users 327 Feb 25 11:28 test.cpp
I have trouble installing avbin on my raspberry pi3 with jessie.
The command doesn't work:
sudo apt-get install libavbin-dev libavbin0
It says that is unable to locate.
I have manually downloaded version 10 and 8 and neither one works.
Pythons shows that cannot find the library.
Any suggestions please?
This post didn't help me much
Python pyglet AVBin - How to install AVBin
Update:
My sys path:
sys.path ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-arm-linux-gnueabihf', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7']
and:
> usr/local/lib/python2.7/dist-packages/pyglet/media $ ls -l
total 180
-rw-r--r-- 1 root staff 19846 May 13 14:07 avbin.py
-rw-r--r-- 1 root staff 15458 May 13 14:07 avbin.pyc
-drwxr-sr-x 5 root staff 4096> May 13 14:07 drivers
-rw-r--r-- 1 root staff 46363 May 13 14:07 init.py
-rw-r--r-- 1 root staff 53881 May 13 14:07 init.pyc
-rw-r--r-- 1 root staff 6446 May 13 14:07 procedural.py
-rw-r--r-- 1 root staff 5762 May> 13 14:07 procedural.pyc
-rw-r--r-- 1 root staff 8107 May 13 14:07 riff.py
-rw-r--r-- 1 root staff 8331 May 13 14:07 riff.pyc
In /usr/lib I have:
libavbin.so
libavbin.so.7
libavbin.so.8
I want to create a shell script, that iterates through folders and deletes folders that match [versionnumber-n] where n > 0
the version number is in a file that's content is like:
MAVEN_VERSION=1.2.7.0-SNAPSHOT
Here's an example:
The file listing is like
drwxrwxr-x 4 jenkins jenkins 4096 Jul 29 10:54 ./
drwxrwxr-x 20 jenkins jenkins 4096 Jul 4 09:20 ../
drwxr-xr-x 2 jenkins jenkins 4096 Jul 23 12:35 1.2.6.0-SNAPSHOT/
drwxr-xr-x 2 jenkins jenkins 4096 Jul 28 23:13 1.2.7.0-SNAPSHOT/
-rw-rw-r-- 1 jenkins jenkins 403 Jul 29 10:11 maven-metadata-local.xml
-rw-r--r-- 1 jenkins jenkins 403 Jul 28 23:13 maven-metadata-mtx-snapshots.xml
-rw-r--r-- 1 jenkins jenkins 40 Jul 28 23:13 maven-metadata-mtx-snapshots.xml.sha1
-rw-r--r-- 1 jenkins jenkins 403 Jul 28 23:13 maven-metadata.xml
-rw-r--r-- 1 jenkins jenkins 32 Jul 28 23:13 maven-metadata.xml.md5
-rw-r--r-- 1 jenkins jenkins 40 Jul 28 23:13 maven-metadata.xml.sha1
-rw-r--r-- 1 jenkins jenkins 186 Jul 28 23:13 resolver-status.properties
Where I want the script to delete the folder 1.2.6.0-SNAPSHOT/ but not 1.2.7.0-SNAPSHOT/. If there where folders like 1.2.5.0-SNAPSHOT/ 1.2.4.0-SNAPSHOT/ them too.
What I have at this point:
.*(?!1.2.7.0)(-SNAPSHOT)
Which unfortunately matches both folders (in the example above)
edit: just hit submit too early ...
With Bash you can just use negation with extended pathname expansion.
shopt -s extglob
rm -fr /dir/1.2.!(7).0-SNAPSHOT
Dry run example:
$ ls -1
1.2.10.0-SNAPSHOT
1.2.5.0-SNAPSHOT
1.2.6.0-SNAPSHOT
1.2.7.0-SNAPSHOT
a
$ echo rm -fr 1.2.!(7).0-SNAPSHOT
rm -fr 1.2.10.0-SNAPSHOT 1.2.5.0-SNAPSHOT 1.2.6.0-SNAPSHOT
See Extended Pattern Matching and Filename Expansion.
How I did it in the end:
if [ -z "$MAVEN_VERSION_SERVER" ]
then
echo "\$MAVEN_VERSION_SERVER NOT set! \n exiting ..."
else
find /var/lib/jenkins/.m2/repository/de/db/mtxbes -mindepth 1 -type d -regex '.*SNAPSHOT' -not -name $MAVEN_VERSION_SERVER | xargs -d '\n' rm -fr
fi
(the $MAVEN_VERSION_SERVER gets set and read with groovy scripts before)
I'm on a shared linux server and I only have access to http://domain.com/~username/ which maps to ~/public_html.
I would like to use the Taffy framework for ColdFusion in this context. As far as I can tell, to use the framework you must have an Application.cfc that extends the Taffy framework component taffy.core.api.
https://github.com/atuttle/Taffy
https://github.com/atuttle/Taffy/wiki/Installing-Taffy
https://github.com/atuttle/Taffy/wiki/So-you-want-to:-Create-a-dead-simple-CRUD-API
The only directories I have access to are not sub-directories of the web root and therefore (as I understand it) not subsets of the ColdFusion path.
In my particular case I neither have access to CFADMIN nor are the server admins going to install a component I need to extend in a system-wide context where it is already on the path and accessible via global dot notation.
The instructions say you should unzip the taffy folder into your web root, and if you can't do that, you should make it a subfolder of your api. The former is not a possibility for me and when I do the latter I get "Could not find the ColdFusion Component or Interface taffy.core.api."
More Detail:
My api is at http://domain.com/~username/api/, so I unzipped /taffy to ~/public_html/api/. If I copy the Taffy example at taffy/examples/api to ~/public_html/api so that going to http://domain.com/~username/api/ should access the example, I get "Could not find the ColdFusion Component or Interface taffy.core.api" even if have taffy/core/api.cfc beneath that directory (~/public_html/api).
On this server I have successfully made cfc's that extend a cfc in another directory using <cfset THIS.mappings["/subdir"]= getDirectoryFromPath(getCurrentTemplatePath()) & "subdir/"> and <cfobject name="parentObj" component="subdir.parent">.
I have also successfully made an Application.cfc that extends a cfc in the same directory.
I just haven't successfully made an Application.cfc that can extend a cfc in another directory, even if it's a subdirectory.
I did try to use grep & related tools to strip every reference of "taffy.core" out of Taffy's source code so I could just dump all the taffy cfc's into my root directory along with Application.cfc so I could extend api.cfc, but I got different errors and didn't pursue that hacky solution any further.
<cfdump var=#expandPath('/mapping')# /> outputs /var/www/html/mapping.
uname#domain $>ls -la /var/www/html
drwxr-xr-x 3 root root 4096 Sep 16 00:34 .
drwxr-xr-x 7 root root 4096 May 28 2012 ..
lrwxrwxrwx 1 root root 19 Sep 16 00:34 cfide -> /var/www/html/CFIDE
drwxrwxr-x 10 apache root 4096 Sep 16 00:32 CFIDE
~/public_html/api/resources/successesCollection.cfc:
<cfcomponent extends="taffy.core.resource" taffy_uri="/successes">
<cffunction name="get" access="public" output="false">
<cfreturn representationOf('success').withStatus(200) />
</cffunction>
</cfcomponent>
~/public_html/api/Application.cfc:
<cfcomponent extends="taffy.core.api">
<!--- doesn't work
<cfset THIS.mappings["/taffy"]= getDirectoryFromPath(getCurrentTemplatePath()) & "taffy/">
<cfset THIS.mappings["/core"]= getDirectoryFromPath(getCurrentTemplatePath()) & "taffy/core/">
--->
<cfscript>
this.name = hash(getCurrentTemplatePath());
// do your onApplicationStart stuff here
function applicationStartEvent(){}
// do your onRequestStart stuff here
function requestStartEvent(){}
// this function is called after the request has been parsed and all request details are known
function onTaffyRequest(verb, cfc, requestArguments, mimeExt){
// this would be a good place for you to check API key validity and other non-resource-specific validation
return true;
}
// called when taffy is initializing or when a reload is requested
function configureTaffy(){
setDebugKey("debug");
setReloadKey("reload");
setReloadPassword("true");
// Usage of this function is entirely optional. You may omit it if you want to use the default representation class.
// Change this to a custom class to change the default for the entire API instead of overriding for every individual response.
setDefaultRepresentationClass("taffy.core.genericRepresentation");
}
</cfscript>
</cfcomponent>
Output of http://domain.com/~uname/api/index.cfm/successes/: Could not find the ColdFusion Component or Interface taffy.core.api.
Adding this to my Application.cfc doesn't fix the issue:
<cfcomponent extends="taffy.core.api">
<cfscript>
this.name = hash(getCurrentTemplatePath());
this.mappings = StructNew();
this.mappings['/taffy'] =
expandPath('./taffy');
In addition, adding the following to ~/public_html/api/Application.cfc doesn't fix the issue either:
<cfset this.mappings["/taffy"] =
expandPath(getDirectoryFromPath(getCurrentTemplatePath()) & "taffy")>
Check out the following sequence of commands and let me know if I've overlooked something. I'm still left with "Could not find the ColdFusion Component or Interface taffy.core.api" upon browsing to "http://domain/~uname/api".
[uname#domain ~]$ cd ~/public_html
[uname#domain ~/public_html]$ rm -rf api
[uname#domain ~/public_html/api]$ wget -O taffy.zip https://github.com/atuttle/Taffy/zipball/master
[uname#domain ~/public_html/api]$ unzip taffy.zip
[uname#domain ~/public_html/api]$ mv atuttle-Taffy-35df54e/ taffy
[uname#domain ~/public_html/api]$ mv taffy/examples/api .
[uname#domain ~/public_html/api]$ mv taffy api/
[uname#domain ~/public_html/api]$ tree -d ~/public_html/api/
~/public_html/api/
|-- resources
`-- taffy
|-- bonus
|-- core
|-- examples
| |-- ParentApplication
| | |-- config
| | |-- mixin
... etc
[uname#domain ~/public_html/api]$ ls -la ~/public_html/api/
total 8
drwxr-xr-x 4 uname ugroup 1024 Dec 9 11:00 .
drwxr-xr-x 10 uname web 1024 Dec 9 10:57 ..
-rw-r--r-- 1 uname ugroup 1188 Dec 9 11:00 Application.cfc
-rw-r--r-- 1 uname ugroup 172 Sep 20 13:04 .htaccess
-rw-r--r-- 1 uname ugroup 218 Sep 20 13:04 index.cfm
drwxr-xr-x 2 uname ugroup 1024 Sep 20 13:04 resources
drwxr-xr-x 8 uname ugroup 1024 Sep 20 13:04 taffy
[uname#domain ~/public_html/api]$ ls -la ~/public_html/api/taffy/
total 15
drwxr-xr-x 8 uname ugroup 1024 Sep 20 13:04 .
drwxr-xr-x 4 uname ugroup 1024 Dec 9 11:00 ..
drwxr-xr-x 2 uname ugroup 96 Sep 20 13:04 bonus
-rw-r--r-- 1 uname ugroup 4096 Sep 20 13:04 build.xml
drwxr-xr-x 2 uname ugroup 1024 Sep 20 13:04 core
drwxr-xr-x 15 uname ugroup 1024 Dec 9 10:57 examples
-rw-r--r-- 1 uname ugroup 99 Sep 20 13:04 .gitignore
drwxr-xr-x 2 uname ugroup 96 Sep 20 13:04 lib
-rw-r--r-- 1 uname ugroup 1356 Sep 20 13:04 LICENSE.TXT
-rw-r--r-- 1 uname ugroup 2490 Sep 20 13:04 ReadMe.md
drwxr-xr-x 3 uname ugroup 96 Sep 20 13:04 snippets
drwxr-xr-x 5 uname ugroup 1024 Sep 20 13:04 tests
[uname#domain ~/public_html/api]$ ls -la ~/public_html/api/taffy/core/
total 72
drwxr-xr-x 2 uname ugroup 1024 Sep 20 13:04 .
drwxr-xr-x 8 uname ugroup 1024 Sep 20 13:04 ..
-rw-r--r-- 1 uname ugroup 42382 Sep 20 13:04 api.cfc
-rw-r--r-- 1 uname ugroup 4574 Sep 20 13:04 baseRepresentation.cfc
-rw-r--r-- 1 uname ugroup 2572 Sep 20 13:04 dashboard.cfm
-rw-r--r-- 1 uname ugroup 1756 Sep 20 13:04 dashboard.css
-rw-r--r-- 1 uname ugroup 4538 Sep 20 13:04 docs.cfm
-rw-r--r-- 1 uname ugroup 3030 Sep 20 13:04 factory.cfc
-rw-r--r-- 1 uname ugroup 179 Sep 20 13:04 genericRepresentation.cfc
-rw-r--r-- 1 uname ugroup 3516 Sep 20 13:04 mocker.cfm
-rw-r--r-- 1 uname ugroup 389 Sep 20 13:04 nativeJsonRepresentation.cfc
-rw-r--r-- 1 uname ugroup 3765 Sep 20 13:04 resource.cfc
You do have a couple of options.
Mapping (per-application or otherwise)
As Taffy is a development framework, your sysadmin/host may be willing to install it in a central location for all developers to make use of. They could put the Taffy folder in the web root, or create a server-level mapping to wherever the folder may be.
Relative Path
It should be possible to run Taffy from a relative path. It sounds like this is the approach you're trying to take, but you may not have the files in the right locations.
In order to use relative paths, you need a directory structure that resembles:
~uname/api/
~uname/api/taffy/core/api.cfc <- Framework contents
~uname/api/taffy/core/factory.cfc
~uname/api/taffy/core/dashboard.cfm
~uname/api/taffy/core/...
~uname/api/taffy/...
~uname/api/Application.cfc <- your api code
~uname/api/index.cfm
~uname/api/resources <- where you put your resource CFC's
It sounds like you're missing the "taffy" folder and either put the CFC's directly in your api folder or put the "core" folder in your api folder.
The "taffy" folder is required. Think of the dot-notation path you're putting in your Application.cfc's extends attribute as a filesystem path. Since it's taffy.core.api then your filesystem needs to contain taffy/core/api.cfc.
Have you tried using a relative path proxy, as Ben Nadel explains here: http://www.bennadel.com/blog/2115-Extending-The-Application-cfc-ColdFusion-Framework-Component-With-A-Relative-Path-Proxy.htm
The idea is that your application.cfc would extend a local proxy (rootProxy.cfc) that resides in the same directory. That proxy then cfincludes the cfc you are interested in. Since cfinclude takes a relative path, you needn't worry about global dot notation or mappings.